summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/api/openstack/wsgi.py3
-rw-r--r--nova/exception.py7
2 files changed, 10 insertions, 0 deletions
diff --git a/nova/api/openstack/wsgi.py b/nova/api/openstack/wsgi.py
index 9be0501fd..02bf0900c 100644
--- a/nova/api/openstack/wsgi.py
+++ b/nova/api/openstack/wsgi.py
@@ -574,6 +574,9 @@ class ResourceExceptionHandler(object):
if isinstance(ex_value, exception.NotAuthorized):
msg = unicode(ex_value)
raise Fault(webob.exc.HTTPForbidden(explanation=msg))
+ elif isinstance(ex_value, exception.Invalid):
+ raise Fault(exception.ConvertedException(
+ code=ex_value.code, explanation=unicode(ex_value)))
elif isinstance(ex_value, TypeError):
exc_info = (ex_type, ex_value, ex_traceback)
LOG.error(_('Exception handling resource: %s') % ex_value,
diff --git a/nova/exception.py b/nova/exception.py
index 3caab9465..43d16642f 100644
--- a/nova/exception.py
+++ b/nova/exception.py
@@ -88,6 +88,8 @@ def wrap_db_error(f):
def _wrap(*args, **kwargs):
try:
return f(*args, **kwargs)
+ except UnicodeEncodeError:
+ raise InvalidUnicodeParameter()
except Exception, e:
LOG.exception(_('DB exception wrapped.'))
raise DBError(e)
@@ -275,6 +277,11 @@ class InvalidRPCConnectionReuse(Invalid):
message = _("Invalid reuse of an RPC connection.")
+class InvalidUnicodeParameter(Invalid):
+ message = _("Invalid Parameter: "
+ "Unicode is not supported by the current database.")
+
+
# Cannot be templated as the error syntax varies.
# msg needs to be constructed when raised.
class InvalidParameterValue(Invalid):