Mistral sample workbook
Change-Id: I1224d44a6acb7ac09af06919f70e77bd6b20278a
This commit is contained in:
parent
e7a945c158
commit
dbc79569d4
130
examples/mistral_workbook.yaml
Normal file
130
examples/mistral_workbook.yaml
Normal file
@ -0,0 +1,130 @@
|
||||
---
|
||||
version: '2.0'
|
||||
|
||||
name: sample_backup_workbook
|
||||
description: Sample backup workflows
|
||||
|
||||
# Ad-hoc Actions
|
||||
|
||||
actions:
|
||||
send_email:
|
||||
input:
|
||||
- to_addrs
|
||||
- subject
|
||||
- body
|
||||
base: std.email
|
||||
base-input:
|
||||
to_addrs: <% $.to_addrs %>
|
||||
subject: <% $.subject %>
|
||||
body: <% $.body %>
|
||||
from_addr: 'mistral@localhost'
|
||||
smtp_server: 'localhost'
|
||||
smtp_password: 'SECRET'
|
||||
|
||||
# Workflows
|
||||
|
||||
workflows:
|
||||
create_backups_workflow:
|
||||
type: direct
|
||||
description: Sample workflow to create backups
|
||||
|
||||
input:
|
||||
- projects_id_list: null
|
||||
- volumes_id_list: null
|
||||
- incremental: false
|
||||
- report_to_list: null
|
||||
- snapshot_name: 'by_create_backups_workflow'
|
||||
|
||||
tasks:
|
||||
analyze_volumes_id_list:
|
||||
action: std.echo output=<% $.volumes_id_list %>
|
||||
publish:
|
||||
volumes_id_list_to_snapshot: <% $.volumes_id_list %>
|
||||
on-success:
|
||||
- analyze_projects_id_list: <% isList($.volumes_id_list) = false %>
|
||||
- create_snapshots: <% isList($.volumes_id_list) %>
|
||||
|
||||
analyze_projects_id_list:
|
||||
action: std.echo output=<% $.projects_id_list %>
|
||||
on-success:
|
||||
- get_all_projects_volumes_list: <% $.projects_id_list = null %>
|
||||
- get_volumes_list: <% $.projects_id_list != null %>
|
||||
|
||||
get_all_projects_volumes_list:
|
||||
action: cinder.volumes_list search_opts=<% {'all_tenants'=>1} %>
|
||||
publish:
|
||||
volumes_id_list_to_snapshot: <% task(get_all_projects_volumes_list).result.id %>
|
||||
on-success:
|
||||
- create_snapshots: <% task(get_all_projects_volumes_list).result != [] %>
|
||||
|
||||
get_volumes_list:
|
||||
with-items: project_id in <% $.projects_id_list %>
|
||||
action: cinder.volumes_list search_opts=<% {'all_tenants'=>1,'project_id'=> $.project_id} %>
|
||||
publish:
|
||||
volumes_id_list_to_snapshot: <% task(get_volumes_list).result.id %>
|
||||
on-success:
|
||||
- create_snapshots: <% task(get_volumes_list).result != [] %>
|
||||
|
||||
create_snapshots:
|
||||
with-items: volume_id_to_snapshot in <% $.volumes_id_list_to_snapshot %>
|
||||
action: cinder.volume_snapshots_create volume_id=<% $.volume_id_to_snapshot %> force=true name=<% $.snapshot_name %> description='Temporaray snapshot created by Mistral for backup purpose'
|
||||
on-complete: create_backups
|
||||
|
||||
create_backups:
|
||||
with-items:
|
||||
- snap_id in <% task(create_snapshots).result.id %>
|
||||
- vol_id in <% task(create_snapshots).result.volume_id %>
|
||||
action: cinder.backups_create snapshot_id=<% $.snap_id %> volume_id=<% $.vol_id %> incremental=<% $.incremental %>
|
||||
publish:
|
||||
backups_id_list: <% task(create_backups).result.id %>
|
||||
on-complete: wait_for_backups_completion
|
||||
|
||||
wait_for_backups_completion:
|
||||
with-items: backup_id in <% $.backups_id_list %>
|
||||
action: cinder.backups_get backup_id=<% $.backup_id %>
|
||||
publish:
|
||||
snap_id_to_del_list: <% task(wait_for_backups_completion).result.where($.status != creating).snapshot_id %>
|
||||
on-complete: delete_snapshots
|
||||
wait-before: 10
|
||||
timeout: 300
|
||||
retry:
|
||||
count: 30
|
||||
delay: 10
|
||||
continue-on: <% creating in task(wait_for_backups_completion).result.status %>
|
||||
|
||||
delete_snapshots:
|
||||
description: Deletes snapshots for backups which are not in creating state
|
||||
with-items: snap_id_to_del in <% $.snap_id_to_del_list %>
|
||||
action: cinder.volume_snapshots_delete snapshot=<% $.snap_id_to_del %>
|
||||
on-success:
|
||||
- report_success: <% ( $.volumes_id_list_to_snapshot.len() = $.snap_id_to_del_list.len() ) and ( $.report_to_list != null ) %>
|
||||
- report_error: <% ( $.volumes_id_list_to_snapshot.len() != $.snap_id_to_del_list.len() ) and ( $.report_to_list != null ) %>
|
||||
on-error:
|
||||
- report_error: <% $.report_to_list != null %>
|
||||
|
||||
report_error:
|
||||
action: send_email
|
||||
input:
|
||||
to_addrs: <% $.report_to_list %>
|
||||
subject: 'Sample backup workflow - Error'
|
||||
body: |
|
||||
Hi,
|
||||
|
||||
Please take a look at Mistral Dashboard to find out what's wrong
|
||||
with your workflow execution <% execution().id %>.
|
||||
Everything's going to be alright!
|
||||
|
||||
-- Regards, Sample backup workflow.
|
||||
|
||||
|
||||
report_success:
|
||||
action: send_email
|
||||
input:
|
||||
to_addrs: <% $.report_to_list %>
|
||||
subject: 'Sample backup workflow - Success'
|
||||
body: |
|
||||
Hi,
|
||||
|
||||
The backups has been created.
|
||||
|
||||
-- Regards, Sample backup workflow.
|
Loading…
Reference in New Issue
Block a user