Wrapper bundle
Wrappers encapsulate executable resources. Executing a wrapped resource will instead run the wrapper, which can coordinate the execution of the wrapped resource.
Release Notes:
2024-09-11 update input schemas
2024-08-21 BREAKING CHANGE remove deprecated timeout_sec from retry wrapper
2024-08-13 adust input schemas
2024-06-11 add configuration for handling missing resources
2024-04-19 allow configuring the project of child executions
2024-04-18 allow the notify and interactive wrappers to send emails to non Cloudomation users
2024-03-18 add run_on_state_change_flow_additional_inputs parameter for notify wrapper
2024-03-11 make status_setting_name configurable for notify wrapper
2024-02-09 remove deprecated is_archived flag
2024-02-06 extend notify wrapper with state change functionality
2023-12-04 change naming to Cloudomation Engine
2023-11-13 fix validate wrapper error when used without inputs
2023-08-29 fix linter errors
2023-08-03 consider only activity of notify_users in interactive wrapper
2023-07-04 fix "NoneType" is not a mapping
2023-06-15 add label to check wrapper inputs
2023-05-11.2 initial release
Download
Download the bundle using the Bundle Manager.
Included resources
cache
Execution wrapper for caching an output_value
Returns the output_value
of a previous execution.
usage:
this.using(
'cache',
max_age_minutes=60,
).connect(
'my-connector'
)
# returns the output_value of the last successful execution of
# "my-connector". if there is no successful execution of
# within the last 60 minutes, it will create a new connection
# and return its output_value
Input schema
Key | Type | Description | Default |
---|---|---|---|
child_execution_project | enum | Any of
The project of the executed resource. If the resource is in a bundle, it falls back to the Default project. Constant value:
The project of the wrapper. If the wrapper is in a bundle, it falls back to the project of resource. Constant value:
The name of the project. | |
max_age_minutes | integer | How old a child execution can be before considered stale. |
|
check
Execution wrapper for output_value checks
waits for a child execution and passes the outputs to a script to check for correctness
usage with a checker flow:
this.using(
'check',
checker_flow='my-checker-flow',
inputs={
'additional': 'inputs',
'to': 'checker',
},
).flow(
'child-execution'
)
usage with a checker script:
this.using(
'check',
checker_script=(
'''
import flow_api
def handler(system: flow_api.System, this: flow_api.Execution):
# TODO add your logic to check this.get('input_value')['data']
# additional inputs are available in this.get('input_value')
return this.success('check succeeded')
'''
),
inputs={
'additional': 'inputs',
'to': 'checker',
},
).flow(
'child-execution'
)
Input schema
Key | Type | Description | Default |
---|---|---|---|
checker_flow | string | A flow which is called with the output_value of the child to determine if the child was successful. Either | |
checker_script | string | A script which is called with the output_value of the child to determine if the child was successful. Either | |
child_execution_project | enum | Any of
The project of the executed resource. If the resource is in a bundle, it falls back to the Default project. Constant value:
The project of the wrapper. If the wrapper is in a bundle, it falls back to the project of resource. Constant value:
The name of the project. | |
inputs | object | Any additional inputs being passed to the child |
interactive
Execution wrapper for interactive error handling
observes a child execution and pauses when an error occurs
usage:
this.using(
'interactive',
interactive_limit_minutes: int = 30,
delete_retries: bool = True,
notify_users: list[str] = None,
context: object = None,
child_message_is_markdown: bool = True,
subject: str = '{{child_name}} failed{{#is_retry}} {{fail_count}} times{{/is_retry}}',
body: str = '''Execution [{{child_name}}]({{self_url}}/execution/{{child_id}}) ended with **{{child_status}}**
{{#parent_name}}
The parent process **{{parent_name}}** is blocked and waiting for confirmation on how to continue.
{{/parent_name}}
{{#is_email}}
Please choose how to proceed by following this link: [{{subject}}]({{self_url}}/execution/{{this_id}})
{{/is_email}}
{{#context}}
### Context
{{context}}
{{/context}}
{{#child_message}}
### Status message
{{child_message}}
{{/child_message}}
''',
).flow(
'child-execution'
)
Input schema
Key | Type | Description | Default | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
body | string | A template for the body of notifications sent to users. |
| ||||||||||||||||||||||||||||
child_execution_project | enum | Any of
The project of the executed resource. If the resource is in a bundle, it falls back to the Default project. Constant value:
The project of the wrapper. If the wrapper is in a bundle, it falls back to the project of resource. Constant value:
The name of the project. | |||||||||||||||||||||||||||||
child_message_is_markdown | boolean | If set, the status message of ended child executions is interpreted as markdown. |
| ||||||||||||||||||||||||||||
context | object | Any contextual JSON data which is attached to notifications. | |||||||||||||||||||||||||||||
delete_retries | boolean | If set, previous child executions are deleted when a new child execution is started. |
| ||||||||||||||||||||||||||||
fail_on_missing_reference | boolean | Whether the wrapper execution should fail if a resource referenced in the inputs is missing. | |||||||||||||||||||||||||||||
interactive_limit_minutes | integer | Cloudomation Engine users which have not been active within that time are considered inactive. |
| ||||||||||||||||||||||||||||
notify_users | enum | Any of
Notify all users which were active within
DEPRECATED - use "A list of Cloudomation users" instead Notify a single user.
DEPRECATED - use "A list of Cloudomation users" instead Notify a list of users. | |||||||||||||||||||||||||||||
subject | string | A template for the subject line of notifications sent to users. |
|
mock
Execution wrapper for mocking output_value
Returns the output_value of a previous execution.
modes
-
ENDED_SUCCESS
(default)looks for the last successful execution of the child and returns its output_value
-
ENDED_ERROR
looks for the last failed execution of the child and returns its output_value
-
LAST
looks for the last execution of the child and returns its output_value
-
STATIC
returns the output_value which is configured in the output_value parameter of the wrapper
-
FIXED
returns the output_value of the execution which is specified using the execution_id parameter of the wrapper
usage:
this.using(
'mock',
).connect(
'my-connector'
)
# returns the output_value of the last successful execution of "my-connector"
Input schema
Key | Type | Description | Default | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
child_execution_project | enum | Any of
The project of the executed resource. If the resource is in a bundle, it falls back to the Default project. Constant value:
The project of the wrapper. If the wrapper is in a bundle, it falls back to the project of resource. Constant value:
The name of the project. | |||||||||||||||||||||||||||||||||||||||||||||||||
ignore_in_productive_mode | boolean | When set and run in productive mode, the child will not be mocked but started normally. |
| ||||||||||||||||||||||||||||||||||||||||||||||||
mode | enum | Any of
|
notify
Execution wrapper for notifications
observes a child execution and generates notification on end
usage:
this.using(
'notify',
notify_on_success: bool = False,
notify_on_error: bool = True,
notify_on_state_change: bool = False,
child_message_is_markdown: bool = True,
to: list[str] = None,
context: object = None,
subject: str = '{{child_name}} {{child_status}}',
body: str = '''Execution [{{child_name}}]({{self_url}}/execution/{{child_id}}) ended with **{{child_status}}**
{{#context}}
### Context
{{context}}
{{/context}}
{{#child_message}}
### Status message
{{child_message}}
{{/child_message}}
''',
).flow(
'child-execution'
)
Input schema
Key | Type | Description | Default | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
body | string | A template for the body of notifications sent to users. |
| ||||||||||||||||||||||||||||
child_execution_project | enum | Any of
The project of the executed resource. If the resource is in a bundle, it falls back to the Default project. Constant value:
The project of the wrapper. If the wrapper is in a bundle, it falls back to the project of resource. Constant value:
The name of the project. | |||||||||||||||||||||||||||||
child_message_is_markdown | boolean | If set, the status message of ended child executions is interpreted as markdown. |
| ||||||||||||||||||||||||||||
fail_on_missing_reference | boolean | Whether the wrapper execution should fail if a resource referenced in the inputs is missing. | |||||||||||||||||||||||||||||
notify_on_error | boolean | If a notification should be generated when the child ends with |
| ||||||||||||||||||||||||||||
notify_on_state_change | boolean | If a notification should be generated when a specified attribute (e.g. status) of the current child execution is different to the previous execution of the child. | |||||||||||||||||||||||||||||
notify_on_success | boolean | If a notification should be generated when the child ends with | |||||||||||||||||||||||||||||
renotify_state_change_to_error_minutes | integer | How long the wrapper should wait, before sending another state change notification if an error persists. Set to 0 to disable. | |||||||||||||||||||||||||||||
run_on_state_change_flow_additional_inputs | object |
| |||||||||||||||||||||||||||||
run_on_state_change_flow_name | string | The name of a flow that is started in case of a state change. The output value of the child is passed to the flow as input value | |||||||||||||||||||||||||||||
state_change_consider_message | boolean | If a change in the child message indicates a state change. | |||||||||||||||||||||||||||||
state_change_consider_output_value | boolean | If a change in the child output value indicates a state change. | |||||||||||||||||||||||||||||
state_change_consider_output_value_key | string | If a change in a specific key in the child output value indicates a state change. Leave it as an empty string, to consider the whole output value. | |||||||||||||||||||||||||||||
state_change_consider_status | boolean | If a change in the child status indicates a state change. |
| ||||||||||||||||||||||||||||
status_setting_name | string | The name of the setting where the current and last status is stored. Defaults to "child_name-wrapper-notify-status-setting". | |||||||||||||||||||||||||||||
subject | string | A template for the subject line of notifications sent to users. |
| ||||||||||||||||||||||||||||
to | enum | Any of
DEPRECATED - use "A list of Cloudomation users" instead Notify a single user.
DEPRECATED - use "A list of Cloudomation users" instead Notify a list of users |
retry
Execution wrapper for retries
observes a child execution and restarts it if an error occurs
usage:
this.using(
'retry',
max_tries: int = 0,
delay_sec: int = 10,
delete_retries: bool = True,
).flow(
'child-execution'
)
todo:
- back-off
Input schema
Key | Type | Description | Default |
---|---|---|---|
child_execution_project | enum | Any of
The project of the executed resource. If the resource is in a bundle, it falls back to the Default project. Constant value:
The project of the wrapper. If the wrapper is in a bundle, it falls back to the project of resource. Constant value:
The name of the project. | |
delay_sec | integer | The number of seconds to wait in between retries. |
|
delete_retries | boolean | If set, previous child executions are deleted when a new child execution is started. |
|
max_tries | integer | The number of times to try starting the child before failing. |
|
rollback
Execution wrapper for rollbacks
starts a rollback flow in case of exceptions
usage:
this.using(
'rollback',
rollback_flow_name: str = 'my_rollback_flow',
).flow(
'child-execution'
)
Input schema
Key | Type | Description | Default |
---|---|---|---|
child_execution_project | enum | Any of
The project of the executed resource. If the resource is in a bundle, it falls back to the Default project. Constant value:
The project of the wrapper. If the wrapper is in a bundle, it falls back to the project of resource. Constant value:
The name of the project. | |
rollback_flow_name | string | The name of the flow that should be executed in case of a |
timeout
Execution wrapper for timeouts
Starts a child execution and waits for it to end within a timeout. If the timeout is exceeded, the child execution and all descendants are cancelled.
usage:
this.using(
'timeout',
seconds=30,
).flow(
'child-execution'
)
Input schema
Key | Type | Description | Default |
---|---|---|---|
child_execution_project | enum | Any of
The project of the executed resource. If the resource is in a bundle, it falls back to the Default project. Constant value:
The project of the wrapper. If the wrapper is in a bundle, it falls back to the project of resource. Constant value:
The name of the project. | |
seconds | integer | The number of seconds before a timeout occurs. |
|
validate
Execution wrapper for validating input/output schema.
usage:
this.using(
'validate',
schema_name: str = 'my_schema_name',
mode: str = 'complain',
point_of_validation: str = 'input',
).flow(
'child-execution'
)
Input schema
Key | Type | Description | Default |
---|---|---|---|
child_execution_project | enum | Any of
The project of the executed resource. If the resource is in a bundle, it falls back to the Default project. Constant value:
The project of the wrapper. If the wrapper is in a bundle, it falls back to the project of resource. Constant value:
The name of the project. | |
mode | enum | Any of
Validates the input_value or output_value of the child against a json schema and raises a Constant value:
Creates a json schema from the Constant value:
| |
point_of_validation | enum | Any of
Constant value:
Constant value:
| |
schema_name | string | The name of the schema resource that should be used for the wrapper. |