summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Kölker <jason@koelker.net>2011-05-23 18:46:04 -0500
committerJason Kölker <jason@koelker.net>2011-05-23 18:46:04 -0500
commit72b173279657f16492280923d562d4dcb705d724 (patch)
tree0e54405685ff73b6027bbd31052e1c0bc0ca229e
parent65091eb4b9718c35fdcb3d3d070dffcc4fb820a3 (diff)
blah
-rw-r--r--nova/network/api.py2
-rw-r--r--nova/network/manager.py15
-rw-r--r--nova/tests/test_cloud.py3
3 files changed, 12 insertions, 8 deletions
diff --git a/nova/network/api.py b/nova/network/api.py
index 4477aac42..c1df4dba2 100644
--- a/nova/network/api.py
+++ b/nova/network/api.py
@@ -111,6 +111,8 @@ class API(base.Base):
"""
args = kwargs
args['instance_id'] = instance['id']
+ args['instance_type_id'] = instance['instance_type_id']
+ args['project_id'] = instance['project_id']
return rpc.call(context, FLAGS.network_topic,
{'method': 'allocate_for_instance',
'args': args})
diff --git a/nova/network/manager.py b/nova/network/manager.py
index 33365f3f8..642d99a95 100644
--- a/nova/network/manager.py
+++ b/nova/network/manager.py
@@ -258,7 +258,7 @@ class NetworkManager(manager.SchedulerDependentManager):
# return so worker will only grab 1 (to help scale flatter)
return self.set_network_host(context, network['id'])
- def _get_networks_for_instance(self, context, instance=None):
+ def _get_networks_for_instance(self, context, project_id=None):
"""determine which networks an instance should connect to"""
# TODO(tr3buchet) maybe this needs to be updated in the future if
# there is a better way to determine which networks
@@ -269,7 +269,8 @@ class NetworkManager(manager.SchedulerDependentManager):
return [network for network in networks if
not network['vlan'] and network['host']]
- def allocate_for_instance(self, context, instance_id, **kwargs):
+ def allocate_for_instance(self, context, instance_id, instance_type_id,
+ project_id=None, **kwargs):
"""handles allocating the various network resources for an instance
rpc.called by network_api
@@ -277,13 +278,14 @@ class NetworkManager(manager.SchedulerDependentManager):
LOG.debug(_("network allocations for instance %s"), instance_id,
context=context)
admin_context = context.elevated()
- networks = self._get_networks_for_instance(admin_context, instance)
+ networks = self._get_networks_for_instance(admin_context, project_id)
network_ids = [n['id'] for n in networks]
self._allocate_mac_addresses(context, instance_id, network_ids)
self._allocate_fixed_ips(admin_context, instance_id, network_ids,
**kwargs)
- return self._create_nw_info(admin_context, instance)
+ return self._create_nw_info(admin_context, instance_id,
+ instance_type_id)
def deallocate_for_instance(self, context, instance_id, **kwargs):
"""handles deallocating various network resources for an instance in
@@ -760,11 +762,10 @@ class VlanManager(RPCAllocateFixedIP, FloatingIP, NetworkManager):
network['bridge'],
network['bridge_interface'])
- def _get_networks_for_instance(self, context, instance):
+ def _get_networks_for_instance(self, context, project_id):
"""determine which networks an instance should connect to"""
# get networks associated with project
- networks = self.db.project_get_networks(context,
- instance['project_id'])
+ networks = self.db.project_get_networks(context, project_id)
# return only networks which have host set
return [network for network in networks if network['host']]
diff --git a/nova/tests/test_cloud.py b/nova/tests/test_cloud.py
index 3c29a1178..73e157582 100644
--- a/nova/tests/test_cloud.py
+++ b/nova/tests/test_cloud.py
@@ -126,7 +126,8 @@ class CloudTestCase(test.TestCase):
inst = db.instance_create(self.context, {'host': self.compute.host})
networks = db.network_get_all(self.context)
print networks
- print self.network.allocate_for_instance(self.context, inst)
+ print self.network.allocate_for_instance(self.context, inst['id'],
+ inst['instance_type_id'])
fixed = self.network.allocate_fixed_ip(self.context, inst,
networks[0])