Currently there is one single method to run the Neutron API that is using uWSGI. This method requires a specific hash ring manager initialization, different to the eventlet server based. Because the second has been removed and is no longer available, as long as Neutron continues the effors of removing eventlet from the source code, the second way to initialize the hash ring manager is removed. Related-Bug: #2083570 Change-Id: I59b25093df9cf5aa77767492a5b9008bfa11cc07
3.4 KiB
Eventlet Deprecation Reference
This document contains the information related to the
eventlet library deprecation. Each section describes how
each module has been migrated, the caveats, the pending technical debt
and the missing parts.
OVN Agent
Launch process
The execution of the OVN agent has been replaced. Instead of using
oslo_services.launch, that is still using eventlet, the
agent creates a threading.Event instance and holds the main
thread execution by waiting for this event.
Note
Once the oslo_services library removes the usage of
eventlet, the previous implementation will be restored. The
oslo_services.service.ProcessLauncher service launcher
implements a signal handler.
Metadata proxy
The UnixDomainWSGIServer class has been replaced with a
new implementation. This implementation does not rely on
neutron.api.wsgi.Server nor
eventlet.wsgi.server. It inherits from the built-in library
class socketserver.StreamRequestHandler.
Note
This implementation doesn't use oslo_services to spawn
the processes or the local threads depending on the
metadata_workers configuration variable. Right now only the
embedded form (local thread) is implemented
(metadata_workers=0, the default value). Future
implementations will enable again this configuration variable.
Neutron API
The Neutron API currently can be executed only with the uWSGI module;
the eventlet executor has been deprecated, although the code has not
been removed from the repository yet. It is now mandatory to define the
configuration variable start-time in the uWSGI
configuration file, using the magic variable1
"%t" that provides the unix time (in seconds, gathered at instance
startup).
[uwsgi]
start-time = %t
The Neutron API consists of the following executables:
- The API server: is a multiprocess worker; each process is created by
the
uWSGIserver. - The periodic worker: a mult process worker that spawns several threads to execute the periodic workers.
- The RPC worker: a multiprocess process worker that attends the requests from the RPC clients, for example the Neutron agents.
- The ML2/OVN maintenance worker: single process worker, needed by the ML2/OVN mechanism driver.
Note
Right now, only the API server is running without eventlet.