From 991d990d5f6d19d3e573cf69a1370efdda9dcfdd Mon Sep 17 00:00:00 2001 From: Lukas Bezdicka Date: Wed, 16 Sep 2020 14:09:40 +0200 Subject: [PATCH] [train-only] Fix unhealthy ovn_metadata_agent during hybrid state The ovn_metadata_agent does not know yet about changed ovndb VIP. We have to update this setting in hybrid state and restart the container. Change-Id: Ib0698dde545bd0b029c3cdf4d8e56dd4aead43ec Resolves: rhbz#1873742 --- .../ovn/ovn-controller-container-puppet.yaml | 7 +++-- .../ovn/ovn-metadata-container-puppet.yaml | 27 ++++++++++++++++++- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/deployment/ovn/ovn-controller-container-puppet.yaml b/deployment/ovn/ovn-controller-container-puppet.yaml index 9f4b1de35f..83e3e7266e 100644 --- a/deployment/ovn/ovn-controller-container-puppet.yaml +++ b/deployment/ovn/ovn-controller-container-puppet.yaml @@ -305,7 +305,10 @@ outputs: shell: | ovs-vsctl get open . external_ids:ovn-remote register: ovn_remote + - name: Set fact - OVN SB connection string + set_fact: + ovn_sb_conn_str: "{{ [enable_internal_tls | bool | ternary('ssl','tcp'), ovn_dbs_vip | ipwrap, service_configs['ovn::southbound::port']] | join(':') }}" - name: Set new ovn remote setting shell: | - ovs-vsctl set open . external_ids:ovn-remote="tcp:{{ ovn_dbs_vip | ipwrap }}:6642" - when: ovn_dbs_vip not in ovn_remote.stdout + ovs-vsctl set open . external_ids:ovn-remote="{{ ovn_sb_conn_str }}" + when: ovn_sb_conn_str not in ovn_remote.stdout diff --git a/deployment/ovn/ovn-metadata-container-puppet.yaml b/deployment/ovn/ovn-metadata-container-puppet.yaml index 02d146c22b..896a860067 100644 --- a/deployment/ovn/ovn-metadata-container-puppet.yaml +++ b/deployment/ovn/ovn-metadata-container-puppet.yaml @@ -366,4 +366,29 @@ outputs: dest: /var/lib/neutron/kill_scripts/haproxy-kill mode: 0755 content: {get_file: ../neutron/kill-script} - upgrade_tasks: [] + upgrade_tasks: + - name: Switch ovn remote setting + tags: + - never + - nova_hybrid_state + when: step|int == 0 + block: + - name: Get ovn remote setting in networking-ovn-metadata-agent.ini + shell: | + crudini --get /var/lib/config-data/puppet-generated/neutron/etc/neutron/plugins/networking-ovn/networking-ovn-metadata-agent.ini ovn ovn_sb_connection + register: ovn_remote + - name: Set fact - OVN SB connection string + set_fact: + ovn_sb_conn_str: "{{ [enable_internal_tls | bool | ternary('ssl','tcp'), ovn_dbs_vip | ipwrap, service_configs['ovn::southbound::port']] | join(':') }}" + - name: Set new ovn remote setting in networking-ovn-metadata-agent.ini + shell: | + crudini --set /var/lib/config-data/puppet-generated/neutron/etc/neutron/plugins/networking-ovn/networking-ovn-metadata-agent.ini ovn ovn_sb_connection "{{ ovn_sb_conn_str }}" + when: ovn_sb_conn_str not in ovn_remote.stdout + - name: Restart ovn_metadata_agent container to apply change in networking-ovn-metadata-agent.ini + docker_container: + name: ovn_metadata_agent + state: started + restart: True + comparisons: + '*': ignore + when: ovn_sb_conn_str not in ovn_remote.stdout