Remove neutron.wsgi module

We want this module for use elsewhere. This has a natural home in the
neutron.api module so move it there. This is similar to what has
previously been done for nova [1].

Tests for the module are also moved and other tests slightly decoupled.

[1] https://review.opendev.org/c/openstack/nova/+/902686

Change-Id: I835e7ad95b6d7d83d06f4303b476519c16b9a2c8
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
Stephen Finucane 2024-04-19 11:52:27 +01:00 committed by Brian Haley
parent abe8110f53
commit 34fafa2d8c
21 changed files with 48 additions and 49 deletions

@ -35,10 +35,9 @@ from oslo_utils import excutils
from oslo_utils import fileutils from oslo_utils import fileutils
import psutil import psutil
from neutron.api import wsgi
from neutron.conf.agent import common as config from neutron.conf.agent import common as config
from neutron.privileged.agent.linux import utils as priv_utils from neutron.privileged.agent.linux import utils as priv_utils
from neutron import wsgi
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)

@ -28,7 +28,7 @@ from webob import exc
from neutron._i18n import _ from neutron._i18n import _
from neutron.api import extensions from neutron.api import extensions
from neutron import wsgi from neutron.api import wsgi
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)

@ -30,11 +30,10 @@ import webob.dec
import webob.exc import webob.exc
from neutron._i18n import _ from neutron._i18n import _
from neutron.api import wsgi
from neutron import extensions as core_extensions from neutron import extensions as core_extensions
from neutron.plugins.common import constants as const from neutron.plugins.common import constants as const
from neutron.services import provider_configuration from neutron.services import provider_configuration
from neutron import wsgi
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)

@ -22,9 +22,8 @@ import webob.dec
import webob.exc import webob.exc
from neutron.api import api_common from neutron.api import api_common
from neutron.api import wsgi
from neutron.common import utils from neutron.common import utils
from neutron import wsgi
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)

@ -27,8 +27,8 @@ from oslo_log import log as logging
from neutron.api import extensions from neutron.api import extensions
from neutron.api.v2 import resource from neutron.api.v2 import resource
from neutron.api import wsgi
from neutron import policy from neutron import policy
from neutron import wsgi
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)

@ -29,13 +29,11 @@ import webob.exc
from neutron._i18n import _ from neutron._i18n import _
from neutron.api import extensions from neutron.api import extensions
from neutron.api.v2 import resource from neutron.api.v2 import resource
from neutron.api import wsgi
from neutron import policy from neutron import policy
from neutron import wsgi
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
L3_ROUTER = 'l3-router' L3_ROUTER = 'l3-router'
L3_ROUTERS = L3_ROUTER + 's' L3_ROUTERS = L3_ROUTER + 's'
L3_AGENT = 'l3-agent' L3_AGENT = 'l3-agent'

@ -30,10 +30,10 @@ from neutron._i18n import _
from neutron.api import extensions from neutron.api import extensions
from neutron.api.v2 import base from neutron.api.v2 import base
from neutron.api.v2 import resource from neutron.api.v2 import resource
from neutron.api import wsgi
from neutron import policy from neutron import policy
from neutron import quota from neutron import quota
from neutron.quota import resource_registry from neutron.quota import resource_registry
from neutron import wsgi
DEFAULT_QUOTAS_ACTION = 'default' DEFAULT_QUOTAS_ACTION = 'default'

@ -19,6 +19,7 @@ from oslo_config import cfg
import neutron.agent.agent_extensions_manager import neutron.agent.agent_extensions_manager
import neutron.agent.securitygroups_rpc import neutron.agent.securitygroups_rpc
import neutron.api.wsgi
import neutron.conf.agent.agent_extensions_manager import neutron.conf.agent.agent_extensions_manager
import neutron.conf.agent.common import neutron.conf.agent.common
import neutron.conf.agent.database.agents_db import neutron.conf.agent.database.agents_db
@ -60,7 +61,6 @@ import neutron.db.migration.cli
import neutron.extensions.l3 import neutron.extensions.l3
import neutron.extensions.securitygroup import neutron.extensions.securitygroup
import neutron.plugins.ml2.drivers.mech_sriov.agent.common.config import neutron.plugins.ml2.drivers.mech_sriov.agent.common.config
import neutron.wsgi
AUTH_GROUPS_OPTS = { AUTH_GROUPS_OPTS = {

@ -47,6 +47,7 @@ from oslo_utils import timeutils
from ovsdbapp.backend.ovs_idl import idlutils from ovsdbapp.backend.ovs_idl import idlutils
from neutron._i18n import _ from neutron._i18n import _
from neutron.api import wsgi
from neutron.common.ovn import acl as ovn_acl from neutron.common.ovn import acl as ovn_acl
from neutron.common.ovn import constants as ovn_const from neutron.common.ovn import constants as ovn_const
from neutron.common.ovn import exceptions as ovn_exceptions from neutron.common.ovn import exceptions as ovn_exceptions
@ -72,7 +73,6 @@ from neutron.services.logapi.drivers.ovn import driver as log_driver
from neutron.services.qos.drivers.ovn import driver as qos_driver from neutron.services.qos.drivers.ovn import driver as qos_driver
from neutron.services.segments import db as segment_service_db from neutron.services.segments import db as segment_service_db
from neutron.services.trunk.drivers.ovn import trunk_driver from neutron.services.trunk.drivers.ovn import trunk_driver
import neutron.wsgi
LOG = log.getLogger(__name__) LOG = log.getLogger(__name__)
@ -299,7 +299,7 @@ class OVNMechanismDriver(api.MechanismDriver):
@staticmethod @staticmethod
def should_post_fork_initialize(worker_class): def should_post_fork_initialize(worker_class):
return worker_class in (neutron.wsgi.WorkerService, return worker_class in (wsgi.WorkerService,
worker.MaintenanceWorker, worker.MaintenanceWorker,
service.RpcWorker) service.RpcWorker)
@ -344,7 +344,7 @@ class OVNMechanismDriver(api.MechanismDriver):
self._post_fork_event.clear() self._post_fork_event.clear()
self._ovn_client_inst = None self._ovn_client_inst = None
if worker_class == neutron.wsgi.WorkerService: if worker_class == wsgi.WorkerService:
self._setup_hash_ring() self._setup_hash_ring()
n_agent.AgentCache(self) # Initialize singleton agent cache n_agent.AgentCache(self) # Initialize singleton agent cache

@ -34,11 +34,11 @@ from oslo_utils import excutils
from oslo_utils import importutils from oslo_utils import importutils
import psutil import psutil
from neutron.api import wsgi
from neutron.common import config from neutron.common import config
from neutron.common import profiler from neutron.common import profiler
from neutron.conf import service from neutron.conf import service
from neutron import worker as neutron_worker from neutron import worker as neutron_worker
from neutron import wsgi
service.register_service_opts(service.SERVICE_OPTS) service.register_service_opts(service.SERVICE_OPTS)

@ -32,6 +32,7 @@ from ovsdbapp.backend.ovs_idl import idlutils
from neutron.agent.linux import utils from neutron.agent.linux import utils
from neutron.api import extensions as exts from neutron.api import extensions as exts
from neutron.api import wsgi
from neutron.common import utils as n_utils from neutron.common import utils as n_utils
from neutron.conf.agent import common as config from neutron.conf.agent import common as config
from neutron.conf.agent import ovs_conf from neutron.conf.agent import ovs_conf
@ -53,7 +54,6 @@ from neutron.tests.common import helpers
from neutron.tests.functional.resources import process from neutron.tests.functional.resources import process
from neutron.tests.unit.extensions import test_securitygroup from neutron.tests.unit.extensions import test_securitygroup
from neutron.tests.unit.plugins.ml2 import test_plugin from neutron.tests.unit.plugins.ml2 import test_plugin
import neutron.wsgi
LOG = log.getLogger(__name__) LOG = log.getLogger(__name__)
@ -329,7 +329,7 @@ class TestOVNFunctionalBase(test_plugin.Ml2PluginV2TestCase,
trigger_cls.trigger.__self__.__class__ = worker.MaintenanceWorker trigger_cls.trigger.__self__.__class__ = worker.MaintenanceWorker
cfg.CONF.set_override('neutron_sync_mode', 'off', 'ovn') cfg.CONF.set_override('neutron_sync_mode', 'off', 'ovn')
else: else:
trigger_cls.trigger.__self__.__class__ = neutron.wsgi.WorkerService trigger_cls.trigger.__self__.__class__ = wsgi.WorkerService
self.addCleanup(self.stop) self.addCleanup(self.stop)
# NOTE(ralonsoh): do not access to the DB at exit when the SQL # NOTE(ralonsoh): do not access to the DB at exit when the SQL

@ -28,16 +28,14 @@ from oslo_config import cfg
from oslo_log import log from oslo_log import log
import psutil import psutil
from neutron.api import wsgi
from neutron.common import utils from neutron.common import utils
from neutron import manager from neutron import manager
from neutron import service from neutron import service
from neutron.tests import base as tests_base from neutron.tests import base as tests_base
from neutron.tests.functional import base from neutron.tests.functional import base
from neutron import wsgi
LOG = log.getLogger(__name__) LOG = log.getLogger(__name__)
CONF = cfg.CONF CONF = cfg.CONF
# Those messages will be written to temporary file each time # Those messages will be written to temporary file each time
@ -191,7 +189,7 @@ class TestNeutronServer(base.BaseLoggingTestCase):
class TestWsgiServer(TestNeutronServer): class TestWsgiServer(TestNeutronServer):
"""Tests for neutron.wsgi.Server.""" """Tests for neutron.api.wsgi.Server."""
def setUp(self): def setUp(self):
super(TestWsgiServer, self).setUp() super(TestWsgiServer, self).setUp()
@ -225,8 +223,11 @@ class TestWsgiServer(TestNeutronServer):
# Mock start method to check that children are started again on # Mock start method to check that children are started again on
# receiving SIGHUP. # receiving SIGHUP.
with mock.patch("neutron.wsgi.WorkerService.start") as start_method,\ with mock.patch(
mock.patch("neutron.wsgi.WorkerService.reset") as reset_method: "neutron.api.wsgi.WorkerService.start"
) as start_method, mock.patch(
"neutron.api.wsgi.WorkerService.reset"
) as reset_method:
start_method.side_effect = self._fake_start start_method.side_effect = self._fake_start
reset_method.side_effect = self._fake_reset reset_method.side_effect = self._fake_reset

@ -34,6 +34,7 @@ import webtest
import neutron import neutron
from neutron.api import extensions from neutron.api import extensions
from neutron.api import wsgi
from neutron.common import config from neutron.common import config
from neutron.plugins.common import constants from neutron.plugins.common import constants
from neutron import quota from neutron import quota
@ -44,8 +45,6 @@ from neutron.tests.unit import extension_stubs as ext_stubs
import neutron.tests.unit.extensions import neutron.tests.unit.extensions
from neutron.tests.unit.extensions import extendedattribute as extattr from neutron.tests.unit.extensions import extendedattribute as extattr
from neutron.tests.unit import testlib_api from neutron.tests.unit import testlib_api
from neutron import wsgi
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
_uuid = test_base._uuid _uuid = test_base._uuid

@ -27,8 +27,8 @@ import testtools
import webob import webob
import webob.exc import webob.exc
from neutron.api import wsgi
from neutron.tests import base from neutron.tests import base
from neutron import wsgi
CONF = cfg.CONF CONF = cfg.CONF
@ -52,19 +52,7 @@ def open_no_proxy(*args, **kwargs):
return opener.open(*args, **kwargs) return opener.open(*args, **kwargs)
class TestServiceBase(base.BaseTestCase): class TestWorkerService(base.BaseTestCase):
"""Service tests base."""
@mock.patch("neutron.policy.refresh")
@mock.patch("neutron.common.config.setup_logging")
def _test_reset(self, worker_service, setup_logging_mock, refresh_mock):
worker_service.reset()
setup_logging_mock.assert_called_once_with()
refresh_mock.assert_called_once_with()
class TestWorkerService(TestServiceBase):
"""WorkerService tests.""" """WorkerService tests."""
@mock.patch.object(db_api, 'get_context_manager') @mock.patch.object(db_api, 'get_context_manager')
@ -77,6 +65,14 @@ class TestWorkerService(TestServiceBase):
workerservice.start() workerservice.start()
self.assertFalse(apimock.called) self.assertFalse(apimock.called)
@mock.patch("neutron.policy.refresh")
@mock.patch("neutron.common.config.setup_logging")
def _test_reset(self, worker_service, setup_logging_mock, refresh_mock):
worker_service.reset()
setup_logging_mock.assert_called_once_with()
refresh_mock.assert_called_once_with()
def test_reset(self): def test_reset(self):
_service = mock.Mock() _service = mock.Mock()
_app = mock.Mock() _app = mock.Mock()

@ -23,9 +23,9 @@ import webtest
from neutron._i18n import _ from neutron._i18n import _
from neutron.api.v2 import resource as wsgi_resource from neutron.api.v2 import resource as wsgi_resource
from neutron.api import wsgi
from neutron.common import utils from neutron.common import utils
from neutron.tests import base from neutron.tests import base
from neutron import wsgi
class RequestTestCase(base.BaseTestCase): class RequestTestCase(base.BaseTestCase):

@ -40,6 +40,7 @@ from neutron.api.rpc.agentnotifiers import dhcp_rpc_agent_api
from neutron.api.rpc.agentnotifiers import l3_rpc_agent_api from neutron.api.rpc.agentnotifiers import l3_rpc_agent_api
from neutron.api.rpc.handlers import dhcp_rpc from neutron.api.rpc.handlers import dhcp_rpc
from neutron.api.rpc.handlers import l3_rpc from neutron.api.rpc.handlers import l3_rpc
from neutron.api import wsgi
from neutron.db import agents_db from neutron.db import agents_db
from neutron.db import agentschedulers_db from neutron.db import agentschedulers_db
from neutron.db.models import agent as agent_model from neutron.db.models import agent as agent_model
@ -53,7 +54,6 @@ from neutron.tests.unit.db import test_db_base_plugin_v2 as test_plugin
from neutron.tests.unit.extensions import test_agent from neutron.tests.unit.extensions import test_agent
from neutron.tests.unit.extensions import test_l3 from neutron.tests.unit.extensions import test_l3
from neutron.tests.unit import testlib_api from neutron.tests.unit import testlib_api
from neutron import wsgi
L3_HOSTA = 'hosta' L3_HOSTA = 'hosta'

@ -18,7 +18,7 @@ import abc
from neutron_lib.api import extensions as api_extensions from neutron_lib.api import extensions as api_extensions
from neutron_lib.services import base from neutron_lib.services import base
from neutron import wsgi from neutron.api import wsgi
class StubExtension(api_extensions.ExtensionDescriptor): class StubExtension(api_extensions.ExtensionDescriptor):

@ -20,7 +20,7 @@ from neutron_lib.services import base
from oslo_serialization import jsonutils from oslo_serialization import jsonutils
from neutron.api import extensions from neutron.api import extensions
from neutron import wsgi from neutron.api import wsgi
class FoxInSocksController(wsgi.Controller): class FoxInSocksController(wsgi.Controller):

@ -23,7 +23,6 @@ from oslo_config import cfg
from neutron import service from neutron import service
from neutron.tests import base from neutron.tests import base
from neutron.tests.unit import test_wsgi
class TestServiceHelpers(base.BaseTestCase): class TestServiceHelpers(base.BaseTestCase):
@ -34,10 +33,19 @@ class TestServiceHelpers(base.BaseTestCase):
self.assertLessEqual(num_workers, processutils.get_worker_count()) self.assertLessEqual(num_workers, processutils.get_worker_count())
class TestRpcWorker(test_wsgi.TestServiceBase): class TestRpcWorker(base.BaseTestCase):
@mock.patch("neutron.policy.refresh")
@mock.patch("neutron.common.config.setup_logging")
def _test_reset(self, worker_service, setup_logging_mock, refresh_mock):
worker_service.reset()
setup_logging_mock.assert_called_once_with()
refresh_mock.assert_called_once_with()
def test_reset(self): def test_reset(self):
_plugin = mock.Mock() _plugin = mock.Mock()
rpc_worker = service.RpcWorker(_plugin) rpc_worker = service.RpcWorker(_plugin)
self._test_reset(rpc_worker) self._test_reset(rpc_worker)
@ -84,7 +92,7 @@ class TestRunWsgiApp(base.BaseTestCase):
def _test_api_workers(self, config_value, expected_passed_value): def _test_api_workers(self, config_value, expected_passed_value):
if config_value is not None: if config_value is not None:
cfg.CONF.set_override('api_workers', config_value) cfg.CONF.set_override('api_workers', config_value)
with mock.patch('neutron.wsgi.Server') as mock_server: with mock.patch('neutron.api.wsgi.Server') as mock_server:
service.run_wsgi_app(mock.sentinel.app) service.run_wsgi_app(mock.sentinel.app)
start_call = mock_server.return_value.start.call_args start_call = mock_server.return_value.start.call_args
expected_call = mock.call( expected_call = mock.call(

@ -23,11 +23,11 @@ from oslo_config import cfg
from oslo_db import exception as oslodb_exception from oslo_db import exception as oslodb_exception
from oslo_db.sqlalchemy import provision from oslo_db.sqlalchemy import provision
from neutron.api import wsgi
from neutron.db.migration import cli as migration from neutron.db.migration import cli as migration
# Import all data models # Import all data models
from neutron.db.migration.models import head # noqa from neutron.db.migration.models import head # noqa
from neutron.tests import base from neutron.tests import base
from neutron import wsgi
class ExpectedException(testtools.ExpectedException): class ExpectedException(testtools.ExpectedException):