diff options
-rw-r--r-- | nova/api/openstack/wsgi.py | 3 | ||||
-rw-r--r-- | nova/exception.py | 7 |
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): |