diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-01-15 05:15:22 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-01-15 05:15:22 +0000 |
| commit | 8fddd6ad445586dc2c59ace0b292ff9da7048561 (patch) | |
| tree | f96bb8585afebb100ffb75fd898c5b1f46f55256 | |
| parent | 7c4ea19d9b79a50557db1b3723f4d7fd5d574ff6 (diff) | |
| parent | 507daea012322b913128f5d201057966f8e3dfcf (diff) | |
| download | nova-8fddd6ad445586dc2c59ace0b292ff9da7048561.tar.gz nova-8fddd6ad445586dc2c59ace0b292ff9da7048561.tar.xz nova-8fddd6ad445586dc2c59ace0b292ff9da7048561.zip | |
Merge "Export the MAC addresses of nodes for bare-metal."
| -rw-r--r-- | nova/tests/baremetal/test_driver.py | 13 | ||||
| -rw-r--r-- | nova/virt/baremetal/driver.py | 6 |
2 files changed, 19 insertions, 0 deletions
diff --git a/nova/tests/baremetal/test_driver.py b/nova/tests/baremetal/test_driver.py index d5384eff0..37ef71881 100644 --- a/nova/tests/baremetal/test_driver.py +++ b/nova/tests/baremetal/test_driver.py @@ -136,6 +136,19 @@ class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase): row = db.bm_node_get(self.context, self.node['id']) self.assertEqual(row['task_state'], baremetal_states.ACTIVE) + def test_macs_for_instance(self): + self._create_node() + expected = set(['01:23:45:67:89:01', '01:23:45:67:89:02']) + self.assertEqual( + expected, self.driver.macs_for_instance(self.test_instance)) + + def test_macs_for_instance_no_interfaces(self): + # Nodes cannot boot with no MACs, so we raise an error if that happens. + self.nic_info = [] + self._create_node() + self.assertRaises(exception.NovaException, + self.driver.macs_for_instance, self.test_instance) + def test_spawn_node_in_use(self): self._create_node() db.bm_node_update(self.context, self.node['id'], diff --git a/nova/virt/baremetal/driver.py b/nova/virt/baremetal/driver.py index 62c0dff70..9904fdcd4 100644 --- a/nova/virt/baremetal/driver.py +++ b/nova/virt/baremetal/driver.py @@ -201,6 +201,12 @@ class BareMetalDriver(driver.ComputeDriver): % instance['uuid']) return node_id + def macs_for_instance(self, instance): + context = nova_context.get_admin_context() + node_id = self._require_node(instance) + return set(iface['address'] for iface in + db.bm_interface_get_all_by_bm_node_id(context, node_id)) + def spawn(self, context, instance, image_meta, injected_files, admin_password, network_info=None, block_device_info=None): node_id = self._require_node(instance) |
