Skip to content

Commit

Permalink
Alter output format of volume types resources
Browse files Browse the repository at this point in the history
* volumes types lists now fit in with the rest of our API
* Fixes bug 934435

Change-Id: Ia67318be363230fcb2819c0df976b44f19dd0876
  • Loading branch information
bcwaldon committed Feb 21, 2012
1 parent adaf904 commit 47da325
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 18 deletions.
6 changes: 3 additions & 3 deletions nova/api/openstack/compute/contrib/volumetypes.py
Expand Up @@ -47,8 +47,8 @@ def construct(self):
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)

Expand All @@ -61,7 +61,7 @@ def index(self, req):
""" 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):
Expand Down
6 changes: 3 additions & 3 deletions nova/api/openstack/volume/types.py
Expand Up @@ -42,8 +42,8 @@ def construct(self):
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)

Expand All @@ -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):
Expand Down
15 changes: 9 additions & 6 deletions nova/tests/api/openstack/compute/contrib/test_volume_types.py
Expand Up @@ -87,10 +87,13 @@ def test_volume_types_index(self):
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',
Expand All @@ -99,7 +102,7 @@ def test_volume_types_index_no_data(self):
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',
Expand Down Expand Up @@ -183,7 +186,7 @@ def test_index_serializer(self):

# 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)
Expand Down
15 changes: 9 additions & 6 deletions nova/tests/api/openstack/volume/test_types.py
Expand Up @@ -87,10 +87,13 @@ def test_volume_types_index(self):
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',
Expand All @@ -99,7 +102,7 @@ def test_volume_types_index_no_data(self):
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',
Expand Down Expand Up @@ -140,7 +143,7 @@ def test_index_serializer(self):

# 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)
Expand Down

0 comments on commit 47da325

Please sign in to comment.