Fail the validation 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: I2170afac89e8261c1e2289da8e9220694fadbad0
Related-Bug: #1651704
This commit is contained in:
Dougal Matthews 2017-01-11 14:23:25 +00:00
parent a4592519e7
commit 6051a7446b
1 changed files with 15 additions and 0 deletions

View File

@ -59,6 +59,11 @@ workflows:
stdout: <% $.stdout %>
stderr: <% $.stderr %>
execution: <% execution() %>
on-success:
- fail_workflow: <% $.get('status') = "FAILED" %>
fail_workflow:
action: std.fail
run_validations:
input:
@ -109,6 +114,11 @@ workflows:
plan: <% $.plan %>
status: <% $.get('status', 'SUCCESS') %>
execution: <% execution() %>
on-success:
- fail_workflow: <% $.get('status') = "FAILED" %>
fail_workflow:
action: std.fail
run_groups:
input:
@ -167,6 +177,11 @@ workflows:
plan: <% $.plan %>
status: <% $.get('status', 'SUCCESS') %>
execution: <% execution() %>
on-success:
- fail_workflow: <% $.get('status') = "FAILED" %>
fail_workflow:
action: std.fail
list:
input: