tripleo-common/workbooks/rename_ceph_ansible_fetch_directory.yaml
John Fulton d1619ed9ea Run Mistral workflow to make temporary Swift URLs on upgrade
The create_swift_backup_container_plan workflow was getting run
on overcloud deploy but not upgrade because it was called only
on the task split for the clone_git_repo task. This patch ensures
it is run regardless of if the call to clone_git_repo is necessary.
The create_swift_backup_container_plan workflow is used by Ceph and
Swift so in theory this was a bug for Swift upgrades too.

Also, updates rename_ceph_ansible_fetch_directory.yaml's notify_zaqar
task to send a meaningful message, as previously the workflow failed
because it tried to reference a variable as if it were a task.

Change-Id: Ifab82c9a5b0a206c14ae7976d2c1c7f0e9fa3d9d
Closes-Bug: #1799945
2018-10-27 15:07:48 -04:00

106 lines
4.0 KiB
YAML

---
version: '2.0'
name: tripleo.rename_ceph_ansible_fetch_directory.v1
description: TripleO rename ceph-ansible fetch directory backup in Swift Workflow v1
workflows:
check_and_rename:
description: >
If the name of the tarball containing the ceph-ansible fetch directory
matches the format found in Queens, then rename it to match the format
expected in Rocky. I.e if temporary_dir-20180915-191756.tar.gz is found
then rename it to temporary_dir.tar.gz. This workflow is idempotent and
should be run before upgrading from Queens to Rocky.
input:
- container: overcloud
- queue_name: tripleo
- container_suffix: "_ceph_ansible_fetch_dir"
- swift_tar: "temporary_dir.tar.gz"
tags:
- tripleo-common-managed
tasks:
swift_container:
publish:
swift_container: "<% $.container %><% $.container_suffix %>"
on-complete: verify_container_exists
verify_container_exists:
action: swift.head_container container=<% $.swift_container %>
on-success: get_object_list
on-error: verify_container_exists_set_status_failed
get_object_list:
# the get_container result[1] will be a list of objects (even if list is empty)
action: swift.get_container container=<% $.swift_container %>
publish:
object_list: <% task().result[1] %>
on-success: set_need_rename
on-error: get_object_list_set_status_failed
set_need_rename:
# if the list is empty, do not rename; otherwise check if name matches queens pattern
publish:
need_rename: <% switch($.object_list.len() = 0 => false, $.object_list.len() = 1 => $.object_list.first().get("name").matches("temporary_dir-[0-9]{4}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])-(2[0-3]|[01][0-9])[0-5][0-9][0-5][0-9].tar.gz")) %>
on-success: switch_on_need_rename
on-error: set_need_rename_set_status_failed
switch_on_need_rename:
on-success:
- copy_to_new_name: <% $.need_rename = true %>
- set_status_success: <% $.need_rename != true %>
copy_to_new_name:
action: swift.copy_object container=<% $.swift_container %> obj=<% $.object_list.first().get("name") %> destination=<% concat($.swift_container, '/', $.swift_tar) %>
on-success: remove_old_name
on-error: copy_to_new_name_set_status_failed
remove_old_name:
action: swift.delete_object container=<% $.swift_container %> obj=<% $.object_list.first().get("name") %>
on-success: set_status_success
on-error: remove_old_name_set_status_failed
set_status_success:
on-success: notify_zaqar
publish:
status: SUCCESS
message: <% switch($.need_rename = true => "The backup of the ceph-ansible fetch directory was renamed", $.need_rename != true => "The backup of the ceph-ansible fetch directory did not need to be renamed") %>
verify_container_exists_set_status_failed:
on-success: notify_zaqar
publish:
status: FAILED
message: <% task(verify_container_exists).result %>
get_object_list_set_status_failed:
on-success: notify_zaqar
publish:
status: FAILED
message: <% task(get_object_list).result %>
set_need_rename_set_status_failed:
on-success: notify_zaqar
publish:
status: FAILED
message: <% task(set_need_rename).result %>
copy_to_new_name_set_status_failed:
on-success: notify_zaqar
publish:
status: FAILED
message: <% task(copy_to_new_name).result %>
remove_old_name_set_status_failed:
on-success: notify_zaqar
publish:
status: FAILED
message: <% task(remove_old_name).result %>
notify_zaqar:
workflow: tripleo.messaging.v1.send
input:
queue_name: <% $.queue_name %>
type: <% execution().name %>
status: <% $.get('status', 'SUCCESS') %>
message: <% $.get('message', '') %>
execution: <% execution() %>