tripleo-common/workbooks/validations.yaml

293 lines
8.1 KiB
YAML

---
version: '2.0'
name: tripleo.validations.v1
description: TripleO Validations Workflows v1
workflows:
run_validation:
input:
- validation_name
- plan: overcloud
- validation_inputs: {}
- queue_name: tripleo
tags:
- tripleo-common-managed
tasks:
notify_running:
workflow: tripleo.messaging.v1.send
input:
queue_name: <% $.queue_name %>
type: <% execution().name %>
status: RUNNING
execution: <% execution() %>
plan_name: <% $.plan %>
payload:
validation_name: <% $.validation_name %>
plan: <% $.plan %>
on-complete: run_validation
run_validation:
on-success: send_message
on-error: set_status_failed
action: tripleo.validations.run_validation validation=<% $.validation_name %> plan=<% $.plan %> inputs=<% $.validation_inputs %>
publish:
status: SUCCESS
validation: <% $.validation_name %>
stdout: <% task().result.stdout %>
stderr: <% task().result.stderr %>
set_status_failed:
on-complete: send_message
publish:
status: FAILED
validation: <% $.validation_name %>
stdout: <% task(run_validation).result.stdout %>
stderr: <% task(run_validation).result.stderr %>
send_message:
workflow: tripleo.messaging.v1.send
input:
queue_name: <% $.queue_name %>
type: <% execution().name %>
status: <% $.get('status', 'SUCCESS') %>
execution: <% execution() %>
plan_name: <% $.plan %>
payload:
validation_name: <% $.validation_name %>
plan: <% $.plan %>
stdout: <% $.stdout %>
stderr: <% $.stderr %>
run_validations:
input:
- validation_names: []
- plan: overcloud
- validation_inputs: {}
- queue_name: tripleo
tags:
- tripleo-common-managed
tasks:
notify_running:
workflow: tripleo.messaging.v1.send
input:
queue_name: <% $.queue_name %>
type: <% execution().name %>
status: RUNNING
execution: <% execution() %>
plan_name: <% $.plan %>
payload:
validation_names: <% $.validation_names %>
plan: <% $.plan %>
on-complete: run_validations
run_validations:
on-success: send_message
on-error: set_status_failed
workflow: tripleo.validations.v1.run_validation
input:
validation_name: <% $.validation %>
validation_inputs: <% $.validation_inputs %>
plan: <% $.plan %>
queue_name: <% $.queue_name %>
with-items: validation in <% $.validation_names %>
publish:
status: SUCCESS
message: <% task().result %>
set_status_failed:
on-complete: send_message
publish:
status: FAILED
message: <% task(run_validations).result.where($.status = 'FAILED') %>
send_message:
workflow: tripleo.messaging.v1.send
input:
queue_name: <% $.queue_name %>
type: <% execution().name %>
status: <% $.get('status', 'SUCCESS') %>
message: <% $.get('message', '') %>
execution: <% execution() %>
plan_name: <% $.plan %>
payload:
validation_names: <% $.validation_names %>
plan: <% $.plan %>
run_groups:
input:
- group_names: []
- plan: overcloud
- validation_inputs: {}
- queue_name: tripleo
tags:
- tripleo-common-managed
tasks:
find_validations:
on-success: notify_running
action: tripleo.validations.list_validations plan=<% $.plan %> groups=<% $.group_names %>
publish:
validations: <% task().result %>
notify_running:
workflow: tripleo.messaging.v1.send
input:
queue_name: <% $.queue_name %>
type: <% execution().name %>
status: RUNNING
execution: <% execution() %>
plan_name: <% $.plan %>
payload:
group_names: <% $.group_names %>
validation_names: <% $.validations %>
plan: <% $.plan %>
on-complete: run_validation_group
run_validation_group:
on-success: send_message
on-error: set_status_failed
workflow: tripleo.validations.v1.run_validation
input:
validation_name: <% $.validation %>
validation_inputs: <% $.validation_inputs %>
plan: <% $.plan %>
queue_name: <% $.queue_name %>
with-items: validation in <% $.validations.id %>
publish:
status: SUCCESS
message: <% task().result %>
set_status_failed:
on-complete: send_message
publish:
status: FAILED
message: <% task(run_validation_group).result.where($.status = 'FAILED') %>
send_message:
workflow: tripleo.messaging.v1.send
input:
queue_name: <% $.queue_name %>
type: <% execution().name %>
status: <% $.get('status', 'SUCCESS') %>
message: <% $.get('message', '') %>
execution: <% execution() %>
plan_name: <% $.plan %>
payload:
group_names: <% $.group_names %>
validation_names: <% $.validations %>
plan: <% $.plan %>
list:
input:
- group_names: []
- plan: overcloud
- queue_name: tripleo
output:
validations: <% $.validations %>
tags:
- tripleo-common-managed
tasks:
find_validations:
on-success: send_message
action: tripleo.validations.list_validations plan=<% $.plan %> groups=<% $.group_names %>
publish:
status: SUCCESS
message: <% task().result %>
validations: <% task().result %>
publish-on-error:
status: FAILED
message: <% task().result %>
send_message:
workflow: tripleo.messaging.v1.send
input:
queue_name: <% $.queue_name %>
type: <% execution().name %>
execution: <% execution() %>
status: <% $.status %>
message: <% $.get('message', '') %>
payload:
validations: <% $.get('validations', []) %>
list_groups:
input:
- plan: overcloud
output:
groups: <% task(find_groups).result %>
tags:
- tripleo-common-managed
tasks:
find_groups:
action: tripleo.validations.list_groups plan=<% $.plan %>
add_validation_ssh_key_parameter:
input:
- container
- queue_name: tripleo
tags:
- tripleo-common-managed
tasks:
test_validations_enabled:
action: tripleo.validations.enabled
on-success: get_pubkey
on-error: unset_validation_key_parameter
get_pubkey:
action: tripleo.validations.get_pubkey
on-success: set_validation_key_parameter
publish:
pubkey: <% task().result %>
set_validation_key_parameter:
action: tripleo.parameters.update
input:
parameters:
node_admin_extra_ssh_keys: <% $.pubkey %>
container: <% $.container %>
# NOTE(shadower): We need to clear keys from a previous deployment
unset_validation_key_parameter:
action: tripleo.parameters.update
input:
parameters:
node_admin_extra_ssh_keys: ""
container: <% $.container %>
upload_validations:
tags:
- tripleo-common-managed
input:
- queue_name: tripleo
tasks:
upload_validations:
action: tripleo.validations.upload
on-complete: send_message
publish-on-error:
status: FAILED
message: <% task().result %>
publish:
status: SUCCESS
message: <% task().result %>
send_message:
workflow: tripleo.messaging.v1.send
input:
queue_name: <% $.queue_name %>
type: <% execution().name %>
status: <% $.status %>
execution: <% execution() %>
message: <% $.get('message', '') %>