From 118cd39c61996785f21acfb1afecba5f0d3e7fb9 Mon Sep 17 00:00:00 2001 From: Adam Gandelman Date: Mon, 9 Mar 2015 14:41:36 -0700 Subject: [PATCH] Create test nodes for test_baremetal_nodes This test currently relies on pre-existing resources and races if run in parallel to other baremetal tests. This adds creation of 3 test nodes directly in Ironic to be tested via the Nova API extension. This also tags said test with the 'baremetal' test attribute. Closes-bug: #1425258 Change-Id: I4dbd37bdb2019b6eb0140d46a605d5c8392323f4 --- .../api/compute/admin/test_baremetal_nodes.py | 28 +++++++++++++------ .../baremetal/v1/json/baremetal_client.py | 2 +- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/tempest/api/compute/admin/test_baremetal_nodes.py b/tempest/api/compute/admin/test_baremetal_nodes.py index 1381f805d7..64099c3913 100644 --- a/tempest/api/compute/admin/test_baremetal_nodes.py +++ b/tempest/api/compute/admin/test_baremetal_nodes.py @@ -31,14 +31,26 @@ class BaremetalNodesAdminTestJSON(base.BaseV2ComputeAdminTest): skip_msg = ('%s skipped as Ironic is not available' % cls.__name__) raise cls.skipException(skip_msg) cls.client = cls.os_adm.baremetal_nodes_client + cls.ironic_client = cls.os_adm.baremetal_client - @test.attr(type='smoke') + @test.attr(type=['smoke', 'baremetal']) @test.idempotent_id('e475aa6e-416d-4fa4-b3af-28d5e84250fb') - def test_list_baremetal_nodes(self): - # List all baremetal nodes. - baremetal_nodes = self.client.list_baremetal_nodes() - self.assertNotEmpty(baremetal_nodes, "No baremetal nodes found.") + def test_list_get_baremetal_nodes(self): + # Create some test nodes in Ironic directly + test_nodes = [] + for i in range(0, 3): + _, node = self.ironic_client.create_node() + test_nodes.append(node) + self.addCleanup(self.ironic_client.delete_node, node['uuid']) - for node in baremetal_nodes: - baremetal_node = self.client.get_baremetal_node(node['id']) - self.assertEqual(node['id'], baremetal_node['id']) + # List all baremetal nodes and ensure our created test nodes are + # listed + bm_node_ids = set([n['id'] for n in + self.client.list_baremetal_nodes()]) + test_node_ids = set([n['uuid'] for n in test_nodes]) + self.assertTrue(test_node_ids.issubset(bm_node_ids)) + + # Test getting each individually + for node in test_nodes: + baremetal_node = self.client.get_baremetal_node(node['uuid']) + self.assertEqual(node['uuid'], baremetal_node['id']) diff --git a/tempest/services/baremetal/v1/json/baremetal_client.py b/tempest/services/baremetal/v1/json/baremetal_client.py index 09b6cd193c..0c319f65bd 100644 --- a/tempest/services/baremetal/v1/json/baremetal_client.py +++ b/tempest/services/baremetal/v1/json/baremetal_client.py @@ -131,7 +131,7 @@ class BaremetalClientJSON(base.BaremetalClient): return self._show_request('drivers', driver_name) @base.handle_errors - def create_node(self, chassis_id, **kwargs): + def create_node(self, chassis_id=None, **kwargs): """ Create a baremetal node with the specified parameters.