cfab008eef
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
35 lines
1.2 KiB
Python
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
|