Files
neutron/neutron/server/periodic_eventlet.py
T
Rodolfo Alonso Hernandez 811f74d943 Add a new process to spawn the plugin services in the Neutron server
When using the Neutron WSGI module, the plugin services (periodic
workers created on demand in the ML2 plugin initialization) were not
spawned.

This patch adds a new service that should be spawned within the Neutron
API processes, similar to the RPC server.

Closes-Bug: #2069581
Change-Id: Ia5376a68bfbcff4156800f550f28b59944b863c3
2024-06-23 08:12:00 +00:00

39 lines
1.3 KiB
Python

# Copyright (c) 2024 Red Hat, Inc.
# 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.api import attributes
from oslo_log import log
from neutron.api import extensions
from neutron import manager
from neutron import service
LOG = log.getLogger(__name__)
def eventlet_periodic_workers():
LOG.info('Eventlet based periodic workers process starting...')
try:
manager.init()
ext_mgr = extensions.PluginAwareExtensionManager.get_instance()
ext_mgr.extend_resources('2.0', attributes.RESOURCES)
periodic_workers_launcher = service.start_periodic_workers()
except NotImplementedError:
LOG.info('Periodic workers process was already started in '
'parent process by plugin.')
else:
periodic_workers_launcher.wait()