From 5e19eaadbb298aaf58b5389fea74c9b8064d0f41 Mon Sep 17 00:00:00 2001 From: Bartosz Bezak Date: Wed, 28 Dec 2022 14:47:21 +0100 Subject: [PATCH] [OVN] Fix availability zones changes check Closes-Bug: #2000634 Change-Id: Id5f34ec858a940d2fc4a03b9290adc6161aa9db3 --- .../ovn/mech_driver/ovsdb/ovn_client.py | 2 +- .../ovn/mech_driver/test_mech_driver.py | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py b/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py index 9237896390a..9a087e6a128 100644 --- a/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py +++ b/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py @@ -1999,7 +1999,7 @@ class OVNClient(object): if any([p for p in lswitch.ports if p.type == ovn_const.LSP_TYPE_EXTERNAL]): # Check for changes in the network Availability Zones - ovn_ls_azs = lswitch_name.external_ids.get( + ovn_ls_azs = lswitch.external_ids.get( ovn_const.OVN_AZ_HINTS_EXT_ID_KEY, '') neutron_net_azs = lswitch_params['external_ids'].get( ovn_const.OVN_AZ_HINTS_EXT_ID_KEY, '') diff --git a/neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py b/neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py index e3de3b5e3b4..b7cb07735ce 100644 --- a/neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py +++ b/neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py @@ -790,6 +790,40 @@ class TestExternalPorts(base.TestOVNFunctionalBase): def test_external_port_update_switchdev_vnic_macvtap(self): self._test_external_port_update_switchdev(portbindings.VNIC_MACVTAP) + def test_external_port_network_update(self): + net_id = self.n1['network']['id'] + port_data = { + 'port': {'network_id': net_id, + 'tenant_id': self._tenant_id, + portbindings.VNIC_TYPE: 'direct'}} + + # Create external port + port_req = self.new_create_request('ports', port_data, self.fmt) + port_res = port_req.get_response(self.api) + port = self.deserialize(self.fmt, port_res)['port'] + ovn_port = self._find_port_row_by_name(port['id']) + self.assertEqual(ovn_const.LSP_TYPE_EXTERNAL, ovn_port.type) + # Update MTU of network with external port + mtu_value = self.n1['network']['mtu'] - 100 + dhcp_options = ( + self.mech_driver._ovn_client._nb_idl.get_subnet_dhcp_options( + self.sub['subnet']['id']) + ) + self.assertNotEqual( + int(dhcp_options['subnet']['options']['mtu']), + mtu_value) + data = {'network': {'mtu': mtu_value}} + req = self.new_update_request( + 'networks', data, self.n1['network']['id'], self.fmt) + req.get_response(self.api) + dhcp_options = ( + self.mech_driver._ovn_client._nb_idl.get_subnet_dhcp_options( + self.sub['subnet']['id']) + ) + self.assertEqual( + int(dhcp_options['subnet']['options']['mtu']), + mtu_value) + class TestSecurityGroup(base.TestOVNFunctionalBase):