summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorBrian Waldon <brian.waldon@rackspace.com>2011-08-08 16:38:14 -0400
committerBrian Waldon <brian.waldon@rackspace.com>2011-08-08 16:38:14 -0400
commit61cf3721ce94d7f2458e4e469cbee3333f954588 (patch)
tree378e9f184ce5150e9fbe5041c535a0b00bde210e /nova/api
parent047f6e0351c21ff2caff903731e61f10ac38e59d (diff)
cleaning up instance metadata api code
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/server_metadata.py28
1 files changed, 11 insertions, 17 deletions
diff --git a/nova/api/openstack/server_metadata.py b/nova/api/openstack/server_metadata.py
index b0b014f86..969769729 100644
--- a/nova/api/openstack/server_metadata.py
+++ b/nova/api/openstack/server_metadata.py
@@ -57,16 +57,7 @@ class Controller(object):
context = req.environ['nova.context']
- try:
- self.compute_api.update_or_create_instance_metadata(context,
- server_id,
- metadata)
- except exception.InstanceNotFound:
- msg = _('Server does not exist')
- raise exc.HTTPNotFound(explanation=msg)
-
- except quota.QuotaError as error:
- self._handle_quota_error(error)
+ self._update_instance_metadata(context, server_id, metadata, False)
return body
@@ -88,7 +79,7 @@ class Controller(object):
raise exc.HTTPBadRequest(explanation=expl)
context = req.environ['nova.context']
- self._set_instance_metadata(context, server_id, meta_item)
+ self._update_instance_metadata(context, server_id, meta_item, False)
return {'meta': {id: meta_value}}
@@ -100,20 +91,23 @@ class Controller(object):
raise exc.HTTPBadRequest(explanation=expl)
context = req.environ['nova.context']
- self._set_instance_metadata(context, server_id, metadata)
+ self._update_instance_metadata(context, server_id, metadata, True)
return {'metadata': metadata}
- def _set_instance_metadata(self, context, server_id, metadata):
+ def _update_instance_metadata(self, context, server_id, metadata,
+ delete=False):
try:
- self.compute_api.update_or_create_instance_metadata(context,
- server_id,
- metadata)
+ self.compute_api.update_instance_metadata(context,
+ server_id,
+ metadata,
+ delete)
+
except exception.InstanceNotFound:
msg = _('Server does not exist')
raise exc.HTTPNotFound(explanation=msg)
- except ValueError:
+ except (ValueError, AttributeError):
msg = _("Malformed request body")
raise exc.HTTPBadRequest(explanation=msg)