From f2baacd4e634b815fe011ced0d6e46f6c06b7fdd Mon Sep 17 00:00:00 2001 From: Robert Collins Date: Tue, 15 Jan 2013 13:44:21 +1300 Subject: Break out a helper function for working with bare metal nodes. This makes it easier to get a bare metal internal node id when called from the manager. Change-Id: I1b39a7be5bd21d5b3060f11a74b9eaf79b107210 --- nova/virt/baremetal/driver.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/nova/virt/baremetal/driver.py b/nova/virt/baremetal/driver.py index f66864127..62c0dff70 100644 --- a/nova/virt/baremetal/driver.py +++ b/nova/virt/baremetal/driver.py @@ -188,13 +188,22 @@ class BareMetalDriver(driver.ComputeDriver): l.append(inst['name']) return l - def spawn(self, context, instance, image_meta, injected_files, - admin_password, network_info=None, block_device_info=None): + def _require_node(self, instance): + """Get a node_id out of a manager instance dict. + The compute manager is meant to know the node id, so a missing node is + a significant issue - it may mean we've been passed someone elses data. + """ node_id = instance.get('node') if not node_id: raise exception.NovaException(_( - "Baremetal node id not supplied to driver")) + "Baremetal node id not supplied to driver for %r") + % instance['uuid']) + return 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) # NOTE(deva): this db method will raise an exception if the node is # already in use. We call it here to ensure no one else -- cgit