Fail the deployment workflows when sending a "FAILED" message

When Mistral workflows execute a second workflow (a sub-workflow
execution), the parent workflow can't easily determine if sub-workflow
failed.  This is because the failure is communicated via a Zaqar message
only and when a workflow ends with a successful Zaqar message it appears
have been successful. This problem surfaces because parent workflows
should have an "on-error" attribute but it is never called, as the
workflow doesn't error.

This change marks the workflow as failed if the message has the status
"FAILED". Now when a sub-workflow fails, the task that called it should
have the on-error triggered. Previously it would always go to
on-success.

Change-Id: Ic1781bcf3922da61d42970cf2b42c951f83f7a74
Related-Bug: #1651704
This commit is contained in:
Dougal Matthews 2017-01-11 14:12:44 +00:00
parent 8362e4ac74
commit 12f734562c

View File

@ -42,6 +42,11 @@ workflows:
stdout: <% task(deploy_config).result.deploy_stdout %>
stderr: <% task(deploy_config).result.deploy_stderr %>
execution: <% execution() %>
on-success:
- fail_workflow: <% $.get('status') = "FAILED" %>
fail_workflow:
action: std.fail
deploy_on_servers:
@ -97,6 +102,10 @@ workflows:
status: FAILED
message: <% task(deploy_on_servers).result %>
execution: <% execution() %>
on-success: fail_workflow
fail_workflow:
action: std.fail
# Deploys a workload cloud stack
deploy_plan:
@ -138,3 +147,8 @@ workflows:
status: <% $.get('status', 'SUCCESS') %>
message: <% $.get('message', '') %>
execution: <% execution() %>
on-success:
- fail_workflow: <% $.get('status') = "FAILED" %>
fail_workflow:
action: std.fail