Description of problem: The following commands are used to remove routers created during BGP tests: for r in $(openstack router list -c ID -f value) do for sn in $(openstack router show -c interfaces_info -f json $r | jq -r -c '.[\"interfaces_info\"] | .[][\"subnet_id\"]') do openstack router remove subnet $r $sn done done openstack router list -c ID -f value | xargs openstack router delete The routers are successfully deleted, but the ovn-bgp-agent throws the following exception: 2022-11-10T14:40:18.925755643+00:00 stdout F 2022-11-10 14:40:18.925 99396 DEBUG ovsdbapp.backend.ovs_idl.event [-] Matched DELETE: SubnetRouterDetachedEvent(events=('delete',), table='Port_Binding', conditions=None, old_conditions=None) to row=Port_Binding(mac=['fa:16:3e:52:13:d2 172.24.100.204/24 2001:db8::f816:3eff:fe52:13d2/64'], nat_addresses=[], type=patch, virtual_parent=[], up=[False], options={}, parent_port=[], ha_chassis_group=[], external_ids={'neutron:network_name': 'neutron-86ed3f19-ff19-4b6c-8fe4-a90510d1116d', 'neutron:revision_number': '12', 'neutron:router_name': '89f647d5-82a0-4f50-9b8a-8fc6a5ae0765', 'neutron:subnet_ids': 'ded59e53-a860-45b7-af10-1f85f7e994af b2318df1-f8da-4ba8-939b-addd8c8bd61b'}, tag=[], encap=[], chassis=[], datapath=<ovs.db.data.Atom object at 0x7f5c502d7fd0>, gateway_chassis=[], tunnel_key=1, logical_port=lrp-03723ac6-40a0-4ba9-9c8e-d99057e79b6a, requested_chassis=[]) old= matches /usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/event.py:43^[[00m 2022-11-10T14:40:18.926299573+00:00 stdout F 2022-11-10 14:40:18.926 99396 DEBUG ovsdbapp.backend.ovs_idl.event [-] Matched DELETE: TenantPortDeletedEvent(events=('update', 'delete'), table='Port_Binding', conditions=None, old_conditions=None) to row=Port_Binding(mac=['fa:16:3e:52:13:d2 172.24.100.204/24 2001:db8::f816:3eff:fe52:13d2/64'], nat_addresses=[], type=patch, virtual_parent=[], up=[False], options={}, parent_port=[], ha_chassis_group=[], external_ids={'neutron:network_name': 'neutron-86ed3f19-ff19-4b6c-8fe4-a90510d1116d', 'neutron:revision_number': '12', 'neutron:router_name': '89f647d5-82a0-4f50-9b8a-8fc6a5ae0765', 'neutron:subnet_ids': 'ded59e53-a860-45b7-af10-1f85f7e994af b2318df1-f8da-4ba8-939b-addd8c8bd61b'}, tag=[], encap=[], chassis=[], datapath=<ovs.db.data.Atom object at 0x7f5c502d7070>, gateway_chassis=[], tunnel_key=1, logical_port=lrp-03723ac6-40a0-4ba9-9c8e-d99057e79b6a, requested_chassis=[]) old= matches /usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/event.py:43^[[00m 2022-11-10T14:40:18.926895483+00:00 stdout F 2022-11-10 14:40:18.926 99396 DEBUG ovsdbapp.backend.ovs_idl.event [-] Matched DELETE: TenantPortDeletedEvent(events=('update', 'delete'), table='Port_Binding', conditions=None, old_conditions=None) to row=Port_Binding(mac=['fa:16:3e:52:13:d2 172.24.100.204/24 2001:db8::f816:3eff:fe52:13d2/64'], nat_addresses=[], type=chassisredirect, virtual_parent=[], up=[True], options={'distributed-port': 'lrp-03723ac6-40a0-4ba9-9c8e-d99057e79b6a', 'always-redirect': 'true'}, parent_port=[], external_ids={'neutron:network_name': 'neutron-86ed3f19-ff19-4b6c-8fe4-a90510d1116d', 'neutron:revision_number': '12', 'neutron:router_name': '89f647d5-82a0-4f50-9b8a-8fc6a5ae0765', 'neutron:subnet_ids': 'ded59e53-a860-45b7-af10-1f85f7e994af b2318df1-f8da-4ba8-939b-addd8c8bd61b'}, tag=[], encap=[], chassis=[<ovs.db.idl.Row object at 0x7f5c515d3340>], datapath=<ovs.db.data.Atom object at 0x7f5c502d7d00>, gateway_chassis=[], tunnel_key=2, logical_port=cr-lrp-03723ac6-40a0-4ba9-9c8e-d99057e79b6a, requested_chassis=[]) old= matches /usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/event.py:43^[[00m 2022-11-10T14:40:18.927299472+00:00 stdout F 2022-11-10 14:40:18.927 99396 DEBUG oslo_concurrency.lockutils [-] Lock "bgp" acquired by "ovn_bgp_agent.drivers.openstack.ovn_bgp_driver.OVNBGPDriver.withdraw_subnet" :: waited 0.000s inner /usr/lib/python3.9/site-packages/oslo_concurrency/lockutils.py:355^[[00m 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command [-] Error executing command (DbFindCommand): ValueError: Column type and condition operand do not match 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command Traceback (most recent call last): 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command File "/usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/command.py", line 39, in execute 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command self.run_idl(None) 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command File "/usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/command.py", line 314, in run_idl 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command self.result = [ 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command File "/usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/command.py", line 319, in <listcomp> 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command for r in rows if idlutils.row_match(r, self.conditions) 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command File "/usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/idlutils.py", line 412, in row_match 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command return all(condition_match(row, cond) for cond in conditions) 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command File "/usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/idlutils.py", line 412, in <genexpr> 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command return all(condition_match(row, cond) for cond in conditions) 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command File "/usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/idlutils.py", line 359, in condition_match 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command raise ValueError( 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command ValueError: Column type and condition operand do not match 2022-11-10T14:40:18.929277381+00:00 stdout F 2022-11-10 14:40:18.928 99396 ERROR ovsdbapp.backend.ovs_idl.command ^[[00m 2022-11-10T14:40:18.929389279+00:00 stdout F 2022-11-10 14:40:18.929 99396 DEBUG oslo_concurrency.lockutils [-] Lock "bgp" released by "ovn_bgp_agent.drivers.openstack.ovn_bgp_driver.OVNBGPDriver.withdraw_subnet" :: held 0.002s inner /usr/lib/python3.9/site-packages/oslo_concurrency/lockutils.py:367^[[00m 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event [-] Unexpected exception in notify_loop: ValueError: Column type and condition operand do not match 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event Traceback (most recent call last): 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event File "/usr/lib/python3.9/site-packages/ovsdbapp/event.py", line 159, in notify_loop 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event match.run(event, row, updates) 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event File "/usr/lib/python3.9/site-packages/ovn_bgp_agent/drivers/openstack/watchers/bgp_watcher.py", line 206, in run 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event self.agent.withdraw_subnet(ip_address, row) 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event File "/usr/lib/python3.9/site-packages/oslo_concurrency/lockutils.py", line 360, in inner 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event return f(*args, **kwargs) 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event File "/usr/lib/python3.9/site-packages/ovn_bgp_agent/drivers/openstack/ovn_bgp_driver.py", line 889, in withdraw_subnet 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event cr_lrp = self.sb_idl.is_router_gateway_on_chassis(row.datapath, 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event File "/usr/lib/python3.9/site-packages/ovn_bgp_agent/drivers/openstack/utils/ovn.py", line 210, in is_router_gateway_on_chassis 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event port_info = self.get_ports_on_datapath( 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event File "/usr/lib/python3.9/site-packages/ovn_bgp_agent/drivers/openstack/utils/ovn.py", line 130, in get_ports_on_datapath 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event return cmd.execute(check_error=True) 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event File "/usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/command.py", line 39, in execute 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event self.run_idl(None) 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event File "/usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/command.py", line 314, in run_idl 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event self.result = [ 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event File "/usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/command.py", line 319, in <listcomp> 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event for r in rows if idlutils.row_match(r, self.conditions) 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event File "/usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/idlutils.py", line 412, in row_match 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event return all(condition_match(row, cond) for cond in conditions) 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event File "/usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/idlutils.py", line 412, in <genexpr> 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event return all(condition_match(row, cond) for cond in conditions) 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event File "/usr/lib/python3.9/site-packages/ovsdbapp/backend/ovs_idl/idlutils.py", line 359, in condition_match 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event raise ValueError( 2022-11-10T14:40:18.929843581+00:00 stdout F 2022-11-10 14:40:18.929 99396 ERROR ovsdbapp.event ValueError: Column type and condition operand do not match That exception is not raised if the router is disconnected from the external network before deleting it.
Fix: https://review.opendev.org/c/x/ovn-bgp-agent/+/864284
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (Release of components for Red Hat OpenStack Platform 17.1 (Wallaby)), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHEA-2023:4577