--- version: '2.0' name: tripleo.package_update.v1 description: TripleO update workflows workflows: # Updates a workload cloud stack package_update_plan: description: Take a container and perform a package update with possible breakpoints input: - container - ceph_ansible_playbook - timeout: 240 - queue_name: tripleo - skip_deploy_identifier: False - config_dir: '/tmp/' tags: - tripleo-common-managed tasks: update: action: tripleo.package_update.update_stack input: timeout: <% $.timeout %> container: <% $.container %> ceph_ansible_playbook: <% $.ceph_ansible_playbook %> publish-on-error: message: <% task().result %> on-success: clean_plan on-error: set_update_failed clean_plan: action: tripleo.plan.update_plan_environment input: container: <% $.container %> parameter: CephAnsiblePlaybook env_key: parameter_defaults delete: true on-success: set_update_success on-error: set_update_failed set_update_failed: on-success: send_message publish: status: FAILED update_status: UPDATE_FAILED set_update_success: on-success: send_message publish: status: SUCCESS update_status: UPDATE_SUCCESS send_message: action: zaqar.queue_post input: queue_name: <% $.queue_name %> messages: body: type: tripleo.package_update.v1.package_update_plan payload: status: <% $.get('status', 'SUCCESS') %> message: <% $.get('message', '') %> execution: <% execution() %> on-success: - fail: <% $.get('status') = "FAILED" %> get_config: input: - container - queue_name: tripleo tags: - tripleo-common-managed tasks: get_config: action: tripleo.config.get_overcloud_config container=<% $.container %> publish: status: SUCCESS message: <% task().result %> publish-on-error: status: FAILED message: Init Minor update failed on-complete: send_message send_message: action: zaqar.queue_post input: queue_name: <% $.queue_name %> messages: body: type: tripleo.package_update.v1.package_update_plan payload: status: <% $.get('status', 'SUCCESS') %> message: <% $.get('message', '') %> execution: <% execution() %> on-success: - fail: <% $.get('status') = "FAILED" %> update_nodes: description: Take a container and perform an update nodes by nodes input: - node_user: heat-admin - nodes - playbook - inventory_file - ansible_queue_name: tripleo - module_path: /usr/share/ansible-modules - ansible_extra_env_variables: ANSIBLE_LOG_PATH: /var/log/mistral/package_update.log ANSIBLE_HOST_KEY_CHECKING: 'False' - verbosity: 1 - work_dir: /var/lib/mistral - skip_tags: '' tags: - tripleo-common-managed tasks: download_config: action: tripleo.config.download_config input: work_dir: <% $.work_dir %>/<% execution().id %> on-success: get_private_key on-error: node_update_failed get_private_key: action: tripleo.validations.get_privkey publish: private_key: <% task().result %> on-success: node_update node_update: action: tripleo.ansible-playbook input: inventory: <% $.inventory_file %> playbook: <% $.work_dir %>/<% execution().id %>/<% $.playbook %> remote_user: <% $.node_user %> become: true become_user: root verbosity: <% $.verbosity %> ssh_private_key: <% $.private_key %> extra_env_variables: <% $.ansible_extra_env_variables %> limit_hosts: <% $.nodes %> module_path: <% $.module_path %> queue_name: <% $.ansible_queue_name %> execution_id: <% execution().id %> skip_tags: <% $.skip_tags %> trash_output: true on-success: - node_update_passed: <% task().result.returncode = 0 %> - node_update_failed: <% task().result.returncode != 0 %> on-error: node_update_failed publish: output: <% task().result %> node_update_passed: on-success: notify_zaqar publish: status: SUCCESS message: Updated nodes - <% $.nodes %> node_update_failed: on-success: notify_zaqar publish: status: FAILED message: Failed to update nodes - <% $.nodes %>, please see the logs. notify_zaqar: action: zaqar.queue_post retry: count=5 delay=1 input: queue_name: <% $.ansible_queue_name %> messages: body: type: tripleo.package_update.v1.update_nodes payload: status: <% $.status %> execution: <% execution() %> on-success: - fail: <% $.get('status') = "FAILED" %> update_converge_plan: description: Take a container and perform the converge for minor update input: - container - queue_name: tripleo tags: - tripleo-common-managed tasks: remove_noop: action: tripleo.plan.remove_noop_deploystep input: container: <% $.container %> on-success: send_message on-error: set_update_failed set_update_failed: on-success: send_message publish: status: FAILED message: <% task(remove_noop).result %> send_message: action: zaqar.queue_post input: queue_name: <% $.queue_name %> messages: body: type: tripleo.package_update.v1.update_converge_plan payload: status: <% $.get('status', 'SUCCESS') %> message: <% $.get('message', '') %> execution: <% execution() %> on-success: - fail: <% $.get('status') = "FAILED" %> converge_upgrade_plan: description: Take a container and perform the converge step of a major upgrade input: - container - timeout: 240 - queue_name: tripleo - skip_deploy_identifier: False tags: - tripleo-common-managed tasks: remove_noop: action: tripleo.plan.remove_noop_deploystep input: container: <% $.container %> on-success: send_message on-error: set_update_failed set_update_failed: on-success: send_message publish: status: FAILED message: <% task(upgrade_converge).result %> send_message: action: zaqar.queue_post input: queue_name: <% $.queue_name %> messages: body: type: tripleo.major_upgrade.v1.converge_upgrade_plan payload: status: <% $.get('status', 'SUCCESS') %> message: <% $.get('message', '') %> execution: <% execution() %> on-success: - fail: <% $.get('status') = "FAILED" %> ffwd_upgrade_converge_plan: description: ffwd-upgrade converge removes DeploymentSteps no-op from plan input: - container - queue_name: tripleo tags: - tripleo-common-managed tasks: remove_noop: action: tripleo.plan.remove_noop_deploystep input: container: <% $.container %> on-success: send_message on-error: set_update_failed set_update_failed: on-success: send_message publish: status: FAILED message: <% task(remove_noop).result %> send_message: action: zaqar.queue_post input: queue_name: <% $.queue_name %> messages: body: type: tripleo.package_update.v1.ffwd_upgrade_converge_plan payload: status: <% $.get('status', 'SUCCESS') %> message: <% $.get('message', '') %> execution: <% execution() %> on-success: - fail: <% $.get('status') = "FAILED" %>