From 1dabdf118d514e95cc54c02aedf1bf653c62c8f0 Mon Sep 17 00:00:00 2001 From: Rodolfo Alonso Hernandez Date: Fri, 3 Jan 2025 11:19:39 +0000 Subject: [PATCH] [eventlet-removal] Use non-eventlet metadata proxy in OVN metadata agent The new metadata proxy server implementation, used in the OVN agent, is now used in the OVN metadata agent. The same limitation applies: it is only possible to create a server inside a thread, running in the same process (same as with metadata_workers=0). The configuration variable metadata_workers no longer applies. Closes-Bug: #2087941 Change-Id: If5d74d6e21a22e4f4dbed27ed9be828adad857e8 --- doc/source/eventlet_deprecation/index.rst | 10 ++++++++++ neutron/agent/ovn/metadata/agent.py | 2 +- neutron/cmd/{eventlet => }/agents/ovn_metadata.py | 0 .../agent/ovn/metadata/test_metadata_agent.py | 4 ++-- setup.cfg | 2 +- zuul.d/base.yaml | 8 ++++++++ zuul.d/job-templates.yaml | 1 + 7 files changed, 23 insertions(+), 4 deletions(-) rename neutron/cmd/{eventlet => }/agents/ovn_metadata.py (100%) diff --git a/doc/source/eventlet_deprecation/index.rst b/doc/source/eventlet_deprecation/index.rst index 605225906dd..8b7d76e6890 100644 --- a/doc/source/eventlet_deprecation/index.rst +++ b/doc/source/eventlet_deprecation/index.rst @@ -64,6 +64,16 @@ This implementation does not rely on ``neutron.api.wsgi.Server`` nor implementations will enable again this configuration variable. +OVN metadata agent +------------------ + +Metadata proxy +~~~~~~~~~~~~~~ + +The OVN metadata agent uses the same implementation as the OVN agent. The same +limitations apply. + + Neutron API ----------- diff --git a/neutron/agent/ovn/metadata/agent.py b/neutron/agent/ovn/metadata/agent.py index 795822fd1e4..359196d11a9 100644 --- a/neutron/agent/ovn/metadata/agent.py +++ b/neutron/agent/ovn/metadata/agent.py @@ -34,7 +34,7 @@ from neutron.agent.linux import iptables_manager from neutron.agent.ovn.agent import ovn_neutron_agent from neutron.agent.ovn.metadata import driver as metadata_driver from neutron.agent.ovn.metadata import ovsdb -from neutron.agent.ovn.metadata import server as metadata_server +from neutron.agent.ovn.metadata import server_socket as metadata_server from neutron.common.ovn import constants as ovn_const from neutron.common.ovn import utils as ovn_utils from neutron.common import utils diff --git a/neutron/cmd/eventlet/agents/ovn_metadata.py b/neutron/cmd/agents/ovn_metadata.py similarity index 100% rename from neutron/cmd/eventlet/agents/ovn_metadata.py rename to neutron/cmd/agents/ovn_metadata.py diff --git a/neutron/tests/functional/agent/ovn/metadata/test_metadata_agent.py b/neutron/tests/functional/agent/ovn/metadata/test_metadata_agent.py index b0ed3c836d9..8f8658bbf68 100644 --- a/neutron/tests/functional/agent/ovn/metadata/test_metadata_agent.py +++ b/neutron/tests/functional/agent/ovn/metadata/test_metadata_agent.py @@ -27,7 +27,7 @@ import testtools from neutron.agent.linux import iptables_manager from neutron.agent.ovn.metadata import agent from neutron.agent.ovn.metadata import ovsdb -from neutron.agent.ovn.metadata import server as metadata_server +from neutron.agent.ovn.metadata import server_socket as metadata_server from neutron.common.ovn import constants as ovn_const from neutron.common import utils as n_utils from neutron.conf.agent.metadata import config as meta_config @@ -453,7 +453,7 @@ class TestMetadataAgent(base.TestOVNFunctionalBase): def test_metadata_proxy_handler_idl(self): # This test relies on the configuration option metadata_workers=0 - proxy_sb_idl = self.agent._proxy.server._server._application.sb_idl + proxy_sb_idl = metadata_server.MetadataProxyHandler._sb_idl agent_sb_idl = self.agent.sb_idl self.assertEqual(agent_sb_idl, proxy_sb_idl) diff --git a/setup.cfg b/setup.cfg index 5577b371d45..143b77a25e8 100644 --- a/setup.cfg +++ b/setup.cfg @@ -56,7 +56,7 @@ console_scripts = neutron-status = neutron.cmd.status:main neutron-ovn-agent = neutron.cmd.agents.ovn_neutron_agent:main neutron-ovn-maintenance-worker = neutron.cmd.eventlet.server:main_ovn_maintenance_eventlet - neutron-ovn-metadata-agent = neutron.cmd.eventlet.agents.ovn_metadata:main + neutron-ovn-metadata-agent = neutron.cmd.agents.ovn_metadata:main neutron-ovn-migration-mtu = neutron.cmd.ovn.migration_mtu:main neutron-ovn-db-sync-util = neutron.cmd.ovn.neutron_ovn_db_sync_util:main neutron-sanitize-port-binding-profile-allocation = neutron.cmd.sanitize_port_binding_profile_allocation:main diff --git a/zuul.d/base.yaml b/zuul.d/base.yaml index 4a0fa4e8ba9..fd72fb1f973 100644 --- a/zuul.d/base.yaml +++ b/zuul.d/base.yaml @@ -247,3 +247,11 @@ $NEUTRON_CONF: SECURITYGROUP: enable_ipset: false # Not compatible with nftables + +- job: + name: neutron-tempest-plugin-ovn-with-ovn-metadata-agent + parent: neutron-tempest-plugin-ovn + vars: + devstack_services: + q-ovn-metadata-agent: true + q-ovn-agent: false diff --git a/zuul.d/job-templates.yaml b/zuul.d/job-templates.yaml index 8cc843168f4..1d26e6660b9 100644 --- a/zuul.d/job-templates.yaml +++ b/zuul.d/job-templates.yaml @@ -129,6 +129,7 @@ - neutron-functional-with-oslo-master - neutron-ovs-tempest-with-oslo-master - neutron-ovn-tempest-ovs-release-with-oslo-master + - neutron-tempest-plugin-ovn-with-ovn-metadata-agent experimental: jobs: *neutron-periodic-jobs