summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorUnmesh Gurjar <unmesh.gurjar@vertex.co.in>2012-04-02 11:52:37 +0530
committerUnmesh Gurjar <unmesh.gurjar@vertex.co.in>2012-04-12 10:59:32 +0530
commit56dfbb59f9ad61d7f45d97f233db5d1cf0a46879 (patch)
tree6b5f309d2649ceaabf5d8ed63a59548915f5fc56 /nova/api
parent42f3bec10c7f7374ad4e9752b275b02ca2b2fdb9 (diff)
downloadnova-56dfbb59f9ad61d7f45d97f233db5d1cf0a46879.tar.gz
nova-56dfbb59f9ad61d7f45d97f233db5d1cf0a46879.tar.xz
nova-56dfbb59f9ad61d7f45d97f233db5d1cf0a46879.zip
Fixed metadata validation err. Fixes bug 965102.
1. Fixed the error message on specifying invalid server metadata key/value. 2. Added check to disallow specifying blank metadata key. 3. Added unit test coverage. Addressed review comments. Change-Id: I1f0002971dc236045d6e622641f46a4a30249d54
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 8ca49b64f..ca4948012 100644
--- a/nova/api/openstack/compute/servers.py
+++ b/nova/api/openstack/compute/servers.py
@@ -485,6 +485,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