diff --git a/neutron/agent/ovn/metadata/agent.py b/neutron/agent/ovn/metadata/agent.py index 950cd5ab2a0..423e26f0ae5 100644 --- a/neutron/agent/ovn/metadata/agent.py +++ b/neutron/agent/ovn/metadata/agent.py @@ -339,7 +339,8 @@ class MetadataAgent(object): for ns in ip_lib.list_network_namespaces()) net_datapaths = self.get_networks_datapaths() metadata_namespaces = [ - self._get_namespace_name(str(datapath.uuid)) + self._get_namespace_name( + ovn_utils.get_network_name_from_datapath(datapath)) for datapath in net_datapaths ] unused_namespaces = [ns for ns in system_namespaces if @@ -348,8 +349,9 @@ class MetadataAgent(object): for ns in unused_namespaces: self.teardown_datapath(self._get_datapath_name(ns)) - # now that all obsolete namespaces are cleaned up, deploy required - # networks + # resync all network namespaces based on the associated datapaths, + # even those that are already running. This is to make sure + # everything within each namespace is up to date. for datapath in net_datapaths: self.provision_datapath(datapath) diff --git a/neutron/tests/unit/agent/ovn/metadata/test_agent.py b/neutron/tests/unit/agent/ovn/metadata/test_agent.py index 8cc13aecdfa..8bdfd1c6208 100644 --- a/neutron/tests/unit/agent/ovn/metadata/test_agent.py +++ b/neutron/tests/unit/agent/ovn/metadata/test_agent.py @@ -83,7 +83,8 @@ class TestMetadataAgent(base.BaseTestCase): self.ports = [] for i in range(0, 3): - self.ports.append(makePort(datapath=DatapathInfo(uuid=str(i), + self.ports.append(makePort( + datapath=DatapathInfo(uuid=str(uuid.uuid4()), external_ids={'name': 'neutron-%d' % i}))) self.agent.sb_idl.get_ports_on_chassis.return_value = self.ports