c79248d50d
This patch consists of two parts.
A new Mistral action has been added to create signed temporary URLs.
The method to generate temporary URLs isnt' exposed by
python-swiftclient, therefore adding that method using it's own action.
It also sets the required metadata with a random key if not yet
existing.
The deployment workbook has been updated to create two temporary URLs
(one PUT, one GET) that can be used during the deployment for up- and
downloading Swift rings to the undercloud node.
Related-Bug: 1609421
Change-Id: Ic3da38cffdd993c768bdb137c17d625dff1aa372
(cherry picked from commit 067049594a
)
178 lines
4.9 KiB
YAML
178 lines
4.9 KiB
YAML
---
|
|
version: '2.0'
|
|
name: tripleo.deployment.v1
|
|
description: TripleO deployment workflows
|
|
|
|
workflows:
|
|
|
|
deploy_on_server:
|
|
|
|
input:
|
|
- server_uuid
|
|
- server_name
|
|
- config
|
|
- config_name
|
|
- group
|
|
- queue_name: tripleo
|
|
|
|
tasks:
|
|
|
|
deploy_config:
|
|
action: tripleo.deployment.config
|
|
on-complete: send_message
|
|
input:
|
|
server_id: <% $.server_uuid %>
|
|
name: <% $.config_name %>
|
|
config: <% $.config %>
|
|
group: <% $.group %>
|
|
|
|
send_message:
|
|
action: zaqar.queue_post
|
|
retry: count=5 delay=1
|
|
input:
|
|
queue_name: <% $.queue_name %>
|
|
messages:
|
|
body:
|
|
type: tripleo.deployment.v1.deploy_on_server
|
|
payload:
|
|
server_uuid: <% $.server_uuid %>
|
|
server_name: <% $.server_name %>
|
|
config_name: <% $.config_name %>
|
|
status_code: <% task(deploy_config).result.deploy_status_code %>
|
|
stdout: <% task(deploy_config).result.deploy_stdout %>
|
|
stderr: <% task(deploy_config).result.deploy_stderr %>
|
|
execution: <% execution() %>
|
|
|
|
deploy_on_servers:
|
|
|
|
input:
|
|
- server_name
|
|
- config_name
|
|
- config
|
|
- group: script
|
|
- queue_name: tripleo
|
|
|
|
tasks:
|
|
|
|
get_servers_matching:
|
|
action: nova.servers_list
|
|
on-success: deploy_on_servers
|
|
publish:
|
|
servers_with_name: <% task(get_servers_matching).result._info.where($.name.indexOf(execution().input.server_name) > -1) %>
|
|
|
|
deploy_on_servers:
|
|
on-success: send_success_message
|
|
on-error: send_failed_message
|
|
with-items: server in <% $.servers_with_name %>
|
|
workflow: tripleo.deployment.v1.deploy_on_server
|
|
input:
|
|
server_name: <% $.server.name %>
|
|
server_uuid: <% $.server.id %>
|
|
config: <% $.config %>
|
|
config_name: <% $.config_name %>
|
|
group: <% $.group %>
|
|
queue_name: <% $.queue_name %>
|
|
|
|
send_success_message:
|
|
action: zaqar.queue_post
|
|
retry: count=5 delay=1
|
|
input:
|
|
queue_name: <% $.queue_name %>
|
|
messages:
|
|
body:
|
|
type: tripleo.deployment.v1.deploy_on_servers
|
|
payload:
|
|
status: SUCCESS
|
|
execution: <% execution() %>
|
|
|
|
send_failed_message:
|
|
action: zaqar.queue_post
|
|
retry: count=5 delay=1
|
|
input:
|
|
queue_name: <% $.queue_name %>
|
|
messages:
|
|
body:
|
|
type: tripleo.deployment.v1.deploy_on_servers
|
|
payload:
|
|
status: FAILED
|
|
message: <% task(deploy_on_servers).result %>
|
|
execution: <% execution() %>
|
|
|
|
# Deploys a workload cloud stack
|
|
deploy_plan:
|
|
|
|
input:
|
|
- container
|
|
- timeout: 240
|
|
- queue_name: tripleo
|
|
|
|
tasks:
|
|
|
|
add_validation_ssh_key:
|
|
workflow: tripleo.validations.v1.add_validation_ssh_key_parameter container=<% $.container %>
|
|
on-complete: check_container
|
|
|
|
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 %>
|
|
on-success: deploy
|
|
|
|
deploy:
|
|
action: tripleo.deployment.deploy timeout=<% $.timeout %> container=<% $.container %>
|
|
on-success: send_message
|
|
on-error: set_deployment_failed
|
|
|
|
set_deployment_failed:
|
|
on-success: send_message
|
|
publish:
|
|
status: FAILED
|
|
message: <% task(deploy).result %>
|
|
|
|
send_message:
|
|
action: zaqar.queue_post
|
|
retry: count=5 delay=1
|
|
input:
|
|
queue_name: <% $.queue_name %>
|
|
messages:
|
|
body:
|
|
type: tripleo.deployment.v1.deploy_plan
|
|
payload:
|
|
status: <% $.get('status', 'SUCCESS') %>
|
|
message: <% $.get('message', '') %>
|
|
execution: <% execution() %>
|