)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"89395b384fd6a172635471063396f25dbbc13836","unresolved":true,"context_lines":[{"line_number":12,"context_line":"(and therefore always appears in desired_network_ids), but it is"},{"line_number":13,"context_line":"never added to net_vnic_type_map because it is not a member network."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"When the VIP network has not yet been plugged into the amphora it"},{"line_number":16,"context_line":"appears in add_ids, and the list comprehension that builds add_nics"},{"line_number":17,"context_line":"performs a bare dict lookup net_vnic_type_map[add_net_id].  This can"},{"line_number":18,"context_line":"result in an unhandled KeyError when a load balancer has no SR-IOV"},{"line_number":19,"context_line":"members (e.g. no members at all, or during initial amphora boot)."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Replace the bare lookup with dict.get() using VNIC_TYPE_NORMAL as the"},{"line_number":22,"context_line":"default.  VIP ports are always normal (non-SR-IOV), so this is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ea7af270_ec025839","line":19,"range":{"start_line":15,"start_character":0,"end_line":19,"end_character":65},"updated":"2026-05-13 08:05:31.000000000","message":"it\u0027s a bit messy here, the commit message is not accurate.\n\nIf the VIP network is also the management network, the network is not added to the network_to_nic_map dict, and that triggers the problem.\n\nThe patch appears to fix the KeyError exception but it also appears to have weird side effects:\n\nafter create a LB on lb-mgmt-net, adding a member on another subnet, then deleting the member, octavia keeps creating new interfaces on the managemnet network:\n\n```\nbash-5.2# ip -n amphora-haproxy a\n1: lo: \u003cLOOPBACK,UP,LOWER_UP\u003e mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000\n    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1/8 scope host lo\n       valid_lft forever preferred_lft forever\n3: eth1: \u003cBROADCAST,MULTICAST,UP,LOWER_UP\u003e mtu 1442 qdisc fq_codel state UP group default qlen 1000\n    link/ether fa:16:3e:1e:4c:c8 brd ff:ff:ff:ff:ff:ff\n    altname enp0s7\n    altname enxfa163e1e4cc8\n    inet 192.168.0.117/24 scope global eth1\n       valid_lft forever preferred_lft forever\n    inet 192.168.0.183/32 scope global eth1\n       valid_lft forever preferred_lft forever\n4: eth2: \u003cBROADCAST,MULTICAST,UP,LOWER_UP\u003e mtu 1442 qdisc fq_codel state UP group default qlen 1000\n    link/ether fa:16:3e:fe:ef:18 brd ff:ff:ff:ff:ff:ff\n    altname enp0s8\n    altname enxfa163efeef18\n    inet 192.168.0.3/24 scope global eth2\n       valid_lft forever preferred_lft forever\n    inet6 fe80::f816:3eff:fefe:ef18/64 scope link proto kernel_ll \n       valid_lft forever preferred_lft forever\n6: eth3: \u003cBROADCAST,MULTICAST,UP,LOWER_UP\u003e mtu 1442 qdisc fq_codel state UP group default qlen 1000\n    link/ether fa:16:3e:73:1f:ed brd ff:ff:ff:ff:ff:ff\n    altname enp0s10\n    altname enxfa163e731fed\n    inet 192.168.0.2/24 scope global eth3\n       valid_lft forever preferred_lft forever\n    inet6 fe80::f816:3eff:fe73:1fed/64 scope link proto kernel_ll \n       valid_lft forever preferred_lft forever\n```\n\nIn my devstack env with only 1 LB in Active-Standby, 7 IP addresses are consumed:\n\n```\n$ openstack port list --fixed-ip subnet\u003dlb-mgmt-subnet\n+--------------------------------------+--------------------------------------------------------+-------------------+------------------------------------------------------------------------------+--------+\n| ID                                   | Name                                                   | MAC Address       | Fixed IP Addresses                                                           | Status |\n+--------------------------------------+--------------------------------------------------------+-------------------+------------------------------------------------------------------------------+--------+\n| 096556d4-e1d3-4909-9664-3d683e68ce5a | octavia-health-manager-standalone-listen-port          | fa:16:3e:4a:8e:1b | ip_address\u003d\u0027192.168.0.93\u0027, subnet_id\u003d\u00278e3af031-2c45-494a-b9de-e1c040ef0975\u0027  | ACTIVE |\n| 22a3714e-e570-4b80-b53f-b7bda7e79bfa | octavia-lb-member-73c4130e-b1eb-4a9c-8c6a-f5d28f365bd9 | fa:16:3e:42:03:05 | ip_address\u003d\u0027192.168.0.148\u0027, subnet_id\u003d\u00278e3af031-2c45-494a-b9de-e1c040ef0975\u0027 | ACTIVE |\n| 5608f02f-6a85-4fe5-8a64-99be4c807c4a | octavia-lb-vrrp-73c4130e-b1eb-4a9c-8c6a-f5d28f365bd9   | fa:16:3e:aa:8f:43 | ip_address\u003d\u0027192.168.0.51\u0027, subnet_id\u003d\u00278e3af031-2c45-494a-b9de-e1c040ef0975\u0027  | ACTIVE |\n| 6a6a7f41-b7a8-4a4d-ac5b-8217ade81de7 | octavia-lb-member-29f4617c-6ad8-45a3-85e4-aba748f54f5d | fa:16:3e:73:1f:ed | ip_address\u003d\u0027192.168.0.2\u0027, subnet_id\u003d\u00278e3af031-2c45-494a-b9de-e1c040ef0975\u0027   | ACTIVE |\n| 70b92279-e890-44c5-8533-8f947f81fd9f |                                                        | fa:16:3e:a7:55:46 | ip_address\u003d\u0027192.168.0.105\u0027, subnet_id\u003d\u00278e3af031-2c45-494a-b9de-e1c040ef0975\u0027 | ACTIVE |\n| 735f52a3-458d-4d87-ad99-ea4144a2737a | octavia-lb-member-29f4617c-6ad8-45a3-85e4-aba748f54f5d | fa:16:3e:fe:ef:18 | ip_address\u003d\u0027192.168.0.3\u0027, subnet_id\u003d\u00278e3af031-2c45-494a-b9de-e1c040ef0975\u0027   | ACTIVE |\n| 77ad6005-4a9a-46c5-a0d3-039751dba322 |                                                        | fa:16:3e:52:70:0c | ip_address\u003d\u0027192.168.0.130\u0027, subnet_id\u003d\u00278e3af031-2c45-494a-b9de-e1c040ef0975\u0027 | ACTIVE |\n| 7dd8a8d7-ebea-4885-a81b-097aebf4c586 | octavia-lb-25ce2873-0364-4f90-8820-87aa1bbd3148        | fa:16:3e:6b:74:d7 | ip_address\u003d\u0027192.168.0.183\u0027, subnet_id\u003d\u00278e3af031-2c45-494a-b9de-e1c040ef0975\u0027 | DOWN   |\n| 9ae5a6e0-c484-4be5-8295-ea58950d4edd | octavia-lb-vrrp-29f4617c-6ad8-45a3-85e4-aba748f54f5d   | fa:16:3e:1e:4c:c8 | ip_address\u003d\u0027192.168.0.117\u0027, subnet_id\u003d\u00278e3af031-2c45-494a-b9de-e1c040ef0975\u0027 | ACTIVE |\n| f353607b-6780-4468-9663-a401cb750c83 | octavia-lb-member-73c4130e-b1eb-4a9c-8c6a-f5d28f365bd9 | fa:16:3e:82:81:b2 | ip_address\u003d\u0027192.168.0.173\u0027, subnet_id\u003d\u00278e3af031-2c45-494a-b9de-e1c040ef0975\u0027 | ACTIVE |\n+--------------------------------------+--------------------------------------------------------+-------------------+------------------------------------------------------------------------------+--------+\n```\n\nIMHO the patch doesn\u0027t take the right approach, it needs a special handling for the management network.","commit_id":"334ca2bfc73ed94fd16533c84056d0de45e4fcf4"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"cb5eb3a5d79c2e9166619d37d02396867e861551","unresolved":true,"context_lines":[{"line_number":12,"context_line":"(and therefore always appears in desired_network_ids), but it is"},{"line_number":13,"context_line":"never added to net_vnic_type_map because it is not a member network."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"When the VIP network has not yet been plugged into the amphora it"},{"line_number":16,"context_line":"appears in add_ids, and the list comprehension that builds add_nics"},{"line_number":17,"context_line":"performs a bare dict lookup net_vnic_type_map[add_net_id].  This can"},{"line_number":18,"context_line":"result in an unhandled KeyError when a load balancer has no SR-IOV"},{"line_number":19,"context_line":"members (e.g. no members at all, or during initial amphora boot)."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Replace the bare lookup with dict.get() using VNIC_TYPE_NORMAL as the"},{"line_number":22,"context_line":"default.  VIP ports are always normal (non-SR-IOV), so this is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"f48eb6d0_f5f33a07","line":19,"range":{"start_line":15,"start_character":0,"end_line":19,"end_character":65},"in_reply_to":"ea7af270_ec025839","updated":"2026-05-14 14:29:16.000000000","message":"This should be resolved now","commit_id":"334ca2bfc73ed94fd16533c84056d0de45e4fcf4"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"0531f262a2f61f7edc09f2ebeb97fce2691da6a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f03b1c63_eb946f9f","updated":"2026-08-17 14:52:17.000000000","message":"recheck getting new logs","commit_id":"84a0e81cb75020bcec65b423d49a14206b2a8486"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"65660410cd247f17e449c80720364541e79eca18","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"7e925406_d6606501","updated":"2026-05-15 09:34:45.000000000","message":"retest - pip install failed on one of the runners","commit_id":"84a0e81cb75020bcec65b423d49a14206b2a8486"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"ff791659f17624010b8164a95d72f92c46b3ae85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d9355d80_dd9a3ad0","updated":"2026-08-17 15:30:52.000000000","message":"so I tried:\n\n```\nopenstack loadbalancer create --vip-subnet-id lb-mgmt-subnet --name lb1\nopenstack loadbalancer listener create --protocol http --protocol-port 80 --name listener1 lb1\nopenstack loadbalancer pool create --lb-algorithm round_robin --protocol http --listener listener1 --name pool1\nopenstack loadbalancer member create --address 172.24.4.1 --protocol-port 80 --name member1 --subnet public-subnet pool1\n```\n\nit fails because the network id is not part of the added interfaces:\n\n```\nAug 17 17:25:31 nuc1 octavia-worker[4057470]: 4 predecessors (most recent first):\nAug 17 17:25:31 nuc1 octavia-worker[4057470]:   Atom \u0027octavia.controller.worker.v2.tasks.network_tasks.CalculateDelta\u0027 {\u0027intention\u0027: \u0027EXECUTE\u0027, \u0027state\u0027: \u0027SUCCESS\u0027, \u0027requires\u0027: {\u0027loadbalancer\u0027: {\u0027admin_state_up\u0027: True, \u0027description\u0027: None\u003e\nAug 17 17:25:31 nuc1 octavia-worker[4057470]:   |__Atom \u0027octavia.controller.worker.v2.tasks.database_tasks.MarkMemberPendingCreateInDB\u0027 {\u0027intention\u0027: \u0027EXECUTE\u0027, \u0027state\u0027: \u0027SUCCESS\u0027, \u0027requires\u0027: {\u0027member\u0027: {\u0027address\u0027: \u0027172.24.4.1\u0027, \u0027admin_\u003e\nAug 17 17:25:31 nuc1 octavia-worker[4057470]:      |__Atom \u0027octavia.controller.worker.v2.tasks.lifecycle_tasks.MemberToErrorOnRevertTask\u0027 {\u0027intention\u0027: \u0027EXECUTE\u0027, \u0027state\u0027: \u0027SUCCESS\u0027, \u0027requires\u0027: {\u0027member\u0027: {\u0027address\u0027: \u0027172.24.4.1\u0027, \u0027admi\u003e\nAug 17 17:25:31 nuc1 octavia-worker[4057470]:         |__Flow \u0027octavia-create-member-flow\u0027: KeyError: \u0027201bb061-95b6-4250-afcb-59190873364f\u0027\nAug 17 17:25:31 nuc1 octavia-worker[4057470]: ERROR octavia.common.base_taskflow Traceback (most recent call last):\nAug 17 17:25:31 nuc1 octavia-worker[4057470]: ERROR octavia.common.base_taskflow   File \"/opt/stack/taskflow/taskflow/engines/action_engine/executor.py\", line 50, in _execute_task\nAug 17 17:25:31 nuc1 octavia-worker[4057470]: ERROR octavia.common.base_taskflow     result \u003d task.execute(**arguments)\nAug 17 17:25:31 nuc1 octavia-worker[4057470]: ERROR octavia.common.base_taskflow              ^^^^^^^^^^^^^^^^^^^^^^^^^\nAug 17 17:25:31 nuc1 octavia-worker[4057470]: ERROR octavia.common.base_taskflow   File \"/opt/stack/octavia/octavia/controller/worker/v2/tasks/network_tasks.py\", line 464, in execute\nAug 17 17:25:31 nuc1 octavia-worker[4057470]: ERROR octavia.common.base_taskflow     ret \u003d handle_delta.execute(amphorae[amp_id].to_dict(), delta)\nAug 17 17:25:31 nuc1 octavia-worker[4057470]: ERROR octavia.common.base_taskflow           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nAug 17 17:25:31 nuc1 octavia-worker[4057470]: ERROR octavia.common.base_taskflow   File \"/opt/stack/octavia/octavia/controller/worker/v2/tasks/network_tasks.py\", line 357, in execute\nAug 17 17:25:31 nuc1 octavia-worker[4057470]: ERROR octavia.common.base_taskflow     updated_ports[network_id][constants.ID])\nAug 17 17:25:31 nuc1 octavia-worker[4057470]: ERROR octavia.common.base_taskflow     ~~~~~~~~~~~~~^^^^^^^^^^^^\nAug 17 17:25:31 nuc1 octavia-worker[4057470]: ERROR octavia.common.base_taskflow KeyError: \u0027201bb061-95b6-4250-afcb-59190873364f\u0027\nAug 17 17:25:31 nuc1 octavia-worker[4057470]: ERROR octavia.common.base_taskflow \n```\n\nTBH I\u0027m not sure this is the right way, maybe we better abandon this patch and fix it at the API level, by denying the creation of LB on the management network/subnets","commit_id":"84a0e81cb75020bcec65b423d49a14206b2a8486"}]}
