A workflow is a set of steps that implements a finite state machine, where every step performs a specific action.
Workflows can be triggered on a schedule or by an event.
While we want to enable users to create and manipulate workflows on their own, there is currently only one hardcoded workflow that ships with Resoto, which is illustrated in the following diagram:
This workflow is triggered by time and runs every hour.
According to this workflow, the following actions are performed every full hour:
collectAll configured cloud providers are triggered to collect the available cloud resources.
The collected resources are given to the core and update the internal database. After this step is done, all cloud resources should be available to Resoto.
cleanup_planThis step allows selection of resources that should be cleaned up.
Out of the box, Resoto will select expired resources if
resotoworkeris started with the relevant command-line flag (
--cleanup-expired). Users can hook into this step to select resources, that they think should be cleaned up. After this step is done, all resources that should be cleaned up are marked internally in resotocore.
cleanupWhen cleanup is enabled in resotoworker (
--cleanup), this step will select all resources that are marked for cleanup and will delete them.
After this step is done, all resources that were marked for cleanup are handled.
generate_metricsThis step will perform several queries to get updated metrics. Since the incoming data only changes during the next collect run, the metrics can be safely generated here and cached until the next collect run.
Every step shown in this diagram has an additional
post action. Those actions exist, to allow additional customization. If you want to trigger functionality after
collect is done, it would be possible to react on the
post_collect action for example.
The following diagram shows how
resotometrics use the default workflow.
resotoworkerwaits for the
collectaction. Once this is received, it will run all configured cloud providers to collect the available cloud resources. It will also listen to the
cleanup_planaction in case expired resources should be cleaned up.
- resotometrics will wait for the
generate_metricsaction. Since this action is performed after the collect step, the metrics operate on the latest available snapshot of data.