summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Waldon <bcwaldon@gmail.com>2012-02-21 12:06:44 -0800
committerBrian Waldon <bcwaldon@gmail.com>2012-02-21 12:06:44 -0800
commit47da3250da90bb960b310dc85f60e850979fe3fe (patch)
tree2bd619878d523f0b0e44134e23fb5f5426357011
parentadaf9049c8fb3652c0962909a3c835e1724d8a17 (diff)
downloadnova-47da3250da90bb960b310dc85f60e850979fe3fe.tar.gz
nova-47da3250da90bb960b310dc85f60e850979fe3fe.tar.xz
nova-47da3250da90bb960b310dc85f60e850979fe3fe.zip
Alter output format of volume types resources
* volumes types lists now fit in with the rest of our API * Fixes bug 934435 Change-Id: Ia67318be363230fcb2819c0df976b44f19dd0876
-rw-r--r--nova/api/openstack/compute/contrib/volumetypes.py6
-rw-r--r--nova/api/openstack/volume/types.py6
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_volume_types.py15
-rw-r--r--nova/tests/api/openstack/volume/test_types.py15
4 files changed, 24 insertions, 18 deletions
diff --git a/nova/api/openstack/compute/contrib/volumetypes.py b/nova/api/openstack/compute/contrib/volumetypes.py
index af68b3adb..d0d0575fd 100644
--- a/nova/api/openstack/compute/contrib/volumetypes.py
+++ b/nova/api/openstack/compute/contrib/volumetypes.py
@@ -47,8 +47,8 @@ class VolumeTypeTemplate(xmlutil.TemplateBuilder):
class VolumeTypesTemplate(xmlutil.TemplateBuilder):
def construct(self):
root = xmlutil.TemplateElement('volume_types')
- sel = lambda obj, do_raise=False: obj.values()
- elem = xmlutil.SubTemplateElement(root, 'volume_type', selector=sel)
+ elem = xmlutil.SubTemplateElement(root, 'volume_type',
+ selector='volume_types')
make_voltype(elem)
return xmlutil.MasterTemplate(root, 1)
@@ -61,7 +61,7 @@ class VolumeTypesController(object):
""" Returns the list of volume types """
context = req.environ['nova.context']
authorize(context)
- return volume_types.get_all_types(context)
+ return {'volume_types': volume_types.get_all_types(context).values()}
@wsgi.serializers(xml=VolumeTypeTemplate)
def create(self, req, body):
diff --git a/nova/api/openstack/volume/types.py b/nova/api/openstack/volume/types.py
index 97fb52497..80875e06f 100644
--- a/nova/api/openstack/volume/types.py
+++ b/nova/api/openstack/volume/types.py
@@ -42,8 +42,8 @@ class VolumeTypeTemplate(xmlutil.TemplateBuilder):
class VolumeTypesTemplate(xmlutil.TemplateBuilder):
def construct(self):
root = xmlutil.TemplateElement('volume_types')
- sel = lambda obj, do_raise=False: obj.values()
- elem = xmlutil.SubTemplateElement(root, 'volume_type', selector=sel)
+ elem = xmlutil.SubTemplateElement(root, 'volume_type',
+ selector='volume_types')
make_voltype(elem)
return xmlutil.MasterTemplate(root, 1)
@@ -55,7 +55,7 @@ class VolumeTypesController(object):
def index(self, req):
""" Returns the list of volume types """
context = req.environ['nova.context']
- return volume_types.get_all_types(context)
+ return {'volume_types': volume_types.get_all_types(context).values()}
@wsgi.serializers(xml=VolumeTypeTemplate)
def show(self, req, id):
diff --git a/nova/tests/api/openstack/compute/contrib/test_volume_types.py b/nova/tests/api/openstack/compute/contrib/test_volume_types.py
index 843287684..b8581b99d 100644
--- a/nova/tests/api/openstack/compute/contrib/test_volume_types.py
+++ b/nova/tests/api/openstack/compute/contrib/test_volume_types.py
@@ -87,10 +87,13 @@ class VolumeTypesApiTest(test.TestCase):
req = fakes.HTTPRequest.blank('/v2/fake/os-volume-types')
res_dict = self.controller.index(req)
- self.assertEqual(3, len(res_dict))
- for name in ['vol_type_1', 'vol_type_2', 'vol_type_3']:
- self.assertEqual(name, res_dict[name]['name'])
- self.assertEqual('value1', res_dict[name]['extra_specs']['key1'])
+ self.assertEqual(3, len(res_dict['volume_types']))
+
+ expected_names = ['vol_type_1', 'vol_type_2', 'vol_type_3']
+ actual_names = map(lambda e: e['name'], res_dict['volume_types'])
+ self.assertEqual(set(actual_names), set(expected_names))
+ for entry in res_dict['volume_types']:
+ self.assertEqual('value1', entry['extra_specs']['key1'])
def test_volume_types_index_no_data(self):
self.stubs.Set(volume_types, 'get_all_types',
@@ -99,7 +102,7 @@ class VolumeTypesApiTest(test.TestCase):
req = fakes.HTTPRequest.blank('/v2/fake/os-volume-types')
res_dict = self.controller.index(req)
- self.assertEqual(0, len(res_dict))
+ self.assertEqual(0, len(res_dict['volume_types']))
def test_volume_types_show(self):
self.stubs.Set(volume_types, 'get_volume_type',
@@ -183,7 +186,7 @@ class VolumeTypesSerializerTest(test.TestCase):
# Just getting some input data
vtypes = return_volume_types_get_all_types(None)
- text = serializer.serialize(vtypes)
+ text = serializer.serialize({'volume_types': vtypes.values()})
print text
tree = etree.fromstring(text)
diff --git a/nova/tests/api/openstack/volume/test_types.py b/nova/tests/api/openstack/volume/test_types.py
index 8178a989e..e16d853e5 100644
--- a/nova/tests/api/openstack/volume/test_types.py
+++ b/nova/tests/api/openstack/volume/test_types.py
@@ -87,10 +87,13 @@ class VolumeTypesApiTest(test.TestCase):
req = fakes.HTTPRequest.blank('/v2/123/os-volume-types')
res_dict = self.controller.index(req)
- self.assertEqual(3, len(res_dict))
- for name in ['vol_type_1', 'vol_type_2', 'vol_type_3']:
- self.assertEqual(name, res_dict[name]['name'])
- self.assertEqual('value1', res_dict[name]['extra_specs']['key1'])
+ self.assertEqual(3, len(res_dict['volume_types']))
+
+ expected_names = ['vol_type_1', 'vol_type_2', 'vol_type_3']
+ actual_names = map(lambda e: e['name'], res_dict['volume_types'])
+ self.assertEqual(set(actual_names), set(expected_names))
+ for entry in res_dict['volume_types']:
+ self.assertEqual('value1', entry['extra_specs']['key1'])
def test_volume_types_index_no_data(self):
self.stubs.Set(volume_types, 'get_all_types',
@@ -99,7 +102,7 @@ class VolumeTypesApiTest(test.TestCase):
req = fakes.HTTPRequest.blank('/v2/123/os-volume-types')
res_dict = self.controller.index(req)
- self.assertEqual(0, len(res_dict))
+ self.assertEqual(0, len(res_dict['volume_types']))
def test_volume_types_show(self):
self.stubs.Set(volume_types, 'get_volume_type',
@@ -140,7 +143,7 @@ class VolumeTypesSerializerTest(test.TestCase):
# Just getting some input data
vtypes = return_volume_types_get_all_types(None)
- text = serializer.serialize(vtypes)
+ text = serializer.serialize({'volume_types': vtypes.values()})
print text
tree = etree.fromstring(text)