summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/tests/baremetal/test_driver.py13
-rw-r--r--nova/virt/baremetal/driver.py6
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)