summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/compute/server_metadata.py14
-rw-r--r--nova/api/openstack/compute/servers.py5
2 files changed, 17 insertions, 2 deletions
diff --git a/nova/api/openstack/compute/server_metadata.py b/nova/api/openstack/compute/server_metadata.py
index bdef6fbf4..a2fb53e7e 100644
--- a/nova/api/openstack/compute/server_metadata.py
+++ b/nova/api/openstack/compute/server_metadata.py
@@ -161,8 +161,18 @@ class Controller(object):
def _handle_quota_error(self, error):
"""Reraise quota errors as api-specific http exceptions."""
- if error.kwargs['code'] == "MetadataLimitExceeded":
- raise exc.HTTPRequestEntityTooLarge(explanation=error.message,
+ code_mappings = {
+ "MetadataKeyValueLimitExceeded":
+ _("Metadata property key or value greater than 255 "
+ "characters"),
+ "MetadataKeyUnspecified":
+ _("Metadata property key blank"),
+ "MetadataLimitExceeded":
+ error.message % error.kwargs
+ }
+ expl = code_mappings.get(error.kwargs['code'])
+ if expl:
+ raise exc.HTTPRequestEntityTooLarge(explanation=expl,
headers={'Retry-After': 0})
raise error
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py
index 2e7b184c4..08b695477 100644
--- a/nova/api/openstack/compute/servers.py
+++ b/nova/api/openstack/compute/servers.py
@@ -478,6 +478,11 @@ class Controller(wsgi.Controller):
_("Personality file path too long"),
"OnsetFileContentLimitExceeded":
_("Personality file content too long"),
+ "MetadataKeyValueLimitExceeded":
+ _("Metadata property key or value greater than 255 "
+ "characters"),
+ "MetadataKeyUnspecified":
+ _("Metadata property key blank"),
# NOTE(bcwaldon): expose the message generated below in order
# to better explain how the quota was exceeded