summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorWilliam Wolf <throughnothing@gmail.com>2011-06-10 16:41:14 -0400
committerWilliam Wolf <throughnothing@gmail.com>2011-06-10 16:41:14 -0400
commit92423564aa24124b0144264d6cd1c57c78eaf5dd (patch)
tree845e3aa4cd7b1e7129f29c697e6ab731570cd8cf /nova/api
parent50c9ebfdc00a87d1a37a11501e5678de89e25a4f (diff)
return body correctly as object instead of a string, with tests, also check for empty body on requests that need a body
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/server_metadata.py11
-rw-r--r--nova/api/openstack/wsgi.py4
2 files changed, 13 insertions, 2 deletions
diff --git a/nova/api/openstack/server_metadata.py b/nova/api/openstack/server_metadata.py
index b38b84a2a..c17d77d46 100644
--- a/nova/api/openstack/server_metadata.py
+++ b/nova/api/openstack/server_metadata.py
@@ -37,12 +37,18 @@ class Controller(object):
meta_dict[key] = value
return dict(metadata=meta_dict)
+ def _check_body(self, body):
+ if not body:
+ expl = _('No Request Body')
+ raise exc.HTTPBadRequest(explanation=expl)
+
def index(self, req, server_id):
""" Returns the list of metadata for a given instance """
context = req.environ['nova.context']
return self._get_metadata(context, server_id)
def create(self, req, server_id, body):
+ self._check_body(body)
context = req.environ['nova.context']
metadata = body.get('metadata')
try:
@@ -51,9 +57,10 @@ class Controller(object):
metadata)
except quota.QuotaError as error:
self._handle_quota_error(error)
- return req.body
+ return body
def update(self, req, server_id, id, body):
+ self._check_body(body)
context = req.environ['nova.context']
if not id in body:
expl = _('Request body and URI mismatch')
@@ -68,7 +75,7 @@ class Controller(object):
except quota.QuotaError as error:
self._handle_quota_error(error)
- return req.body
+ return body
def show(self, req, server_id, id):
""" Return a single metadata item """
diff --git a/nova/api/openstack/wsgi.py b/nova/api/openstack/wsgi.py
index ddf4e6fa9..8c30cdeb9 100644
--- a/nova/api/openstack/wsgi.py
+++ b/nova/api/openstack/wsgi.py
@@ -348,16 +348,20 @@ class Resource(wsgi.Application):
LOG.debug("%(method)s %(url)s" % {"method": request.method,
"url": request.url})
+ print "CALL"
try:
action, action_args, accept = self.deserializer.deserialize(
request)
except exception.InvalidContentType:
return webob.exc.HTTPBadRequest(_("Unsupported Content-Type"))
+ print "CALL2"
action_result = self.dispatch(request, action, action_args)
+ print "ACTION RESULT:", action_result, isinstance(action_result, str)
#TODO(bcwaldon): find a more elegant way to pass through non-dict types
if type(action_result) is dict:
+ print "DICT"
response = self.serializer.serialize(action_result, accept)
else:
response = action_result