- Launchpad Entry: NovaSpec:nova-paste-deploy
Swift uses paste.deploy <http://pythonpaste.org/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.
Use paste.deploy for configuring middlewares and configuring wsgi apps.
Standardizing across different openstack components, letting middleware components be specified and ordered in configuration instead of code.
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.
Standard config parsing lands in openstack-common, as gflags interfere with paste.deploy.
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).
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.