summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-06-11 07:38:06 +0000
committerGerrit Code Review <review@openstack.org>2013-06-11 07:38:06 +0000
commit6afd788f3eb21e90886bfe98e2bf66f2a829217d (patch)
tree9d427f65759b599c391720de82671f14b07be216
parentb41862d310164ea91f65abdeaa406617016e9076 (diff)
parent39c17cb13e005894c66daadc7317ff3d57fe2fd7 (diff)
downloadoslo-6afd788f3eb21e90886bfe98e2bf66f2a829217d.tar.gz
oslo-6afd788f3eb21e90886bfe98e2bf66f2a829217d.tar.xz
oslo-6afd788f3eb21e90886bfe98e2bf66f2a829217d.zip
Merge "Move wsgi module to deprecated package"
-rw-r--r--openstack/common/deprecated/__init__.py0
-rw-r--r--openstack/common/deprecated/wsgi.py (renamed from openstack/common/wsgi.py)85
-rw-r--r--openstack/common/middleware/base.py62
-rw-r--r--openstack/common/middleware/context.py4
-rw-r--r--openstack/common/middleware/correlation_id.py4
-rw-r--r--openstack/common/middleware/debug.py60
-rw-r--r--openstack/common/middleware/sizelimit.py5
-rw-r--r--tests/unit/deprecated/__init__.py0
-rw-r--r--tests/unit/deprecated/test_wsgi.py (renamed from tests/unit/test_wsgi.py)5
-rw-r--r--tests/unit/extension_stubs.py2
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):