diff --git a/ovn_octavia_provider/helper.py b/ovn_octavia_provider/helper.py index f198307e..c8a29942 100644 --- a/ovn_octavia_provider/helper.py +++ b/ovn_octavia_provider/helper.py @@ -1175,7 +1175,7 @@ class OvnProviderHelper(): def _find_ls_for_lr(self, router, ip_version): ls = [] for port in router.ports: - if port.gateway_chassis: + if port.gateway_chassis or port.ha_chassis_group: continue if netaddr.IPNetwork(port.networks[0]).version != ip_version: continue diff --git a/ovn_octavia_provider/ovsdb/impl_idl_ovn.py b/ovn_octavia_provider/ovsdb/impl_idl_ovn.py index 3c1e05e0..93c52246 100644 --- a/ovn_octavia_provider/ovsdb/impl_idl_ovn.py +++ b/ovn_octavia_provider/ovsdb/impl_idl_ovn.py @@ -209,7 +209,7 @@ class OvnNbIdlForLb(ovsdb_monitor.OvnIdl): SCHEMA = "OVN_Northbound" TABLES = ('Logical_Switch', 'Load_Balancer', 'Load_Balancer_Health_Check', 'Logical_Router', 'Logical_Switch_Port', 'Logical_Router_Port', - 'Gateway_Chassis', 'NAT') + 'Gateway_Chassis', 'NAT', 'HA_Chassis_Group') def __init__(self, event_lock_name=None, notifier=True): self.conn_string = config.get_ovn_nb_connection() diff --git a/ovn_octavia_provider/tests/unit/test_helper.py b/ovn_octavia_provider/tests/unit/test_helper.py index d39c35c6..e3066d67 100644 --- a/ovn_octavia_provider/tests/unit/test_helper.py +++ b/ovn_octavia_provider/tests/unit/test_helper.py @@ -3036,11 +3036,13 @@ class TestOvnProviderHelper(ovn_base.TestOvnOctaviaBase): def test__find_ls_for_lr(self): p1 = fakes.FakeOVNPort.create_one_port(attrs={ 'gateway_chassis': [], + 'ha_chassis_group': [], 'external_ids': { ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY: 'foo1'}, 'networks': ["10.0.0.1/24"]}) p2 = fakes.FakeOVNPort.create_one_port(attrs={ 'gateway_chassis': [], + 'ha_chassis_group': [], 'external_ids': { ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY: 'foo2'}, 'networks': ["10.0.10.1/24"]}) @@ -3052,11 +3054,13 @@ class TestOvnProviderHelper(ovn_base.TestOvnOctaviaBase): def test__find_ls_for_lr_net_not_found(self): p1 = fakes.FakeOVNPort.create_one_port(attrs={ 'gateway_chassis': [], + 'ha_chassis_group': [], 'external_ids': { ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY: 'foo1'}, 'networks': ["10.0.0.1/24"]}) p2 = fakes.FakeOVNPort.create_one_port(attrs={ 'gateway_chassis': [], + 'ha_chassis_group': [], 'external_ids': {}, 'networks': ["10.0.10.1/24"]}) self.router.ports.append(p2) @@ -3067,11 +3071,13 @@ class TestOvnProviderHelper(ovn_base.TestOvnOctaviaBase): def test__find_ls_for_lr_different_ip_version(self): p1 = fakes.FakeOVNPort.create_one_port(attrs={ 'gateway_chassis': [], + 'ha_chassis_group': [], 'external_ids': { ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY: 'foo1'}, 'networks': ["10.0.0.1/24"]}) p2 = fakes.FakeOVNPort.create_one_port(attrs={ 'gateway_chassis': [], + 'ha_chassis_group': [], 'external_ids': { ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY: 'foo2'}, 'networks': ["fdaa:4ad8:e8fb::/64"]}) @@ -3085,6 +3091,18 @@ class TestOvnProviderHelper(ovn_base.TestOvnOctaviaBase): def test__find_ls_for_lr_gw_port(self): p1 = fakes.FakeOVNPort.create_one_port(attrs={ 'gateway_chassis': ['foo-gw-chassis'], + 'ha_chassis_group': [], + 'external_ids': { + ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY: 'foo1'}, + 'networks': ["10.0.0.1/24"]}) + self.router.ports.append(p1) + result = self.helper._find_ls_for_lr(self.router, n_const.IP_VERSION_4) + self.assertListEqual([], result) + + def test__find_ls_for_lr_gw_port_ha_chassis_group(self): + p1 = fakes.FakeOVNPort.create_one_port(attrs={ + 'gateway_chassis': [], + 'ha_chassis_group': 'foo-chassis-group', 'external_ids': { ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY: 'foo1'}, 'networks': ["10.0.0.1/24"]})