tripleo-common/workbooks/scale.yaml
Dougal Matthews 5435d9d823 Use the builtin Mistral engine command 'fail' when failing workflows
In changes 12f7345, c2fb9b0, 6051a74, c7b01eb and ab946c4 Mistral
Workflows were marked as failed if they sent a Zaqar message with the
status "FAILED". This is correct, but it turns out there is an easier
way to do it.

Mistral has a engine command designed for this purpose, using it removes
some of the duplication we have incurred.

We use on-success rather than on-complete to surface the best error on
the workflow. If the Zaqar queue post fails, then the workflow will fail
with this error. If, on-complete we then manually mark the workflow as
failed it will ovrwrite the Zaqar error with a generic one.

Closes-Bug: #1664918
Related-Bug: #1651704
Change-Id: I9ef9cfef1b8740a535e005769ec0c3ad67ecb103
2017-02-15 10:05:28 +00:00

66 lines
1.9 KiB
YAML

---
version: '2.0'
name: tripleo.scale.v1
description: TripleO Overcloud Deployment Workflows v1
workflows:
delete_node:
description: deletes given overcloud nodes and updates the stack
input:
- container
- nodes
- timeout: 240
- queue_name: tripleo
tasks:
delete_node:
action: tripleo.scale.delete_node nodes=<% $.nodes %> timeout=<% $.timeout %> container=<% $.container %>
on-success: wait_for_stack_in_progress
on-error: set_delete_node_failed
set_delete_node_failed:
on-success: send_message
publish:
status: FAILED
message: <% task(delete_node).result %>
wait_for_stack_in_progress:
workflow: tripleo.stack.v1.wait_for_stack_in_progress stack=<% $.container %>
on-success: wait_for_stack_complete
on-error: wait_for_stack_in_progress_failed
wait_for_stack_in_progress_failed:
on-success: send_message
publish:
status: FAILED
message: <% task(wait_for_stack_in_progress).result %>
wait_for_stack_complete:
workflow: tripleo.stack.v1.wait_for_stack_complete_or_failed stack=<% $.container %>
on-success: send_message
on-error: wait_for_stack_complete_failed
wait_for_stack_complete_failed:
on-success: send_message
publish:
status: FAILED
message: <% task(wait_for_stack_complete).result %>
send_message:
action: zaqar.queue_post
retry: count=5 delay=1
input:
queue_name: <% $.queue_name %>
messages:
body:
type: tripleo.scale.v1.delete_node
payload:
status: <% $.get('status', 'SUCCESS') %>
message: <% $.get('message', '') %>
execution: <% execution() %>
on-success:
- fail: <% $.get('status') = "FAILED" %>