diff options
| author | Jason Kölker <jason@koelker.net> | 2011-09-27 13:21:47 -0500 |
|---|---|---|
| committer | Jason Kölker <jason@koelker.net> | 2011-09-27 13:21:47 -0500 |
| commit | a21940e2d325136661b5283bb15f1fbf9942477b (patch) | |
| tree | e0b3a7fe84342adfc7770e05abd7314d13956c54 /openstack/common/middleware | |
| parent | f90e85378df8f8afe22acd530223c09cb9f7bc4c (diff) | |
| download | oslo-a21940e2d325136661b5283bb15f1fbf9942477b.tar.gz oslo-a21940e2d325136661b5283bb15f1fbf9942477b.tar.xz oslo-a21940e2d325136661b5283bb15f1fbf9942477b.zip | |
reog from import merge
Diffstat (limited to 'openstack/common/middleware')
| -rw-r--r-- | openstack/common/middleware/__init__.py | 0 | ||||
| -rw-r--r-- | openstack/common/middleware/context.py | 64 |
2 files changed, 64 insertions, 0 deletions
diff --git a/openstack/common/middleware/__init__.py b/openstack/common/middleware/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/openstack/common/middleware/__init__.py diff --git a/openstack/common/middleware/context.py b/openstack/common/middleware/context.py new file mode 100644 index 0000000..be7dafe --- /dev/null +++ b/openstack/common/middleware/context.py @@ -0,0 +1,64 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2011 OpenStack LLC. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +""" +Middleware that attaches a context to the WSGI request +""" + +from openstack.common import utils +from openstack.common import wsgi +from openstack.common import context + + +class ContextMiddleware(wsgi.Middleware): + def __init__(self, app, options): + self.options = options + super(ContextMiddleware, self).__init__(app) + + def make_context(self, *args, **kwargs): + """ + Create a context with the given arguments. + """ + + # Determine the context class to use + ctxcls = context.RequestContext + if 'context_class' in self.options: + ctxcls = utils.import_class(self.options['context_class']) + + return ctxcls(*args, **kwargs) + + def process_request(self, req): + """ + Extract any authentication information in the request and + construct an appropriate context from it. + """ + # Use the default empty context, with admin turned on for + # backwards compatibility + req.context = self.make_context(is_admin=True) + + +def filter_factory(global_conf, **local_conf): + """ + Factory method for paste.deploy + """ + conf = global_conf.copy() + conf.update(local_conf) + + def filter(app): + return ContextMiddleware(app, conf) + + return filter |
