' The png image can be generated by running: ' ' plantuml minor_update.plantuml @startuml actor User participant Mistral participant Heat participant Ansible participant Nodes ' in newer versions of plantuml we should use: collections Nodes ' === UPDATE PREPARE === User -> Mistral : openstack overcloud\nupdate prepare activate Mistral Mistral -> Mistral : plan update Mistral -> Heat : stack update activate Heat Heat --> Mistral deactivate Heat Mistral --> User deactivate Mistral ' === UPDATE RUN === User -> Mistral : openstack overcloud\nupdate run activate Mistral note right of Heat * Operates on all selected nodes one-by-one. end note Mistral -> Heat : query stack outputs activate Heat Heat --> Mistral : stack outputs deactivate Heat Mistral -> Mistral : generate playbooks Mistral -> Ansible : update_steps_playbook.yaml activate Ansible Ansible -> Nodes : update_tasks all steps activate Nodes Nodes --> Ansible deactivate Nodes Ansible -> Nodes : host_prep_tasks all steps activate Nodes Nodes --> Ansible deactivate Nodes Ansible -> Nodes : common_deploy_tasks all steps activate Nodes Nodes --> Ansible deactivate Nodes Ansible -> Nodes : post_update_tasks all steps activate Nodes Nodes --> Ansible deactivate Nodes Ansible --> Mistral deactivate Ansible Mistral --> User : deactivate Mistral ' === EXTERNAL UPDATE RUN === User -> Mistral : openstack overcloud\nexternal-update run activate Mistral note right of Heat * Executes tasks on undercloud, but can affect overcloud via delegation or nested Ansible process. * Single play: facts are carried over between update and deploy tasks. * Often limited via `--tags` to perform a particular update task or an update of a particular service. * Can be executed before `update run` for some tasks. end note Mistral -> Heat : query stack outputs activate Heat Heat --> Mistral : stack outputs deactivate Heat Mistral -> Mistral : generate playbooks Mistral -> Ansible : external_update_steps_playbook.yaml activate Ansible Ansible -> Nodes : external_update_tasks all steps activate Nodes Nodes --> Ansible deactivate Nodes Ansible -> Nodes : external_deploy_tasks all steps activate Nodes Nodes --> Ansible deactivate Nodes Ansible --> Mistral deactivate Ansible Mistral --> User : deactivate Mistral ' === UPDATE CONVERGE === User -> Mistral : openstack overcloud\nupdate 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