- async: 600 become: true containers.podman.podman_image: force: true name: registry.redhat.io/rhosp-rhel9/openstack-ovn-controller:17.1 validate_certs: false delegate_to: '{{ item }}' loop: '{{ groups[''ovn_controller''] | difference(groups[''excluded_overcloud'']) }}' name: Force pull image in case image name doesn't change. poll: 0 register: ovn_controller_image_update tags: - ovn - ovn_image when: step|int == 1 - async_status: jid: '{{ async_result_item.ansible_job_id }}' become: true delay: 1 delegate_to: '{{ async_result_item.item }}' loop: '{{ovn_controller_image_update.results }}' loop_control: loop_var: async_result_item name: Was the ovn_controller image pull successful. register: async_poll_results retries: 600 tags: - ovn - ovn_image until: async_poll_results.finished when: - step|int == 1 - '''results'' in ovn_controller_image_update' - debug: msg: ovn container will be using {{ image }} name: OVN Container image used tags: ovn vars: image: registry.redhat.io/rhosp-rhel9/openstack-ovn-controller:17.1 when: step|int == 1 - async: 600 become: true delegate_to: '{{ item }}' loop: '{{ groups[''ovn_controller''] | difference(groups[''excluded_overcloud'']) }}' name: Update OVN OVS related parameters before update. poll: 0 register: ovs_vsctl shell: 'set -e ovs-vsctl set Open_vSwitch . external_ids:ovn-ofctrl-wait-before-clear={{ timeout }} ovs-vsctl set Open_vSwitch . external_ids:ovn-monitor-all=true ovs-vsctl set Open_vSwitch . external_ids:ovn-match-northd-version=false ' tags: - ovn vars: timeout: 8000 when: - step|int == 1 - async_status: jid: '{{ async_result_item.ansible_job_id }}' become: true delay: 1 delegate_to: '{{ async_result_item.item }}' loop: '{{ovs_vsctl.results }}' loop_control: loop_var: async_result_item name: Was the update of OVN OVS related parameter successful. register: async_poll_results retries: 600 tags: - ovn until: async_poll_results.finished when: - step|int == 1 - '''results'' in ovs_vsctl' - set_fact: any_ovn_host: '{{groups[''ovn_controller''] | difference(groups[''excluded_overcloud'']) | first }}' tags: ovn when: step|int == 1 - become: true delegate_to: '{{ any_ovn_host }}' find: paths: /var/lib/tripleo-config/container-startup-config/ patterns: '*ovn_controller.json' recurse: true name: Find ovn_controller configs in container-startup-configs register: ovn_cont_17_0 tags: - ovn when: (step|int == 1) and (any_ovn_host is defined) and (any_ovn_host|length > 0) - name: get directory path from the ovn_cont_17_0 set_fact: ovn_config_path: '{{ ovn_cont_17_0.files.0.path | dirname }}' tags: ovn when: step|int == 1 - become: true delegate_to: '{{ item }}' loop: '{{ groups[''ovn_controller''] | difference(groups[''excluded_overcloud'']) }}' name: Get PIDfile used by systemd on each ovn node register: pidfile shell: 'set -e grep PID /etc/systemd/system/tripleo_ovn_controller.service | cut -d= -f2 ' tags: - ovn when: - step|int == 1 - async: 600 become: true delegate_to: '{{ item }}' loop: '{{ groups[''ovn_controller''] | difference(groups[''excluded_overcloud'']) }}' name: Update ovn_controller. poll: 0 register: ovn_controller_update tags: ovn tripleo_container_manage: config_dir: '{{ ovn_config_path }}' config_id: - tripleo_step{{config_step}} config_overrides: .*ovn_controller: conmon_pidfile: '{{ pidfile | json_query(query) | first }}' image: registry.redhat.io/rhosp-rhel9/openstack-ovn-controller:17.1 name: ovn_controller config_patterns: '*ovn_controller.json' debug: '{{ enable_debug | bool }}' log_base_path: '{{ container_log_stdout_path }}' vars: config_step: '{{ (''step_4'' in ovn_config_path) | ternary(''4'', ''3'')}}' query: results[?item == '{{item}}'].stdout when: step|int == 1 - async_status: jid: '{{ async_result_item.ansible_job_id }}' become: true delay: 1 delegate_to: '{{ async_result_item.item }}' loop: '{{ovn_controller_update.results }}' loop_control: loop_var: async_result_item name: Was the ovn_controller successful. register: async_poll_results retries: 600 tags: ovn until: async_poll_results.finished when: - step|int == 1 - '''results'' in ovn_controller_update' - name: Pause for 30s to give ovn_controllers time to reconnect to dbs tags: ovn wait_for: timeout: 30 when: - step|int == 1 - become: true delegate_to: '{{ item }}' failed_when: false loop: '{{ groups[''ovn_metadata''] | difference(groups[''excluded_overcloud'']) }}' name: Check if python3-openvswitch3.1 workaround is needed register: metadata_python_ovs_3_1 shell: 'if podman exec ovn_metadata_agent rpm -q python3-openvswitch3.1 > /dev/null ; then echo REQUIRED; else echo OK ; fi ' tags: - ovn - ovn_image when: step|int == 1 - block: - async: 600 become: true containers.podman.podman_image: force: true name: registry.redhat.io/rhosp-rhel9/openstack-neutron-metadata-agent-ovn:17.1 validate_certs: false delegate_to: '{{ item }}' loop: '{{ hosts_to_update_metadata }}' name: Force pull image in case image name doesn't change. poll: 0 register: ovn_metadata_image_update - async_status: jid: '{{ async_result_item.ansible_job_id }}' become: true delay: 1 delegate_to: '{{ async_result_item.item }}' loop: '{{ovn_metadata_image_update.results }}' loop_control: loop_var: async_result_item name: Was the ovn_metadata_agent image pull successful. register: async_poll_results retries: 600 until: async_poll_results.finished when: - '''results'' in ovn_metadata_image_update' - async: 600 become: true delegate_to: '{{ item }}' loop: '{{ hosts_to_update_metadata }}' name: Now rotate all ovn_metadata_agents poll: 0 tags: - ovn_metadata_parallel tripleo_container_manage: config_dir: /var/lib/tripleo-config/container-startup-config/step_4 config_id: - ovn_metadata_agent config_overrides: .*ovn_metadata_agent: image: registry.redhat.io/rhosp-rhel9/openstack-neutron-metadata-agent-ovn:17.1 name: ovn_metadata_agent config_patterns: '*ovn_metadata_agent.json' name: Update ovn_metadata_agents tags: - ovn - ovn_image vars: hosts_to_update_metadata: '{{ metadata_python_ovs_3_1.results | selectattr(''stdout'', ''eq'', ''REQUIRED'') | map(attribute=''item'') | list }}' when: - step|int == 1 - hosts_to_update_metadata | length > 0 - become: true delegate_to: '{{ item }}' loop: '{{ hosts_to_update_metadata }}' loop_control: pause: 1 name: Now rotate all ovn_metadata_agents tags: - never - ovn_metadata_serial tripleo_container_manage: config_dir: /var/lib/tripleo-config/container-startup-config/step_4 config_id: - ovn_metadata_agent config_overrides: .*ovn_metadata_agent: image: registry.redhat.io/rhosp-rhel9/openstack-neutron-metadata-agent-ovn:17.1 name: ovn_metadata_agent config_patterns: '*ovn_metadata_agent.json' vars: hosts_to_update_metadata: '{{ metadata_python_ovs_3_1.results | selectattr(''stdout'', ''eq'', ''REQUIRED'') | map(attribute=''item'') | list }}' when: - step|int == 1 - hosts_to_update_metadata | length > 0