76f343c586
The Neutron API with WSGI module, and specifically when using ML2/OVN, was importing some system libraries before patching them. That was leading to a recursion error, as reported in the related LP bug. By calling ``eventlet_utils.monkey_patch()`` at the very beginning of the WSGI entry point [1], this issue is fixed. [1] WSGI entry point: $ cat /etc/neutron/neutron-api-uwsgi.ini ... module = neutron.wsgi.api:application Closes-Bug: #2075147 Change-Id: If2aa37b2a510a85172da833ca20564810817d246
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
# 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.
|
|
|
|
"""WSGI application entry-point for Neutron API."""
|
|
|
|
# NOTE: the WSGI module needs to monkey patch the libraries before any other
|
|
# module loads them. That will prevent the recursion error in the SSL library
|
|
# reported in LP#2075147
|
|
# pylint: disable=wrong-import-position
|
|
from neutron.common import eventlet_utils
|
|
eventlet_utils.monkey_patch()
|
|
|
|
import threading # noqa:E402
|
|
|
|
from neutron import server # noqa:E402
|
|
from neutron.server import api_eventlet # noqa:E402
|
|
|
|
application = None
|
|
lock = threading.Lock()
|
|
with lock:
|
|
if application is None:
|
|
application = server.boot_server(api_eventlet.eventlet_api_server)
|