summaryrefslogtreecommitdiffstats
path: root/openstack/common/middleware/debug.py
diff options
context:
space:
mode:
authorDoug Hellmann <doug.hellmann@dreamhost.com>2013-05-29 19:49:29 -0400
committerDoug Hellmann <doug.hellmann@dreamhost.com>2013-06-07 12:42:52 -0400
commit39c17cb13e005894c66daadc7317ff3d57fe2fd7 (patch)
treed34e4a1fabe9e69983554b1b2655a045e1d2ea22 /openstack/common/middleware/debug.py
parent106376d59f9a25fef94baf413316b22c7d4218d2 (diff)
downloadoslo-39c17cb13e005894c66daadc7317ff3d57fe2fd7.tar.gz
oslo-39c17cb13e005894c66daadc7317ff3d57fe2fd7.tar.xz
oslo-39c17cb13e005894c66daadc7317ff3d57fe2fd7.zip
Move wsgi module to deprecated package
As we are planning to deprecate the wsgi module, move it out of the main openstack/common folder to the new "deprecated" folder. Move some of the middleware classes into the middleware package, since those are still useful and should be maintained. There's still work to do to remove the dependency of the size limit middleware on the Request class in the now deprecated wsgi module. Refer to the mailing list thread at http://lists.openstack.org/pipermail/openstack-dev/2013-May/009666.html for additional details. Change-Id: I05ff583ef37174835393905a3066390f400ffdcf Signed-off-by: Doug Hellmann <doug.hellmann@dreamhost.com>
Diffstat (limited to 'openstack/common/middleware/debug.py')
-rw-r--r--openstack/common/middleware/debug.py60
1 files changed, 60 insertions, 0 deletions
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()