summaryrefslogtreecommitdiffstats
path: root/keystone/common/wsgi.py
diff options
context:
space:
mode:
authorChmouel Boudjnah <chmouel@enovance.com>2013-02-18 11:46:15 +0100
committerChmouel Boudjnah <chmouel@enovance.com>2013-02-22 13:55:47 +0100
commit0b4ee31f0f71d62c4955847ec775dc0541e5a2c6 (patch)
treeb5ee93f0139473199f9c99d3197db64e95a0bc6b /keystone/common/wsgi.py
parent9ec12e2e54e3cca84fda0fcc63a849eebcaafe96 (diff)
downloadkeystone-0b4ee31f0f71d62c4955847ec775dc0541e5a2c6.tar.gz
keystone-0b4ee31f0f71d62c4955847ec775dc0541e5a2c6.tar.xz
keystone-0b4ee31f0f71d62c4955847ec775dc0541e5a2c6.zip
catch errors in wsgi.Middleware.
- Catch errors in wsgi.Middleware like done in wsgi.Applications. - Add tests for test_middleware. - Fixes bug 1128379. Change-Id: I2e95595c392631aebf2682d4506e4dde78cd6d69
Diffstat (limited to 'keystone/common/wsgi.py')
-rw-r--r--keystone/common/wsgi.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/keystone/common/wsgi.py b/keystone/common/wsgi.py
index 4c9a90bf..72133f40 100644
--- a/keystone/common/wsgi.py
+++ b/keystone/common/wsgi.py
@@ -347,11 +347,21 @@ class Middleware(Application):
@webob.dec.wsgify(RequestClass=Request)
def __call__(self, request):
- response = self.process_request(request)
- if response:
- return response
- response = request.get_response(self.application)
- return self.process_response(request, response)
+ try:
+ response = self.process_request(request)
+ if response:
+ return response
+ response = request.get_response(self.application)
+ return self.process_response(request, response)
+ except exception.Error as e:
+ LOG.warning(e)
+ return render_exception(e)
+ except TypeError as e:
+ LOG.exception(e)
+ return render_exception(exception.ValidationError(e))
+ except Exception as e:
+ LOG.exception(e)
+ return render_exception(exception.UnexpectedError(exception=e))
class Debug(Middleware):