diff options
author | Jenkins <jenkins@review.openstack.org> | 2013-06-11 07:38:06 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2013-06-11 07:38:06 +0000 |
commit | 6afd788f3eb21e90886bfe98e2bf66f2a829217d (patch) | |
tree | 9d427f65759b599c391720de82671f14b07be216 | |
parent | b41862d310164ea91f65abdeaa406617016e9076 (diff) | |
parent | 39c17cb13e005894c66daadc7317ff3d57fe2fd7 (diff) | |
download | oslo-6afd788f3eb21e90886bfe98e2bf66f2a829217d.tar.gz oslo-6afd788f3eb21e90886bfe98e2bf66f2a829217d.tar.xz oslo-6afd788f3eb21e90886bfe98e2bf66f2a829217d.zip |
Merge "Move wsgi module to deprecated package"
-rw-r--r-- | openstack/common/deprecated/__init__.py | 0 | ||||
-rw-r--r-- | openstack/common/deprecated/wsgi.py (renamed from openstack/common/wsgi.py) | 85 | ||||
-rw-r--r-- | openstack/common/middleware/base.py | 62 | ||||
-rw-r--r-- | openstack/common/middleware/context.py | 4 | ||||
-rw-r--r-- | openstack/common/middleware/correlation_id.py | 4 | ||||
-rw-r--r-- | openstack/common/middleware/debug.py | 60 | ||||
-rw-r--r-- | openstack/common/middleware/sizelimit.py | 5 | ||||
-rw-r--r-- | tests/unit/deprecated/__init__.py | 0 | ||||
-rw-r--r-- | tests/unit/deprecated/test_wsgi.py (renamed from tests/unit/test_wsgi.py) | 5 | ||||
-rw-r--r-- | tests/unit/extension_stubs.py | 2 |
10 files changed, 133 insertions, 94 deletions
diff --git a/openstack/common/deprecated/__init__.py b/openstack/common/deprecated/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/openstack/common/deprecated/__init__.py diff --git a/openstack/common/wsgi.py b/openstack/common/deprecated/wsgi.py index b5a7157..f9be97e 100644 --- a/openstack/common/wsgi.py +++ b/openstack/common/deprecated/wsgi.py @@ -17,15 +17,12 @@ """Utility methods for working with WSGI servers.""" -from __future__ import print_function - import eventlet eventlet.patcher.monkey_patch(all=False, socket=True) import datetime import errno import socket -import sys import time import eventlet.wsgi @@ -164,88 +161,6 @@ class Service(service.Service): log=logging.WritableLogger(logger)) -class Middleware(object): - """ - Base WSGI middleware wrapper. 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 - def factory(cls, global_conf, **local_conf): - """ - Factory method for paste.deploy - """ - - def filter(app): - return cls(app) - - return filter - - def __init__(self, application): - self.application = application - - def process_request(self, 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. - """ - return None - - def process_response(self, response): - """Do whatever you'd like to the response.""" - return response - - @webob.dec.wsgify - def __call__(self, req): - response = self.process_request(req) - if response: - return response - response = req.get_response(self.application) - return self.process_response(response) - - -class Debug(Middleware): - """ - Helper class that can be inserted into any WSGI application chain - to get information about the request and response. - """ - - @webob.dec.wsgify - def __call__(self, req): - print(("*" * 40) + " REQUEST ENVIRON") - for key, value in req.environ.items(): - print(key, "=", value) - print() - resp = req.get_response(self.application) - - print(("*" * 40) + " RESPONSE HEADERS") - for (key, value) in resp.headers.iteritems(): - print(key, "=", value) - print() - - resp.app_iter = self.print_generator(resp.app_iter) - - return resp - - @staticmethod - def print_generator(app_iter): - """ - Iterator that prints the contents of a wrapper string iterator - when iterated. - """ - print(("*" * 40) + " BODY") - for part in app_iter: - sys.stdout.write(part) - sys.stdout.flush() - yield part - print() - - class Router(object): """ diff --git a/openstack/common/middleware/base.py b/openstack/common/middleware/base.py new file mode 100644 index 0000000..624a391 --- /dev/null +++ b/openstack/common/middleware/base.py @@ -0,0 +1,62 @@ +# Copyright 2011 OpenStack Foundation. +# 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. +"""Base class(es) for WSGI Middleware.""" + +import webob.dec + + +class Middleware(object): + """ + Base WSGI middleware wrapper. 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 + def factory(cls, global_conf, **local_conf): + """ + Factory method for paste.deploy + """ + + def filter(app): + return cls(app) + + return filter + + def __init__(self, application): + self.application = application + + def process_request(self, 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. + """ + return None + + def process_response(self, response): + """Do whatever you'd like to the response.""" + return response + + @webob.dec.wsgify + def __call__(self, req): + response = self.process_request(req) + if response: + return response + response = req.get_response(self.application) + return self.process_response(response) diff --git a/openstack/common/middleware/context.py b/openstack/common/middleware/context.py index ac94190..2636e8e 100644 --- a/openstack/common/middleware/context.py +++ b/openstack/common/middleware/context.py @@ -21,10 +21,10 @@ Middleware that attaches a context to the WSGI request from openstack.common import context from openstack.common import importutils -from openstack.common import wsgi +from openstack.common.middleware import base -class ContextMiddleware(wsgi.Middleware): +class ContextMiddleware(base.Middleware): def __init__(self, app, options): self.options = options super(ContextMiddleware, self).__init__(app) diff --git a/openstack/common/middleware/correlation_id.py b/openstack/common/middleware/correlation_id.py index a3efe34..bffa0d7 100644 --- a/openstack/common/middleware/correlation_id.py +++ b/openstack/common/middleware/correlation_id.py @@ -17,11 +17,11 @@ """Middleware that attaches a correlation id to WSGI request""" +from openstack.common.middleware import base from openstack.common import uuidutils -from openstack.common import wsgi -class CorrelationIdMiddleware(wsgi.Middleware): +class CorrelationIdMiddleware(base.Middleware): def process_request(self, req): correlation_id = (req.headers.get("X_CORRELATION_ID") or diff --git a/openstack/common/middleware/debug.py b/openstack/common/middleware/debug.py new file mode 100644 index 0000000..b92af11 --- /dev/null +++ b/openstack/common/middleware/debug.py @@ -0,0 +1,60 @@ +# Copyright 2011 OpenStack Foundation. +# 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. +"""Debug middleware""" + +from __future__ import print_function + +import sys + +import webob.dec + +from openstack.common.middleware import base + + +class Debug(base.Middleware): + """ + Helper class that can be inserted into any WSGI application chain + to get information about the request and response. + """ + + @webob.dec.wsgify + def __call__(self, req): + print(("*" * 40) + " REQUEST ENVIRON") + for key, value in req.environ.items(): + print(key, "=", value) + print() + resp = req.get_response(self.application) + + print(("*" * 40) + " RESPONSE HEADERS") + for (key, value) in resp.headers.iteritems(): + print(key, "=", value) + print() + + resp.app_iter = self.print_generator(resp.app_iter) + + return resp + + @staticmethod + def print_generator(app_iter): + """ + Iterator that prints the contents of a wrapper string iterator + when iterated. + """ + print(("*" * 40) + " BODY") + for part in app_iter: + sys.stdout.write(part) + sys.stdout.flush() + yield part + print() diff --git a/openstack/common/middleware/sizelimit.py b/openstack/common/middleware/sizelimit.py index 45de527..1128b8a 100644 --- a/openstack/common/middleware/sizelimit.py +++ b/openstack/common/middleware/sizelimit.py @@ -22,8 +22,9 @@ from oslo.config import cfg import webob.dec import webob.exc +from openstack.common.deprecated import wsgi from openstack.common.gettextutils import _ -from openstack.common import wsgi +from openstack.common.middleware import base #default request size is 112k @@ -66,7 +67,7 @@ class LimitingReader(object): return result -class RequestBodySizeLimiter(wsgi.Middleware): +class RequestBodySizeLimiter(base.Middleware): """Limit the size of incoming requests.""" def __init__(self, *args, **kwargs): diff --git a/tests/unit/deprecated/__init__.py b/tests/unit/deprecated/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/unit/deprecated/__init__.py diff --git a/tests/unit/test_wsgi.py b/tests/unit/deprecated/test_wsgi.py index a3a4d32..72aeae7 100644 --- a/tests/unit/test_wsgi.py +++ b/tests/unit/deprecated/test_wsgi.py @@ -24,12 +24,13 @@ import routes import six import webob +from openstack.common.deprecated import wsgi from openstack.common import exception -from openstack.common import wsgi + from tests import utils TEST_VAR_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), - '..', 'var')) + '..', '..', 'var')) class RequestTest(utils.BaseTestCase): diff --git a/tests/unit/extension_stubs.py b/tests/unit/extension_stubs.py index 03b9702..4e44c9c 100644 --- a/tests/unit/extension_stubs.py +++ b/tests/unit/extension_stubs.py @@ -14,7 +14,7 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.common import wsgi +from openstack.common.deprecated import wsgi class StubExtension(object): |