From 6fb6ac6bdf75e505cc0f3d65621ecae1937702b2 Mon Sep 17 00:00:00 2001 From: Giampaolo Lauria Date: Thu, 7 Feb 2013 21:11:50 -0500 Subject: Fixed FlavorAccess serializer Fixed flavor_access template Renamed remaining serializers Fixed serializer tests Fixes bug 1115880 Change-Id: I28913f1466ff6d1f7933c292ba617be2899c09a7 --- .../api/openstack/compute/contrib/flavor_access.py | 16 +++++------- .../compute/contrib/test_flavor_access.py | 30 ++++++---------------- 2 files changed, 14 insertions(+), 32 deletions(-) diff --git a/nova/api/openstack/compute/contrib/flavor_access.py b/nova/api/openstack/compute/contrib/flavor_access.py index 1c5006576..744fea13b 100644 --- a/nova/api/openstack/compute/contrib/flavor_access.py +++ b/nova/api/openstack/compute/contrib/flavor_access.py @@ -39,7 +39,7 @@ def make_flavor_access(elem): elem.set('tenant_id') -class FlavorextradatumTemplate(xmlutil.TemplateBuilder): +class FlavorTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('flavor', selector='flavor') make_flavor(root) @@ -48,7 +48,7 @@ class FlavorextradatumTemplate(xmlutil.TemplateBuilder): return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace}) -class FlavorextradataTemplate(xmlutil.TemplateBuilder): +class FlavorsTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('flavors') elem = xmlutil.SubTemplateElement(root, 'flavor', selector='flavors') @@ -60,11 +60,7 @@ class FlavorextradataTemplate(xmlutil.TemplateBuilder): class FlavorAccessTemplate(xmlutil.TemplateBuilder): def construct(self): - def wrapped(obj, do_raise=False): - # wrap bare list in dict - return dict(flavor_access=obj) - - root = xmlutil.TemplateElement('flavor_access', selector=wrapped) + root = xmlutil.TemplateElement('flavor_access') elem = xmlutil.SubTemplateElement(root, 'access', selector='flavor_access') make_flavor_access(elem) @@ -138,7 +134,7 @@ class FlavorActionController(wsgi.Controller): context = req.environ['nova.context'] if authorize(context): # Attach our slave template to the response object - resp_obj.attach(xml=FlavorextradatumTemplate()) + resp_obj.attach(xml=FlavorTemplate()) db_flavor = req.get_db_flavor(id) self._extend_flavor(resp_obj.obj['flavor'], db_flavor) @@ -148,7 +144,7 @@ class FlavorActionController(wsgi.Controller): context = req.environ['nova.context'] if authorize(context): # Attach our slave template to the response object - resp_obj.attach(xml=FlavorextradataTemplate()) + resp_obj.attach(xml=FlavorsTemplate()) flavors = list(resp_obj.obj['flavors']) for flavor_rval in flavors: @@ -160,7 +156,7 @@ class FlavorActionController(wsgi.Controller): context = req.environ['nova.context'] if authorize(context): # Attach our slave template to the response object - resp_obj.attach(xml=FlavorextradatumTemplate()) + resp_obj.attach(xml=FlavorTemplate()) db_flavor = req.get_db_flavor(resp_obj.obj['flavor']['id']) diff --git a/nova/tests/api/openstack/compute/contrib/test_flavor_access.py b/nova/tests/api/openstack/compute/contrib/test_flavor_access.py index 0818dfdd3..1475edc0a 100644 --- a/nova/tests/api/openstack/compute/contrib/test_flavor_access.py +++ b/nova/tests/api/openstack/compute/contrib/test_flavor_access.py @@ -252,35 +252,21 @@ class FlavorAccessTest(test.TestCase): class FlavorAccessSerializerTest(test.TestCase): - def test_xml_declaration(self): - access_list = [{'flavor_id': '2', 'tenant_id': 'proj2'}] - serializer = flavor_access.FlavorAccessTemplate() - output = serializer.serialize(access_list) - has_dec = output.startswith("") - self.assertTrue(has_dec) - def test_serializer_empty(self): - access_list = [] - serializer = flavor_access.FlavorAccessTemplate() - text = serializer.serialize(access_list) + text = serializer.serialize(dict(flavor_access=[])) tree = etree.fromstring(text) self.assertEqual(len(tree), 0) def test_serializer(self): + expected = ("\n" + '' + '' + '' + '') access_list = [{'flavor_id': '2', 'tenant_id': 'proj2'}, {'flavor_id': '2', 'tenant_id': 'proj3'}] serializer = flavor_access.FlavorAccessTemplate() - text = serializer.serialize(access_list) - tree = etree.fromstring(text) - - self.assertEqual('flavor_access', tree.tag) - self.assertEqual(len(access_list), len(tree)) - - for i in range(len(access_list)): - self.assertEqual('access', tree[i].tag) - self.assertEqual(access_list[i]['flavor_id'], - tree[i].get('flavor_id')) - self.assertEqual(access_list[i]['tenant_id'], - tree[i].get('tenant_id')) + text = serializer.serialize(dict(flavor_access=access_list)) + self.assertEqual(text, expected) -- cgit