Blueprint-paste-deploy


 * Launchpad Entry: NovaSpec:nova-paste-deploy
 * Created:
 * Contributors:

Summary
Swift uses paste.deploy  to build wsgi apps from the server and middleware components. It makes it very easy to change or add middleware. Nova should do the same thing.

Release Note
Use paste.deploy for configuring middlewares and configuring wsgi apps.

Rationale
Standardizing across different openstack components, letting middleware components be specified and ordered in configuration instead of code.

User stories
Deployments using a different authentication mechanism can easily create a new auth middleware (packaged separately from nova) and specify it be loaded without requiring changes in the nova codebase.

Assumptions
Standard config parsing lands in openstack-common, as gflags interfere with paste.deploy.

Design
paste.deploy is very self-contained. We will only have to add a few configuration files. Package maintainers and openstack can mange those the same way they currently manage flagfiles (ie: puppet, chef, cfengine).

Implementation
Rework api/ec2/ init since it will no longer be responsible for composing the wsgi app. Change either bin/nova-api or nova/wsgi.py to call the paste library. Look at swift-proxy for inspiration.