bcd72d2ada
This allows clients to get live updates on the stack status when the workflow gets them. Otherwise they will need to wait for the workflow and poll the stack. Change-Id: I55945adb5bd7d3159248e262f4b510c59c897ebb
144 lines
3.8 KiB
YAML
144 lines
3.8 KiB
YAML
---
|
|
version: '2.0'
|
|
name: tripleo.stack.v1
|
|
description: TripleO Stack Workflows
|
|
|
|
workflows:
|
|
|
|
_heat_stacks_get:
|
|
|
|
tags:
|
|
- tripleo-common-managed
|
|
|
|
input:
|
|
- stack
|
|
- queue_name: null
|
|
|
|
tasks:
|
|
heat_stacks_get:
|
|
action: heat.stacks_get stack_id=<% $.stack %>
|
|
publish:
|
|
stack: <% task().result %>
|
|
on-success:
|
|
- send_message: <% bool($.queue_name) %>
|
|
send_message:
|
|
workflow: tripleo.messaging.v1.send
|
|
input:
|
|
queue_name: <% $.queue_name %>
|
|
type: <% execution().name %>
|
|
status: "RUNNING" # This should never be the end of a workflow
|
|
execution: <% execution() %>
|
|
payload:
|
|
stack: <% task(heat_stacks_get).result %>
|
|
|
|
wait_for_stack_complete_or_failed:
|
|
input:
|
|
- stack
|
|
- timeout: 14400 # 4 hours. Default timeout of stack deployment
|
|
- queue_name: null
|
|
|
|
tags:
|
|
- tripleo-common-managed
|
|
|
|
tasks:
|
|
|
|
wait_for_stack_status:
|
|
workflow: _heat_stacks_get
|
|
input:
|
|
stack: <% $.stack %>
|
|
queue_name: <% $.queue_name %>
|
|
timeout: <% $.timeout %>
|
|
publish:
|
|
stack_status: <% task().result.stack.stack_status %>
|
|
retry:
|
|
delay: 15
|
|
count: <% $.timeout / 15 %>
|
|
continue-on: <% task().result.stack.stack_status in ['CREATE_IN_PROGRESS', 'UPDATE_IN_PROGRESS', 'DELETE_IN_PROGRESS'] %>
|
|
|
|
wait_for_stack_in_progress:
|
|
input:
|
|
- stack
|
|
- timeout: 600 # 10 minutes. Should not take much longer for a stack to transition to IN_PROGRESS
|
|
- queue_name: null
|
|
|
|
tags:
|
|
- tripleo-common-managed
|
|
|
|
tasks:
|
|
|
|
wait_for_stack_status:
|
|
workflow: _heat_stacks_get
|
|
input:
|
|
stack: <% $.stack %>
|
|
queue_name: <% $.queue_name %>
|
|
timeout: <% $.timeout %>
|
|
publish:
|
|
stack_status: <% task().result.stack.stack_status %>
|
|
retry:
|
|
delay: 15
|
|
count: <% $.timeout / 15 %>
|
|
continue-on: <% task().result.stack.stack_status in ['CREATE_COMPLETE', 'CREATE_FAILED', 'UPDATE_COMPLETE', 'UPDATE_FAILED', 'DELETE_FAILED'] %>
|
|
|
|
wait_for_stack_does_not_exist:
|
|
input:
|
|
- stack
|
|
- timeout: 3600
|
|
|
|
tags:
|
|
- tripleo-common-managed
|
|
|
|
tasks:
|
|
wait_for_stack_does_not_exist:
|
|
action: heat.stacks_list
|
|
timeout: <% $.timeout %>
|
|
retry:
|
|
delay: 15
|
|
count: <% $.timeout / 15 %>
|
|
continue-on: <% $.stack in task().result.select([$.stack_name, $.id]).flatten() %>
|
|
|
|
delete_stack:
|
|
input:
|
|
- stack
|
|
- queue_name: tripleo
|
|
|
|
tags:
|
|
- tripleo-common-managed
|
|
|
|
tasks:
|
|
delete_the_stack:
|
|
action: heat.stacks_delete stack_id=<% $.stack %>
|
|
on-success: wait_for_stack_does_not_exist
|
|
on-error: delete_the_stack_failed
|
|
|
|
delete_the_stack_failed:
|
|
on-success: send_message
|
|
publish:
|
|
status: FAILED
|
|
message: <% task(delete_the_stack).result %>
|
|
|
|
wait_for_stack_does_not_exist:
|
|
workflow: tripleo.stack.v1.wait_for_stack_does_not_exist stack=<% $.stack %>
|
|
on-success: send_message
|
|
on-error: wait_for_stack_does_not_exist_failed
|
|
|
|
wait_for_stack_does_not_exist_failed:
|
|
on-success: send_message
|
|
publish:
|
|
status: FAILED
|
|
message: <% task(wait_for_stack_does_not_exist).result %>
|
|
|
|
send_message:
|
|
action: zaqar.queue_post
|
|
retry: count=5 delay=1
|
|
input:
|
|
queue_name: <% $.queue_name %>
|
|
messages:
|
|
body:
|
|
type: tripleo.scale.v1.delete_stack
|
|
payload:
|
|
status: <% $.get('status', 'SUCCESS') %>
|
|
message: <% $.get('message', '') %>
|
|
execution: <% execution() %>
|
|
on-success:
|
|
- fail: <% $.get('status') = "FAILED" %>
|