From 544cef78a6c45213a86ed0421bba94ab9d6a5e1d Mon Sep 17 00:00:00 2001 From: Tzu-Mainn Chen Date: Tue, 30 Jul 2013 16:46:41 -0400 Subject: [PATCH] Fixed rack tests This patch fixes the tests. There's one failure left; fixing it requires stubbing out the baremetal client, which I'm holding off on doing for now. Change-Id: I30e5ffd187a3309906909e7f0a75583d957c42fc --- openstack_dashboard/api/tuskar.py | 3 +- .../resource_management/racks/tests.py | 32 +++++++++++++------ .../test/api_tests/tuskar_tests.py | 12 ++++++- .../test/test_data/tuskar_data.py | 2 +- 4 files changed, 36 insertions(+), 13 deletions(-) diff --git a/openstack_dashboard/api/tuskar.py b/openstack_dashboard/api/tuskar.py index a0b15ab77..bebccc704 100644 --- a/openstack_dashboard/api/tuskar.py +++ b/openstack_dashboard/api/tuskar.py @@ -735,8 +735,7 @@ class ResourceClass(StringIdAPIResourceWrapper): @property def nodes(self): if not hasattr(self, '_nodes'): - nodes_array = [rack.nodes for rack in self.racks] - self._nodes = [node for nodes in nodes_array for node in nodes] + self._nodes = [rack.list_nodes for rack in self.list_racks] return self._nodes @property diff --git a/openstack_dashboard/dashboards/infrastructure/resource_management/racks/tests.py b/openstack_dashboard/dashboards/infrastructure/resource_management/racks/tests.py index 1570ab074..63e1ed1f6 100644 --- a/openstack_dashboard/dashboards/infrastructure/resource_management/racks/tests.py +++ b/openstack_dashboard/dashboards/infrastructure/resource_management/racks/tests.py @@ -43,13 +43,18 @@ class RackViewTests(test.BaseAdminViewTests): # to circle back and fix these tests. # @test.create_stubs({api.tuskar.Rack: ('list', 'create',), - api.tuskar.ResourceClass: ('list',)}) + api.tuskar.ResourceClass: ('list',), + api.nova.baremetal.BareMetalNodeManager: ('create',)}) def test_create_rack_post(self): api.tuskar.Rack.list( IsA(http.request.HttpRequest)).AndReturn( self.tuskar_racks.list()) - api.tuskar.Rack.create(IsA(http.request.HttpRequest), 'New Rack', - u'1', 'Tokyo', '1.2.3.4').AndReturn(None) + api.nova.baremetal.BareMetalNodeManager.create( + 'New Node', u'1', u'1024', u'10', 'aa:bb:cc:dd:ee', + u'', u'', u'', u'').AndReturn(None) + api.tuskar.Rack.create( + IsA(http.request.HttpRequest), 'New Rack', + u'1', 'Tokyo', '1.2.3.4', [{'id': None}]).AndReturn(None) api.tuskar.ResourceClass.list( IsA(http.request.HttpRequest)).AndReturn( self.tuskar_resource_classes.list()) @@ -57,7 +62,9 @@ class RackViewTests(test.BaseAdminViewTests): self.mox.ReplayAll() data = {'name': 'New Rack', 'resource_class_id': u'1', - 'location': 'Tokyo', 'subnet': '1.2.3.4'} + 'location': 'Tokyo', 'subnet': '1.2.3.4', + 'node_name': 'New Node', 'prov_mac_address': 'aa:bb:cc:dd:ee', + 'cpus': u'1', 'memory_mb': u'1024', 'local_gb': u'10'} url = reverse('horizon:infrastructure:resource_management:' 'racks:create') resp = self.client.post(url, data) @@ -70,13 +77,15 @@ class RackViewTests(test.BaseAdminViewTests): api.tuskar.Rack.\ get(IsA(http.HttpRequest), rack.id).\ - AndReturn(rack) + MultipleTimes().AndReturn(rack) api.tuskar.ResourceClass.list( IsA(http.request.HttpRequest)).AndReturn( self.tuskar_resource_classes.list()) self.mox.ReplayAll() + api.tuskar.Rack.list_nodes = [] + url = reverse('horizon:infrastructure:resource_management:' + 'racks:edit', args=[1]) res = self.client.get(url) @@ -89,18 +98,23 @@ class RackViewTests(test.BaseAdminViewTests): def test_edit_rack_post(self): rack = self.tuskar_racks.first() + rack_data = {'name': 'Updated Rack', 'resource_class_id': u'1', + 'rack_id': u'1', 'location': 'New Location', + 'subnet': '127.10.10.0/24', 'node_macs': None} + data = {'name': 'Updated Rack', 'resource_class_id': u'1', 'rack_id': u'1', 'location': 'New Location', - 'subnet': '127.10.10.0/24', 'node_macs': 'foo'} + 'subnet': '127.10.10.0/24', 'node_macs': None, + 'node_name': 'New Node', 'prov_mac_address': 'aa:bb:cc:dd:ee', + 'cpus': u'1', 'memory_mb': u'1024', 'local_gb': u'10'} api.tuskar.Rack.get( - IsA(http.HttpRequest), - rack.id).\ + IsA(http.HttpRequest), rack.id).MultipleTimes().\ AndReturn(rack) api.tuskar.Rack.list( IsA(http.request.HttpRequest)).AndReturn( self.tuskar_racks.list()) - api.tuskar.Rack.update(IsA(http.HttpRequest), rack.id, data) + api.tuskar.Rack.update(IsA(http.HttpRequest), rack.id, rack_data) api.tuskar.ResourceClass.list( IsA(http.request.HttpRequest)).AndReturn( self.tuskar_resource_classes.list()) diff --git a/openstack_dashboard/test/api_tests/tuskar_tests.py b/openstack_dashboard/test/api_tests/tuskar_tests.py index b070c120d..4730c44b9 100644 --- a/openstack_dashboard/test/api_tests/tuskar_tests.py +++ b/openstack_dashboard/test/api_tests/tuskar_tests.py @@ -77,9 +77,19 @@ class TuskarApiTests(test.APITestCase): self.assertIsInstance(rack, api.tuskar.Rack) self.assertEquals(1, len(rc.list_racks)) + ## FIXME: we need to stub out the bare metal client, will + ## be easier once the client is separated out a bit def test_resource_class_nodes(self): rc = self.tuskar_resource_classes.first() - for node in rc.list_nodes: + r = self.tuskar_racks.first() + n = self.nodes.first() + + tuskarclient = self.stub_tuskarclient() + tuskarclient.racks = self.mox.CreateMockAnything() + tuskarclient.racks.get(r.id).AndReturn(r) + self.mox.ReplayAll() + + for node in rc.nodes: self.assertIsInstance(node, api.tuskar.Node) self.assertEquals(4, len(rc.nodes)) diff --git a/openstack_dashboard/test/test_data/tuskar_data.py b/openstack_dashboard/test/test_data/tuskar_data.py index 11474c32e..08c42da75 100644 --- a/openstack_dashboard/test/test_data/tuskar_data.py +++ b/openstack_dashboard/test/test_data/tuskar_data.py @@ -122,7 +122,7 @@ def data(TEST): location='location', subnet='192.168.1.0/24', state='provisioned', - nodes=[{'id': 1}, {'id': 2}, {'id': 3}, {'id': 4}], + nodes=[{'id': '1'}, {'id': '2'}, {'id': '3'}, {'id': '4'}], resource_class={'id': '1'})) TEST.tuskar_racks.add(rack_1)