Merge "Update OVN_AGENT_NEUTRON_SB_CFG_KEY when Neutron OVN Agent starts" into stable/2025.1

This commit is contained in:
Zuul
2025-06-19 09:47:35 +00:00
committed by Gerrit Code Review
3 changed files with 22 additions and 2 deletions

View File

@@ -151,6 +151,14 @@ class OVNNeutronAgent(service.Service):
return ovsdb.MonitorAgentOvnSbIdl(tables, events,
chassis=self.chassis).start()
def update_neutron_sb_cfg_key(self):
nb_cfg = self.sb_idl.db_get('Chassis_Private',
self.chassis, 'nb_cfg').execute()
external_ids = {ovn_const.OVN_AGENT_NEUTRON_SB_CFG_KEY: str(nb_cfg)}
self.sb_idl.db_set(
'Chassis_Private', self.chassis,
('external_ids', external_ids)).execute(check_error=True)
def start(self):
self.ext_manager_api.ovs_idl = self._load_ovs_idl()
self.load_config()
@@ -159,6 +167,8 @@ class OVNNeutronAgent(service.Service):
self.ext_manager_api.sb_idl = self._load_sb_idl()
self.ext_manager_api.nb_idl = self._load_nb_idl()
self.ext_manager.start()
self.update_neutron_sb_cfg_key()
LOG.info('OVN Neutron Agent started')
self.wait()

View File

@@ -161,6 +161,7 @@ class MetadataExtension(extension_manager.OVNAgentExtension,
Reload the configuration and sync the agent again.
"""
self.agent_api.load_config()
self.agent_api.update_neutron_sb_cfg_key()
self.sync()
def start(self):
@@ -177,6 +178,7 @@ class MetadataExtension(extension_manager.OVNAgentExtension,
# Register the agent with its corresponding Chassis
self.register_metadata_agent()
self.agent_api.update_neutron_sb_cfg_key()
# Start the metadata server.
proxy_thread = threading.Thread(target=self._proxy.wait)

View File

@@ -77,6 +77,13 @@ class TestOVNNeutronAgentBase(base.TestOVNFunctionalBase):
mock.patch.object(server_socket.UnixDomainMetadataProxy,
'wait'):
agt.start()
external_ids = agt.sb_idl.db_get(
'Chassis_Private', agt.chassis, 'external_ids').execute(
check_error=True)
self.assertEqual(
external_ids[ovn_const.OVN_AGENT_NEUTRON_SB_CFG_KEY],
'0')
self._check_loaded_and_started_extensions(agt)
self.addCleanup(agt.ext_manager_api.ovs_idl.ovsdb_connection.stop)
@@ -128,9 +135,10 @@ class TestOVNNeutronAgentMetadataExtension(TestOVNNeutronAgentBase):
# Check the metadata extension is registered.
chassis_id = uuid.UUID(self.chassis_name)
agent_id = uuid.uuid5(chassis_id, 'metadata_agent')
ext_ids = {ovn_const.OVN_AGENT_METADATA_ID_KEY: str(agent_id)}
ch_private = self.sb_api.lookup('Chassis_Private', self.chassis_name)
self.assertEqual(ext_ids, ch_private.external_ids)
self.assertEqual(
ch_private.external_ids[ovn_const.OVN_AGENT_METADATA_ID_KEY],
str(agent_id))
# Check Unix proxy is running.
metadata_extension = self.ovn_agent[METADATA_EXTENSION]