summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorBrian Waldon <brian.waldon@rackspace.com>2011-06-17 17:40:48 -0400
committerBrian Waldon <brian.waldon@rackspace.com>2011-06-17 17:40:48 -0400
commite2fa70fb9d2b6684823328a491e18c0f98184665 (patch)
treee03c32d3ee714b60938a018dfd9939ec726aea2f /nova/api
parent86e8463319f55f4d7d82ab89d876a00e1c3b5508 (diff)
downloadnova-e2fa70fb9d2b6684823328a491e18c0f98184665.tar.gz
nova-e2fa70fb9d2b6684823328a491e18c0f98184665.tar.xz
nova-e2fa70fb9d2b6684823328a491e18c0f98184665.zip
moving instance existance logic down to api layer
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/server_metadata.py47
1 files changed, 29 insertions, 18 deletions
diff --git a/nova/api/openstack/server_metadata.py b/nova/api/openstack/server_metadata.py
index ec9e10496..8a314de22 100644
--- a/nova/api/openstack/server_metadata.py
+++ b/nova/api/openstack/server_metadata.py
@@ -43,36 +43,35 @@ class Controller(object):
expl = _('No Request Body')
raise exc.HTTPBadRequest(explanation=expl)
- def _check_server_exists(self, context, server_id):
- try:
- self.compute_api.routing_get(context, server_id)
- except exception.InstanceNotFound:
- msg = _('Server does not exist')
- raise exc.HTTPNotFound(explanation=msg)
-
def index(self, req, server_id):
""" Returns the list of metadata for a given instance """
context = req.environ['nova.context']
- self._check_server_exists(context, server_id)
- return self._get_metadata(context, server_id)
+ try:
+ return self._get_metadata(context, server_id)
+ except exception.InstanceNotFound:
+ msg = _('Server %(server_id)s does not exist') % locals()
+ raise exc.HTTPNotFound(explanation=msg)
def create(self, req, server_id, body):
self._check_body(body)
context = req.environ['nova.context']
- self._check_server_exists(context, server_id)
metadata = body.get('metadata')
try:
self.compute_api.update_or_create_instance_metadata(context,
server_id,
metadata)
+ except exception.InstanceNotFound:
+ msg = _('Server %(server_id)s does not exist') % locals()
+ raise exc.HTTPNotFound(explanation=msg)
+
except quota.QuotaError as error:
self._handle_quota_error(error)
+
return body
def update(self, req, server_id, id, body):
self._check_body(body)
context = req.environ['nova.context']
- self._check_server_exists(context, server_id)
if not id in body:
expl = _('Request body and URI mismatch')
raise exc.HTTPBadRequest(explanation=expl)
@@ -83,6 +82,10 @@ class Controller(object):
self.compute_api.update_or_create_instance_metadata(context,
server_id,
body)
+ except exception.InstanceNotFound:
+ msg = _('Server %(server_id)s does not exist') % locals()
+ raise exc.HTTPNotFound(explanation=msg)
+
except quota.QuotaError as error:
self._handle_quota_error(error)
@@ -91,18 +94,26 @@ class Controller(object):
def show(self, req, server_id, id):
""" Return a single metadata item """
context = req.environ['nova.context']
- self._check_server_exists(context, server_id)
- data = self._get_metadata(context, server_id)
- if id in data['metadata']:
+ try:
+ data = self._get_metadata(context, server_id)
+ except exception.InstanceNotFound:
+ msg = _('Server %(server_id)s does not exist') % locals()
+ raise exc.HTTPNotFound(explanation=msg)
+
+ try:
return {id: data['metadata'][id]}
- else:
- return faults.Fault(exc.HTTPNotFound())
+ except KeyError:
+ msg = _("metadata item %s was not found" % (id))
+ raise exc.HTTPNotFound(explanation=msg)
def delete(self, req, server_id, id):
""" Deletes an existing metadata """
context = req.environ['nova.context']
- self._check_server_exists(context, server_id)
- self.compute_api.delete_instance_metadata(context, server_id, id)
+ try:
+ self.compute_api.delete_instance_metadata(context, server_id, id)
+ except exception.InstanceNotFound:
+ msg = _('Server %(server_id)s does not exist') % locals()
+ raise exc.HTTPNotFound(explanation=msg)
def _handle_quota_error(self, error):
"""Reraise quota errors as api-specific http exceptions."""