Ensure Swift Rings backup container and URLs

Swift Rings backup container and URLs for it are created only
during deploy but there is possibility of minor update or
change of deployment when they should be created. Adding them
in plan_management update_deployment_plan fixes these cases.

Closes-Bug: #1695778
Resolves: rhbz#1455616
Change-Id: Ifcedd54da5c74f12c863b8ec63679360673dd8f6
(cherry picked from commit bfabb3f575)
This commit is contained in:
Lukas Bezdicka 2017-05-29 22:54:33 +02:00
parent fb27e73b32
commit 935912dd73
3 changed files with 116 additions and 39 deletions

View File

@ -110,53 +110,28 @@ workflows:
add_validation_ssh_key:
workflow: tripleo.validations.v1.add_validation_ssh_key_parameter container=<% $.container %>
on-complete: check_container
on-complete: create_swift_rings_backup_plan
check_container:
action: swift.head_container container=<% $.container %>
on-success: get_tempurl
on-error: create_container
create_container:
action: tripleo.plan.create_container container="<% $.container %>-swift-rings"
on-success: get_tempurl
get_tempurl:
action: tripleo.swift.tempurl
on-success: set_get_tempurl
input:
container: "<% $.container %>-swift-rings"
obj: "swift-rings.tar.gz"
set_get_tempurl:
action: tripleo.parameters.update
input:
parameters:
SwiftRingGetTempurl: <% task(get_tempurl).result %>
container: <% $.container %>
on-success: put_tempurl
put_tempurl:
action: tripleo.swift.tempurl
on-success: set_put_tempurl
input:
container: "<% $.container %>-swift-rings"
obj: "swift-rings.tar.gz"
method: "PUT"
set_put_tempurl:
action: tripleo.parameters.update
input:
parameters:
SwiftRingPutTempurl: <% task(put_tempurl).result %>
container: <% $.container %>
create_swift_rings_backup_plan:
workflow: tripleo.swift_rings_backup.v1.create_swift_rings_backup_container_plan
on-success: deploy
on-error: create_swift_rings_backup_plan_set_status_failed
input:
container: <% $.container %>
queue_name: <% $.queue_name %>
use_default_templates: true
deploy:
action: tripleo.deployment.deploy timeout=<% $.timeout %> container=<% $.container %>
on-success: send_message
on-error: set_deployment_failed
create_swift_rings_backup_plan_set_status_failed:
on-success: send_message
publish:
status: FAILED
message: <% task(create_swift_rings_backup_plan).result %>
set_deployment_failed:
on-success: send_message
publish:

View File

@ -67,6 +67,15 @@ workflows:
- container
- queue_name: tripleo
tasks:
create_swift_rings_backup_plan:
workflow: tripleo.swift_rings_backup.v1.create_swift_rings_backup_container_plan
on-success: update_plan
on-error: create_swift_rings_backup_plan_set_status_failed
input:
container: <% $.container %>
queue_name: <% $.queue_name %>
use_default_templates: true
update_plan:
action: tripleo.plan.update container=<% $.container %>
on-success: ensure_passwords_exist
@ -88,6 +97,12 @@ workflows:
status: SUCCESS
message: <% task(update_plan).result %>
create_swift_rings_backup_plan_set_status_failed:
on-success: notify_zaqar
publish:
status: FAILED
message: <% task(create_swift_rings_backup_plan).result %>
update_plan_set_status_failed:
on-success: notify_zaqar
publish:

View File

@ -0,0 +1,87 @@
---
version: '2.0'
name: tripleo.swift_rings_backup.v1
description: TripleO Swift Rings backup container Deployment Workflow v1
workflows:
create_swift_rings_backup_container_plan:
description: >
This plan ensures existence of container for Swift Rings backup.
input:
- container
- queue_name: tripleo
tasks:
check_container:
action: swift.head_container container=<% $.container %>
on-success: get_tempurl
on-error: create_container
create_container:
action: tripleo.plan.create_container container="<% $.container %>-swift-rings"
on-error: set_create_container_failed
on-success: get_tempurl
get_tempurl:
action: tripleo.swift.tempurl
on-success: set_get_tempurl
input:
container: "<% $.container %>-swift-rings"
obj: "swift-rings.tar.gz"
set_get_tempurl:
action: tripleo.parameters.update
input:
parameters:
SwiftRingGetTempurl: <% task(get_tempurl).result %>
container: <% $.container %>
on-success: put_tempurl
put_tempurl:
action: tripleo.swift.tempurl
on-success: set_put_tempurl
input:
container: "<% $.container %>-swift-rings"
obj: "swift-rings.tar.gz"
method: "PUT"
set_put_tempurl:
action: tripleo.parameters.update
input:
parameters:
SwiftRingPutTempurl: <% task(put_tempurl).result %>
container: <% $.container %>
on-success: set_status_success
on-error: set_put_tempurl_failed
set_status_success:
on-success: notify_zaqar
publish:
status: SUCCESS
message: <% task(set_put_tempurl).result %>
set_put_tempurl_failed:
on-success: notify_zaqar
publish:
status: FAILED
message: <% task(set_put_tempurl).result %>
set_create_container_failed:
on-success: notify_zaqar
publish:
status: FAILED
message: <% task(create_container_failed).result %>
notify_zaqar:
action: zaqar.queue_post
input:
queue_name: <% $.queue_name %>
messages:
body:
type: tripleo.swift_rings_backup.v1.create_swift_rings_backup_container_plan
payload:
status: <% $.status %>
message: <% $.get('message', '') %>
execution: <% execution() %>
on-success:
- fail: <% $.get('status') = "FAILED" %>