diff options
| author | Unmesh Gurjar <unmesh.gurjar@vertex.co.in> | 2012-04-02 11:52:37 +0530 |
|---|---|---|
| committer | Unmesh Gurjar <unmesh.gurjar@vertex.co.in> | 2012-04-12 10:59:32 +0530 |
| commit | 56dfbb59f9ad61d7f45d97f233db5d1cf0a46879 (patch) | |
| tree | 6b5f309d2649ceaabf5d8ed63a59548915f5fc56 /nova/api | |
| parent | 42f3bec10c7f7374ad4e9752b275b02ca2b2fdb9 (diff) | |
| download | nova-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.py | 14 | ||||
| -rw-r--r-- | nova/api/openstack/compute/servers.py | 5 |
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 |
