summaryrefslogtreecommitdiffstats
path: root/nova/compute
diff options
context:
space:
mode:
authorRobert Collins <robertc@robertcollins.net>2013-01-15 13:00:10 +1300
committerRobert Collins <robertc@robertcollins.net>2013-01-15 13:00:35 +1300
commitb6b9ca1136de4b1dbb01b059d8e954dbaf0508cb (patch)
treed1af162543dd4b960755ddc1f05a8c426e51111a /nova/compute
parentce0a7700595c57db132c2c07704c29e88a078dda (diff)
Define a hypervisor driver method for getting MAC addresses.
This lets hypervisors export the MAC addresses an instance needs to have (or return the default of None if the hypervisor is not constrained by MAC addresses). being provisioned. Change-Id: I319a8deb2d09fbf8cecb7071256cf931924ef0e9
Diffstat (limited to 'nova/compute')
-rw-r--r--nova/compute/manager.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index 4fa88084b..a4f17ee3d 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -678,9 +678,9 @@ class ComputeManager(manager.SchedulerDependentManager):
try:
limits = filter_properties.get('limits', {})
with rt.instance_claim(context, instance, limits):
-
+ macs = self.driver.macs_for_instance(instance)
network_info = self._allocate_network(context, instance,
- requested_networks)
+ requested_networks, macs)
block_device_info = self._prep_block_device(context,
instance, bdms)
instance = self._spawn(context, instance, image_meta,
@@ -911,7 +911,7 @@ class ComputeManager(manager.SchedulerDependentManager):
expected_task_state=(task_states.SCHEDULING,
None))
- def _allocate_network(self, context, instance, requested_networks):
+ def _allocate_network(self, context, instance, requested_networks, macs):
"""Allocate networks for an instance and return the network info."""
instance = self._instance_update(context, instance['uuid'],
vm_state=vm_states.BUILDING,
@@ -922,7 +922,8 @@ class ComputeManager(manager.SchedulerDependentManager):
# allocate and get network info
network_info = self.network_api.allocate_for_instance(
context, instance, vpn=is_vpn,
- requested_networks=requested_networks)
+ requested_networks=requested_networks,
+ macs=macs)
except Exception:
LOG.exception(_('Instance failed network setup'),
instance=instance)