' The png image can be generated by running: ' ' plantuml fast_fw_upgrade.plantuml @startuml actor User participant Mistral participant Heat participant Ansible participant Nodes ' in newer versions of plantuml we should use: collections Nodes ' === FFWD-UPGRADE PREPARE === User -> Mistral : openstack overcloud\nffwd-upgrade prepare activate Mistral Mistral -> Mistral : plan update Mistral -> Heat : stack update activate Heat Heat --> Mistral deactivate Heat Mistral --> User deactivate Mistral ' === FFWD-UPGRADE RUN === User -> Mistral : openstack overcloud\nffwd-upgrade run activate Mistral note right of Heat * Operates on all overcloud nodes. * Intended usage: * On bootstrap nodes it shuts down services and performs upgrade to N+1 and N+2. * On other nodes it just shuts down services. end note Mistral -> Heat : query stack outputs activate Heat Heat --> Mistral : stack outputs deactivate Heat Mistral -> Mistral : generate playbooks Mistral -> Ansible : fast_forward_upgrade_playbook.yaml activate Ansible Ansible -> Nodes : fast_forward_upgrade_tasks\n(once per each release) activate Nodes Nodes --> Ansible deactivate Nodes Ansible -> Nodes : fast_forward_post_upgrade_tasks activate Nodes Nodes --> Ansible deactivate Nodes Ansible --> Mistral deactivate Ansible Mistral --> User : deactivate Mistral ' === UPGRADE RUN === User -> Mistral : openstack overcloud\nupgrade run activate Mistral note right of Heat * Reuse of the normal upgrade command. * Operates on all selected nodes in parallel. * Note the separate ansible-playbook invocations: facts aren't carried over between playbooks. * Intended usage: * Upgrades bootstrap nodes from N+2 to N+3. * Upgrades other nodes from N to N+3. end note Mistral -> Heat : query stack outputs activate Heat Heat --> Mistral : stack outputs deactivate Heat Mistral -> Mistral : generate playbooks Mistral -> Ansible : upgrade_steps_playbook.yaml activate Ansible Ansible -> Nodes : upgrade_tasks all steps activate Nodes Nodes --> Ansible deactivate Nodes Ansible --> Mistral deactivate Ansible Mistral -> Ansible : deploy_steps_playbook.yaml activate Ansible Ansible -> Nodes : host_prep_tasks activate Nodes Nodes --> Ansible deactivate Nodes Ansible -> Nodes : deploy_tasks all steps activate Nodes Nodes --> Ansible deactivate Nodes Ansible --> Mistral deactivate Ansible Mistral -> Ansible : post_upgrade_steps_playbook.yaml activate Ansible Ansible -> Nodes : post_upgrade_tasks all steps activate Nodes Nodes --> Ansible deactivate Nodes Ansible --> Mistral deactivate Ansible Mistral --> User : deactivate Mistral ' === FFWD-UPGRADE CONVERGE === User -> Mistral : openstack overcloud\nffwd-upgrade converge activate Mistral note right of Heat * Essentially the same as `overcloud deploy`, asserts that the state of overcloud matches the latest templates. end note Mistral -> Mistral : plan update Mistral -> Heat : stack update activate Heat Heat --> Mistral deactivate Heat Mistral -> Heat : query stack outputs activate Heat Heat --> Mistral : stack outputs deactivate Heat Mistral -> Mistral : generate playbooks Mistral -> Ansible : deploy_steps_playbook.yaml activate Ansible Ansible -> Nodes : host_prep_tasks activate Nodes Nodes --> Ansible deactivate Nodes Ansible -> Nodes : deploy_tasks and external_deploy_tasks\nall steps (interleaved) activate Nodes Nodes --> Ansible deactivate Nodes Ansible --> Mistral deactivate Ansible Mistral --> User : deactivate Mistral @enduml