9ca3346709
Update the undercloud_backup workbook to use the standard message sending workflow. This workflow reduces the boilerplate that is copied between workflows by defining the message structure, providing the retry logic and ensuring the task on a "FAILED" message. The workflow also offers optional persistence in Swift. If the plan name is given to the workflow it will store the messages in a Swift container named <plan_name>-messages. Change-Id: I71e761c1295ae0d0ca2773c7521b6a57cabd6227 Related-Bug: #1757372
128 lines
4.0 KiB
YAML
128 lines
4.0 KiB
YAML
---
|
|
version: '2.0'
|
|
name: tripleo.undercloud_backup.v1
|
|
description: TripleO Undercloud backup workflows
|
|
|
|
workflows:
|
|
|
|
backup:
|
|
description: This workflow will launch the Undercloud backup
|
|
tags:
|
|
- tripleo-common-managed
|
|
input:
|
|
- sources_path: '/home/stack/'
|
|
- queue_name: tripleo
|
|
tasks:
|
|
# Action to know if there is enough available space
|
|
# to run the Undercloud backup
|
|
get_free_space:
|
|
action: tripleo.undercloud.get_free_space
|
|
publish:
|
|
status: SUCCESS
|
|
message: <% task().result %>
|
|
free_space: <% task().result %>
|
|
on-success: create_backup_dir
|
|
on-error: send_message
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
|
|
# We create a temp directory to store the Undercloud
|
|
# backup
|
|
create_backup_dir:
|
|
action: tripleo.undercloud.create_backup_dir
|
|
publish:
|
|
status: SUCCESS
|
|
message: <% task().result %>
|
|
backup_path: <% task().result %>
|
|
on-success: get_database_credentials
|
|
on-error: send_message
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
|
|
# The Undercloud database password for the root
|
|
# user is stored in a Mistral environment, we
|
|
# need the password in order to run the database dump
|
|
get_database_credentials:
|
|
action: mistral.environments_get name='tripleo.undercloud-config'
|
|
publish:
|
|
status: SUCCESS
|
|
message: <% task().result %>
|
|
undercloud_db_password: <% task().result.variables.undercloud_db_password %>
|
|
on-success: create_database_backup
|
|
on-error: send_message
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
|
|
# Run the DB dump of all the databases and store the result
|
|
# in the temporary folder
|
|
create_database_backup:
|
|
input:
|
|
path: <% $.backup_path.path %>
|
|
dbuser: root
|
|
dbpassword: <% $.undercloud_db_password %>
|
|
action: tripleo.undercloud.create_database_backup
|
|
publish:
|
|
status: SUCCESS
|
|
message: <% task().result %>
|
|
on-success: create_fs_backup
|
|
on-error: send_message
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
|
|
# This action will run the fs backup
|
|
create_fs_backup:
|
|
input:
|
|
sources_path: <% $.sources_path %>
|
|
path: <% $.backup_path.path %>
|
|
action: tripleo.undercloud.create_file_system_backup
|
|
publish:
|
|
status: SUCCESS
|
|
message: <% task().result %>
|
|
on-success: upload_backup
|
|
on-error: send_message
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
|
|
# This action will push the backup to swift
|
|
upload_backup:
|
|
input:
|
|
backup_path: <% $.backup_path.path %>
|
|
action: tripleo.undercloud.upload_backup_to_swift
|
|
publish:
|
|
status: SUCCESS
|
|
message: <% task().result %>
|
|
on-success: cleanup_backup
|
|
on-error: send_message
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
|
|
# This action will remove the backup temp folder
|
|
cleanup_backup:
|
|
input:
|
|
path: <% $.backup_path.path %>
|
|
action: tripleo.undercloud.remove_temp_dir
|
|
publish:
|
|
status: SUCCESS
|
|
message: <% task().result %>
|
|
on-success: send_message
|
|
on-error: send_message
|
|
publish-on-error:
|
|
status: FAILED
|
|
message: <% task().result %>
|
|
|
|
# Sending a message to show that the backup finished
|
|
send_message:
|
|
workflow: tripleo.messaging.v1.send
|
|
input:
|
|
queue_name: <% $.queue_name %>
|
|
type: <% execution().name %>
|
|
status: <% $.get('status', 'SUCCESS') %>
|
|
execution: <% execution() %>
|
|
message: <% $.get('message', '') %>
|