Broken creation of second bridge in ovs if user configured

Bug #2056332 reported by Michal Arbet
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
kolla-ansible
Fix Released
Undecided
Unassigned

Bug Description

Hi,

During development I found in my dev env with master kolla images provisioned by master kolla-ansible container really ugly bug :)

.
.
.
.

RUNNING HANDLER [openvswitch : Waiting for openvswitch_db service to be ready] ************************************************************************************************************************************
ok: [controller1]
ok: [controller0]
ok: [controller2]
ok: [compute0]
ok: [compute1]

RUNNING HANDLER [openvswitch : Restart openvswitch-vswitchd container] ********************************************************************************************************************************************
changed: [controller0]
changed: [controller1]
changed: [controller2]
changed: [compute0]
changed: [compute1]

TASK [openvswitch : Set system-id and hw-offload] *****************************************************************************************************************************************************************
changed: [controller1] => (item={'col': 'external_ids', 'name': 'system-id', 'value': 'controller1'})
changed: [controller2] => (item={'col': 'external_ids', 'name': 'system-id', 'value': 'controller2'})
changed: [controller0] => (item={'col': 'external_ids', 'name': 'system-id', 'value': 'controller0'})
changed: [compute0] => (item={'col': 'external_ids', 'name': 'system-id', 'value': 'compute0'})
changed: [compute1] => (item={'col': 'external_ids', 'name': 'system-id', 'value': 'compute1'})
changed: [controller1] => (item={'col': 'external_ids', 'name': 'hostname', 'value': 'controller1'})
changed: [compute1] => (item={'col': 'external_ids', 'name': 'hostname', 'value': 'compute1'})
changed: [compute0] => (item={'col': 'external_ids', 'name': 'hostname', 'value': 'compute0'})
changed: [controller2] => (item={'col': 'external_ids', 'name': 'hostname', 'value': 'controller2'})
changed: [controller0] => (item={'col': 'external_ids', 'name': 'hostname', 'value': 'controller0'})
ok: [compute1] => (item={'col': 'other_config', 'name': 'hw-offload', 'value': True, 'state': 'absent'})
ok: [controller1] => (item={'col': 'other_config', 'name': 'hw-offload', 'value': True, 'state': 'absent'})
ok: [compute0] => (item={'col': 'other_config', 'name': 'hw-offload', 'value': True, 'state': 'absent'})
ok: [controller2] => (item={'col': 'other_config', 'name': 'hw-offload', 'value': True, 'state': 'absent'})
ok: [controller0] => (item={'col': 'other_config', 'name': 'hw-offload', 'value': True, 'state': 'absent'})

TASK [openvswitch : Ensuring OVS bridge is properly setup] ********************************************************************************************************************************************************
changed: [controller1] => (item=['br-ex', 'br-ex2'])
changed: [compute0] => (item=['br-ex', 'br-ex2'])
changed: [controller0] => (item=['br-ex', 'br-ex2'])
changed: [compute1] => (item=['br-ex', 'br-ex2'])
changed: [controller2] => (item=['br-ex', 'br-ex2'])

TASK [openvswitch : Ensuring OVS ports are properly setup] ********************************************************************************************************************************************************
changed: [controller0] => (item=['br-ex', 'external'])
changed: [controller1] => (item=['br-ex', 'external'])
changed: [compute0] => (item=['br-ex', 'external'])
changed: [compute1] => (item=['br-ex', 'external'])
changed: [controller2] => (item=['br-ex', 'external'])
failed: [controller1] (item=['br-ex2', 'octavia']) => {"action": "openvswitch_port", "ansible_loop_var": "item", "changed": false, "cmd": "/usr/bin/ovs-vsctl -t 5 list-ports br-ex2", "item": ["br-ex2", "octavia"], "msg": "ovs-vsctl: no bridge named br-ex2", "rc": 1, "stderr": "ovs-vsctl: no bridge named br-ex2\n", "stderr_lines": ["ovs-vsctl: no bridge named br-ex2"], "stdout": "", "stdout_lines": []}
failed: [controller0] (item=['br-ex2', 'octavia']) => {"action": "openvswitch_port", "ansible_loop_var": "item", "changed": false, "cmd": "/usr/bin/ovs-vsctl -t 5 list-ports br-ex2", "item": ["br-ex2", "octavia"], "msg": "ovs-vsctl: no bridge named br-ex2", "rc": 1, "stderr": "ovs-vsctl: no bridge named br-ex2\n", "stderr_lines": ["ovs-vsctl: no bridge named br-ex2"], "stdout": "", "stdout_lines": []}
failed: [compute1] (item=['br-ex2', 'octavia']) => {"action": "openvswitch_port", "ansible_loop_var": "item", "changed": false, "cmd": "/usr/bin/ovs-vsctl -t 5 list-ports br-ex2", "item": ["br-ex2", "octavia"], "msg": "ovs-vsctl: no bridge named br-ex2", "rc": 1, "stderr": "ovs-vsctl: no bridge named br-ex2\n", "stderr_lines": ["ovs-vsctl: no bridge named br-ex2"], "stdout": "", "stdout_lines": []}
failed: [compute0] (item=['br-ex2', 'octavia']) => {"action": "openvswitch_port", "ansible_loop_var": "item", "changed": false, "cmd": "/usr/bin/ovs-vsctl -t 5 list-ports br-ex2", "item": ["br-ex2", "octavia"], "msg": "ovs-vsctl: no bridge named br-ex2", "rc": 1, "stderr": "ovs-vsctl: no bridge named br-ex2\n", "stderr_lines": ["ovs-vsctl: no bridge named br-ex2"], "stdout": "", "stdout_lines": []}
failed: [controller2] (item=['br-ex2', 'octavia']) => {"action": "openvswitch_port", "ansible_loop_var": "item", "changed": false, "cmd": "/usr/bin/ovs-vsctl -t 5 list-ports br-ex2", "item": ["br-ex2", "octavia"], "msg": "ovs-vsctl: no bridge named br-ex2", "rc": 1, "stderr": "ovs-vsctl: no bridge named br-ex2\n", "stderr_lines": ["ovs-vsctl: no bridge named br-ex2"], "stdout": "", "stdout_lines": []}

PLAY RECAP ********************************************************************************************************************************************************************************************************
ceph0 : ok=3 changed=0 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
ceph1 : ok=3 changed=0 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
ceph2 : ok=3 changed=0 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
compute0 : ok=16 changed=9 unreachable=0 failed=1 skipped=5 rescued=0 ignored=0
compute1 : ok=16 changed=9 unreachable=0 failed=1 skipped=5 rescued=0 ignored=0
controller0 : ok=16 changed=9 unreachable=0 failed=1 skipped=5 rescued=0 ignored=0
controller1 : ok=16 changed=9 unreachable=0 failed=1 skipped=5 rescued=0 ignored=0
controller2 : ok=16 changed=9 unreachable=0 failed=1 skipped=5 rescued=0 ignored=0
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0

(kolla-ansible)[root]# egrep -ri 'neutron_external_interface:|neutron_bridge_name:' /etc/kolla/
/etc/kolla/globals.yml:neutron_external_interface: "external,octavia"
/etc/kolla/globals.yml:neutron_bridge_name: "br-ex,br-ex2"

Simply said, second bridge is not created.

I will send a fix

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to kolla-ansible (master)
Changed in kolla-ansible:
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to kolla-ansible (master)

Reviewed: https://review.opendev.org/c/openstack/kolla-ansible/+/911591
Committed: https://opendev.org/openstack/kolla-ansible/commit/8c760d38a0d7708a2b478f79725411b64c4bb73f
Submitter: "Zuul (22348)"
Branch: master

commit 8c760d38a0d7708a2b478f79725411b64c4bb73f
Author: Michal Arbet <email address hidden>
Date: Wed Mar 6 16:15:42 2024 +0100

    Fix creation of ovs bridges

    This patch fixes the creation of the openvswitch
    bridge by fixing an ansible task that was rewritten
    to use an ansible module, but unfortunately, its loop
    was implemented incorrectly.

    Closes-Bug: #2056332
    Change-Id: Ia55a36c0f9b122b72d757ca973e7d8f76ae84344

Changed in kolla-ansible:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.