The cinder.wsgi.common
Module¶
Utility methods for working with WSGI servers.
-
class
Application
¶ Bases:
object
Base WSGI application wrapper. Subclasses need to implement __call__.
-
classmethod
factory
(global_config, **local_config)¶ Used for paste app factories in paste.deploy config files.
Any local configuration (that is, values under the [app:APPNAME] section of the paste config) will be passed into the __init__ method as kwargs.
A hypothetical configuration would look like:
[app:wadl] latest_version = 1.3 paste.app_factory = cinder.api.fancy_api:Wadl.factorywhich would result in a call to the Wadl class as
import cinder.api.fancy_api fancy_api.Wadl(latest_version=‘1.3’)You could of course re-implement the factory method in subclasses, but using the kwarg passing it shouldn’t be necessary.
-
classmethod
-
class
Debug
(application)¶ Bases:
cinder.wsgi.common.Middleware
Helper class for debugging a WSGI application.
Can be inserted into any WSGI application chain to get information about the request and response.
-
static
print_generator
(app_iter)¶ Iterator that prints the contents of a wrapper string.
-
static
-
class
Loader
(config_path=None)¶ Bases:
object
Used to load WSGI applications from paste configurations.
-
load_app
(name)¶ Return the paste URLMap wrapped WSGI application.
Parameters: name – Name of the application to load. Returns: Paste URLMap object wrapping the requested application. Raises: cinder.exception.PasteAppNotFound
-
-
class
Middleware
(application)¶ Bases:
cinder.wsgi.common.Application
Base WSGI middleware.
These classes require an application to be initialized that will be called next. By default the middleware will simply call its wrapped app, or you can override __call__ to customize its behavior.
-
classmethod
factory
(global_config, **local_config)¶ Used for paste app factories in paste.deploy config files.
Any local configuration (that is, values under the [filter:APPNAME] section of the paste config) will be passed into the __init__ method as kwargs.
A hypothetical configuration would look like:
[filter:analytics] redis_host = 127.0.0.1 paste.filter_factory = cinder.api.analytics:Analytics.factorywhich would result in a call to the Analytics class as
import cinder.api.analytics analytics.Analytics(app_from_paste, redis_host=‘127.0.0.1’)You could of course re-implement the factory method in subclasses, but using the kwarg passing it shouldn’t be necessary.
-
process_request
(req)¶ Called on each request.
If this returns None, the next application down the stack will be executed. If it returns a response then that response will be returned and execution will stop here.
-
process_response
(response)¶ Do whatever you’d like to the response.
-
classmethod
-
class
Request
(environ, charset=None, unicode_errors=None, decode_param_names=None, **kw)¶ Bases:
webob.request.Request
-
class
Router
(mapper)¶ Bases:
object
WSGI middleware that maps incoming requests to WSGI apps.