diff --git a/nova/exception.py b/nova/exception.py index ada55ba32..454a053a0 100644 --- a/nova/exception.py +++ b/nova/exception.py @@ -1050,6 +1050,14 @@ class InstanceNotFound(NotFound): message = _("Instance %(instance_id)s could not be found.") +class NodeNotFound(NotFound): + message = _("Node %(node_id)s could not be found.") + + +class NodeNotFoundByUUID(NotFound): + message = _("Node with UUID %(node_uuid)s could not be found.") + + class MarkerNotFound(NotFound): message = _("Marker %(marker)s could not be found.") diff --git a/nova/tests/baremetal/db/test_bm_node.py b/nova/tests/baremetal/db/test_bm_node.py index 3caa49cf1..204a6bf7b 100644 --- a/nova/tests/baremetal/db/test_bm_node.py +++ b/nova/tests/baremetal/db/test_bm_node.py @@ -65,7 +65,7 @@ class BareMetalNodesTestCase(base.BMDBTestCase): self.assertEquals(r['pm_address'], '1') self.assertRaises( - exception.InstanceNotFound, + exception.NodeNotFound, db.bm_node_get, self.context, -1) @@ -113,7 +113,7 @@ class BareMetalNodesTestCase(base.BMDBTestCase): db.bm_node_destroy(self.context, self.ids[0]) self.assertRaises( - exception.InstanceNotFound, + exception.NodeNotFound, db.bm_node_get, self.context, self.ids[0]) @@ -147,7 +147,7 @@ class BareMetalNodesTestCase(base.BMDBTestCase): self.assertEqual(self.ids[1], if_x['bm_node_id']) self.assertRaises( - exception.InstanceNotFound, + exception.NodeNotFound, db.bm_node_get, self.context, self.ids[0]) diff --git a/nova/tests/baremetal/db/utils.py b/nova/tests/baremetal/db/utils.py index 800305402..e3a7b8489 100644 --- a/nova/tests/baremetal/db/utils.py +++ b/nova/tests/baremetal/db/utils.py @@ -22,6 +22,7 @@ from nova.virt.baremetal.db.sqlalchemy import models as bm_models def new_bm_node(**kwargs): h = bm_models.BareMetalNode() h.id = kwargs.pop('id', None) + h.uuid = kwargs.pop('uuid', None) h.service_host = kwargs.pop('service_host', None) h.instance_uuid = kwargs.pop('instance_uuid', None) h.cpus = kwargs.pop('cpus', 1) diff --git a/nova/tests/baremetal/test_driver.py b/nova/tests/baremetal/test_driver.py index 21956b7b1..160ca35df 100644 --- a/nova/tests/baremetal/test_driver.py +++ b/nova/tests/baremetal/test_driver.py @@ -111,7 +111,7 @@ class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase): nic['port_no'], ) result['instance'] = utils.get_test_instance() - result['instance']['node'] = result['node']['id'] + result['instance']['node'] = result['node']['uuid'] result['spawn_params'] = dict( admin_password='test_pass', block_device_info=None, @@ -139,7 +139,7 @@ class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase): self.assertEqual(stats['cpu_arch'], 'test') self.assertEqual(stats['test_spec'], 'test_value') self.assertEqual(stats['hypervisor_type'], 'baremetal') - self.assertEqual(stats['hypervisor_hostname'], '123') + self.assertEqual(stats['hypervisor_hostname'], node['node']['uuid']) self.assertEqual(stats['host'], 'test_host') self.assertEqual(stats['vcpus'], 2) self.assertEqual(stats['host_memory_total'], 2048) @@ -153,7 +153,15 @@ class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase): def test_macs_for_instance(self): node = self._create_node() - expected = set(['01:23:45:67:89:01', '01:23:45:67:89:02']) + expected = set([nic['address'] for nic in node['nic_info']]) + self.assertEqual( + expected, self.driver.macs_for_instance(node['instance'])) + + def test_macs_for_instance_after_spawn(self): + node = self._create_node() + self.driver.spawn(**node['spawn_params']) + + expected = set([nic['address'] for nic in node['nic_info']]) self.assertEqual( expected, self.driver.macs_for_instance(node['instance'])) @@ -184,12 +192,12 @@ class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase): def test_spawn_node_not_found(self): node = self._create_node() db.bm_node_update(self.context, node['node']['id'], - {'id': 9876}) + {'uuid': 'hide-this-node'}) self.assertRaises(exception.NovaException, self.driver.spawn, **node['spawn_params']) - row = db.bm_node_get(self.context, 9876) + row = db.bm_node_get(self.context, node['node']['id']) self.assertEqual(row['task_state'], None) def test_spawn_fails(self): @@ -247,18 +255,18 @@ class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase): def test_get_available_resources(self): node = self._create_node() - resources = self.driver.get_available_resource(node['node']['id']) + resources = self.driver.get_available_resource(node['node']['uuid']) self.assertEqual(resources['memory_mb'], node['node_info']['memory_mb']) self.assertEqual(resources['memory_mb_used'], 0) self.driver.spawn(**node['spawn_params']) - resources = self.driver.get_available_resource(node['node']['id']) + resources = self.driver.get_available_resource(node['node']['uuid']) self.assertEqual(resources['memory_mb_used'], node['node_info']['memory_mb']) self.driver.destroy(**node['destroy_params']) - resources = self.driver.get_available_resource(node['node']['id']) + resources = self.driver.get_available_resource(node['node']['uuid']) self.assertEqual(resources['memory_mb_used'], 0) def test_get_available_nodes(self): @@ -281,7 +289,7 @@ class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase): ] node2 = self._create_node(node_info=node_info, nic_info=nic_info) self.assertEqual(2, len(self.driver.get_available_nodes())) - self.assertEqual(['123', '456'], + self.assertEqual([node1['node']['uuid'], node2['node']['uuid']], self.driver.get_available_nodes()) node1['instance']['hostname'] = 'test-host-1' @@ -298,5 +306,5 @@ class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase): self.driver.destroy(**node2['destroy_params']) self.assertEqual(2, len(self.driver.get_available_nodes())) - self.assertEqual(['123', '456'], + self.assertEqual([node1['node']['uuid'], node2['node']['uuid']], self.driver.get_available_nodes())