diff options
author | Trey Morris <trey.morris@rackspace.com> | 2011-02-14 10:21:16 -0600 |
---|---|---|
committer | Trey Morris <trey.morris@rackspace.com> | 2011-02-14 10:21:16 -0600 |
commit | 9c0862b5f84cdb09b7ab0aafca669d30f261a666 (patch) | |
tree | 653ea0a6bb52bcf642db4c9c1fbb6c35fe8cacae | |
parent | 57e58ba23c5c6a1af0f132385d3d9b9cc370b47d (diff) | |
download | nova-9c0862b5f84cdb09b7ab0aafca669d30f261a666.tar.gz nova-9c0862b5f84cdb09b7ab0aafca669d30f261a666.tar.xz nova-9c0862b5f84cdb09b7ab0aafca669d30f261a666.zip |
support for multiple IPs per network
-rw-r--r-- | nova/virt/xenapi/vmops.py | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/nova/virt/xenapi/vmops.py b/nova/virt/xenapi/vmops.py index 575e53f80..db05a24ff 100644 --- a/nova/virt/xenapi/vmops.py +++ b/nova/virt/xenapi/vmops.py @@ -96,22 +96,36 @@ class VMOps(object): # write network info admin_context = context.get_admin_context() - #network = db.network_get_by_instance(admin_context, - # instance['id']) + # TODO(tr3buchet) - remove comment in multi-nic + # I've decided to go ahead and consider multiple IPs and networks + # at this stage even though they aren't implemented because these will + # be needed for multi-nic and there was no sense writing it for single + # network/single IP and then having to turn around and re-write it + IPs = db.fixed_ip_get_all_by_instance(admin_context, instance['id']) for network in db.network_get_all_by_instance(admin_context, instance['id']): + network_IPs = [ip for ip in IPs if ip.network_id == network.id] + + def ip_dict(ip): + return {'netmask': network['netmask'], + 'enabled': '1', + 'ip': ip.address} + mac_id = instance.mac_address.replace(':', '') location = 'vm-data/networking/%s' % mac_id mapping = {'label': network['label'], 'gateway': network['gateway'], 'mac': instance.mac_address, 'dns': [network['dns']], - 'ips': [{'netmask': network['netmask'], - 'enabled': '1', - 'ip': '192.168.3.3'}]} # <===== CHANGE!!!! + 'ips': [ip_dict(ip) for ip in network_IPs]} self.write_to_param_xenstore(vm_ref, {location: mapping}) + # TODO(tr3buchet) - remove comment in multi-nic + # this bit here about creating the vifs will be updated + # in multi-nic to handle multiple IPs on the same network + # and multiple networks + # for now it works as there is only one of each bridge = network['bridge'] network_ref = \ NetworkHelper.find_network_with_bridge(self._session, bridge) |