Files
neutron/neutron/server/api_eventlet.py
T
Rodolfo Alonso Hernandez cfab008eef [OVN] Enable the WSGI module for the OVN mechanism driver
This patch enables the use of the WSGI module with the ML2/OVN
mechanism driver. The ML2/OVN requires two events that are called
during the Neutron eventlet server initialization:
* BEFORE_SPAWN: called once before the API workers have been created
  and after the ML2 plugin code has been initalizated.
* AFTER_INIT: called when the API worker is started; at this point
  the different worker processes have been spawned.

The WSGI module didn't make these event calls. Now these events are
called during the API server initialization, after the ML2 plugin
has been initalizated but before the server is running and attending
any request.

This approach differs from the Neutron eventlet server event calls
because the BEFORE_SPAWN event is called for all API workers; that
means the method ``OVNMechanismDriver.pre_fork_initialize`` is called
as many times as workers are configured.

Closes-Bug: #1912359
Change-Id: I684c6cea620308a6617b665400ce608650a2adfd
2024-07-03 07:33:31 +00:00

35 lines
1.2 KiB
Python

#
# Copyright (c) 2022, OVH SAS
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from neutron_lib.callbacks import events
from neutron_lib.callbacks import registry
from neutron_lib.callbacks import resources
from oslo_config import cfg
from neutron.api import wsgi
from neutron.common import config
from neutron.common import profiler
def eventlet_api_server():
profiler.setup('neutron-server', cfg.CONF.host)
app = config.load_paste_app('neutron')
registry.publish(resources.PROCESS, events.BEFORE_SPAWN,
wsgi.WorkerService)
registry.publish(resources.PROCESS, events.AFTER_INIT,
wsgi.WorkerService)
return app