API layer documentation
* Discuss the WSGI layer of Neutron * Describe the startup code that creates the WSGI application * Briefly discuss the URL routing and resource creation Change-Id: Id82a2a5679d7e29c0a19d1a20942a9249946b011
This commit is contained in:
parent
4ea3af261c
commit
27c79e67db
@ -1,4 +1,57 @@
|
||||
Neutron WSGI/HTTP API layer
|
||||
===========================
|
||||
|
||||
This section will cover the internals of Neutron's HTTP API, and the classes
|
||||
in Neutron that can be used to create Extensions to the Neutron API.
|
||||
|
||||
Python web applications interface with webservers through the Python Web
|
||||
Server Gateway Interface (WSGI) - defined in `PEP 333 <http://legacy.python.org/dev/peps/pep-0333/>`_
|
||||
|
||||
Startup
|
||||
-------
|
||||
|
||||
Neutron's WSGI server is started from the `server module <http://git.openstack.org/cgit/openstack/neutron/tree/neutron/server/__init__.py>`_
|
||||
and the entry point `serve_wsgi` is called to build an instance of the
|
||||
`NeutronApiService`_, which is then returned to the server module,
|
||||
which spawns a `Eventlet`_ `GreenPool`_ that will run the WSGI
|
||||
application and respond to requests from clients.
|
||||
|
||||
|
||||
.. _NeutronApiService: http://git.openstack.org/cgit/openstack/neutron/tree/neutron/service.py
|
||||
|
||||
.. _Eventlet: http://eventlet.net/
|
||||
|
||||
.. _GreenPool: http://eventlet.net/doc/modules/greenpool.html
|
||||
|
||||
WSGI Application
|
||||
----------------
|
||||
|
||||
During the building of the NeutronApiService, the `_run_wsgi` function
|
||||
creates a WSGI application using the `load_paste_app` function inside
|
||||
`config.py`_ - which parses `api-paste.ini`_ - in order to create a WSGI app
|
||||
using `Paste`_'s `deploy`_.
|
||||
|
||||
The api-paste.ini file defines the WSGI applications and routes - using the
|
||||
`Paste INI file format`_.
|
||||
|
||||
The INI file directs paste to instantiate the `APIRouter`_ class of
|
||||
Neutron, which contains several methods that map Neutron resources (such as
|
||||
Ports, Networks, Subnets) to URLs, and the controller for each resource.
|
||||
|
||||
|
||||
.. _config.py: http://git.openstack.org/cgit/openstack/neutron/tree/neutron/common/config.py
|
||||
|
||||
.. _api-paste.ini: http://git.openstack.org/cgit/openstack/neutron/tree/etc/api-paste.ini
|
||||
|
||||
.. _APIRouter: http://git.openstack.org/cgit/openstack/neutron/tree/neutron/api/v2/router.py
|
||||
|
||||
.. _Paste: http://pythonpaste.org/
|
||||
|
||||
.. _Deploy: http://pythonpaste.org/deploy/
|
||||
|
||||
.. _Paste INI file format: http://pythonpaste.org/deploy/#applications
|
||||
|
||||
Further reading
|
||||
---------------
|
||||
|
||||
`Yong Sheng Gong: Deep Dive into Neutron <http://www.slideshare.net/gongys2004/inside-neutron-2>`_
|
||||
|
Loading…
Reference in New Issue
Block a user