summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/api/direct.py2
-rw-r--r--nova/api/openstack/__init__.py2
-rw-r--r--nova/api/openstack/faults.py2
-rw-r--r--nova/api/openstack/servers.py2
-rw-r--r--nova/tests/api/openstack/common.py1
-rw-r--r--nova/tests/api/test_wsgi.py18
-rw-r--r--nova/wsgi.py4
7 files changed, 16 insertions, 15 deletions
diff --git a/nova/api/direct.py b/nova/api/direct.py
index 1d699f947..dfca250e0 100644
--- a/nova/api/direct.py
+++ b/nova/api/direct.py
@@ -206,7 +206,7 @@ class ServiceWrapper(wsgi.Controller):
params = dict([(str(k), v) for (k, v) in params.iteritems()])
result = method(context, **params)
if type(result) is dict or type(result) is list:
- return self._serialize(result, req.best_match())
+ return self._serialize(result, req.best_match_content_type())
else:
return result
diff --git a/nova/api/openstack/__init__.py b/nova/api/openstack/__init__.py
index 6e1a2a06c..197fcc619 100644
--- a/nova/api/openstack/__init__.py
+++ b/nova/api/openstack/__init__.py
@@ -125,5 +125,5 @@ class Versions(wsgi.Application):
"application/xml": {
"attributes": dict(version=["status", "id"])}}
- content_type = req.best_match()
+ content_type = req.best_match_content_type()
return wsgi.Serializer(metadata).serialize(response, content_type)
diff --git a/nova/api/openstack/faults.py b/nova/api/openstack/faults.py
index 075fdb997..2fd733299 100644
--- a/nova/api/openstack/faults.py
+++ b/nova/api/openstack/faults.py
@@ -58,6 +58,6 @@ class Fault(webob.exc.HTTPException):
# 'code' is an attribute on the fault tag itself
metadata = {'application/xml': {'attributes': {fault_name: 'code'}}}
serializer = wsgi.Serializer(metadata)
- content_type = req.best_match()
+ content_type = req.best_match_content_type()
self.wrapped_exc.body = serializer.serialize(fault_data, content_type)
return self.wrapped_exc
diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py
index 8dd078a31..25c667532 100644
--- a/nova/api/openstack/servers.py
+++ b/nova/api/openstack/servers.py
@@ -217,7 +217,7 @@ class Controller(wsgi.Controller):
'rebuild': self._action_rebuild,
}
- input_dict = self._deserialize(req.body, req)
+ input_dict = self._deserialize(req.body, req.get_content_type())
for key in actions.keys():
if key in input_dict:
return actions[key](input_dict, req, id)
diff --git a/nova/tests/api/openstack/common.py b/nova/tests/api/openstack/common.py
index 3f9c7d3cf..74bb8729a 100644
--- a/nova/tests/api/openstack/common.py
+++ b/nova/tests/api/openstack/common.py
@@ -28,6 +28,7 @@ def webob_factory(url):
def web_request(url, method=None, body=None):
req = webob.Request.blank("%s%s" % (base_url, url))
if method:
+ req.content_type = "application/json"
req.method = method
if body:
req.body = json.dumps(body)
diff --git a/nova/tests/api/test_wsgi.py b/nova/tests/api/test_wsgi.py
index 7c0135656..b1a849cf9 100644
--- a/nova/tests/api/test_wsgi.py
+++ b/nova/tests/api/test_wsgi.py
@@ -139,48 +139,48 @@ class RequestTest(test.TestCase):
def test_content_type_from_accept_xml(self):
request = wsgi.Request.blank('/tests/123')
request.headers["Accept"] = "application/xml"
- result = request.best_match()
+ result = request.best_match_content_type()
self.assertEqual(result, "application/xml")
request = wsgi.Request.blank('/tests/123')
request.headers["Accept"] = "application/json"
- result = request.best_match()
+ result = request.best_match_content_type()
self.assertEqual(result, "application/json")
request = wsgi.Request.blank('/tests/123')
request.headers["Accept"] = "application/xml, application/json"
- result = request.best_match()
+ result = request.best_match_content_type()
self.assertEqual(result, "application/json")
request = wsgi.Request.blank('/tests/123')
request.headers["Accept"] = \
"application/json; q=0.3, application/xml; q=0.9"
- result = request.best_match()
+ result = request.best_match_content_type()
self.assertEqual(result, "application/xml")
def test_content_type_from_query_extension(self):
request = wsgi.Request.blank('/tests/123.xml')
- result = request.best_match()
+ result = request.best_match_content_type()
self.assertEqual(result, "application/xml")
request = wsgi.Request.blank('/tests/123.json')
- result = request.best_match()
+ result = request.best_match_content_type()
self.assertEqual(result, "application/json")
request = wsgi.Request.blank('/tests/123.invalid')
- result = request.best_match()
+ result = request.best_match_content_type()
self.assertEqual(result, "application/json")
def test_content_type_accept_and_query_extension(self):
request = wsgi.Request.blank('/tests/123.xml')
request.headers["Accept"] = "application/json"
- result = request.best_match()
+ result = request.best_match_content_type()
self.assertEqual(result, "application/xml")
def test_content_type_accept_default(self):
request = wsgi.Request.blank('/tests/123.unsupported')
request.headers["Accept"] = "application/unsupported1"
- result = request.best_match()
+ result = request.best_match_content_type()
self.assertEqual(result, "application/json")
diff --git a/nova/wsgi.py b/nova/wsgi.py
index c3e08522d..2d18da8fb 100644
--- a/nova/wsgi.py
+++ b/nova/wsgi.py
@@ -85,7 +85,7 @@ class Server(object):
class Request(webob.Request):
- def best_match(self):
+ def best_match_content_type(self):
"""
Determine the most acceptable content-type based on the
query extension then the Accept header
@@ -354,7 +354,7 @@ class Controller(object):
result = method(**arg_dict)
if type(result) is dict:
- content_type = req.best_match()
+ content_type = req.best_match_content_type()
body = self._serialize(result, content_type)
response = webob.Response()