summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Wendlandt <dan@nicira.com>2013-02-10 15:51:19 -0800
committerDan Wendlandt <dan@nicira.com>2013-02-10 15:51:19 -0800
commitac7188f330683ce480b7b362997ec88b151b9749 (patch)
tree9cf60d4bcedd61d0dbccacf1487340d09f513bd9
parentdc49288ac03a56e23c3634238d0da099cea351b6 (diff)
make vmwareapi driver pass quantum port-id to ESX
bug 1121349 Similar to how the libvirt and xenapi drivers need to communicate the quantum port-id (aka the nova vif_uuid when quantum is in use) to the compute layer in order to identify each vNIC, vmwareapi needs to do the same. Change-Id: I8b4bf81bfbad63e61a6ade9f0173e478b3aa45bd
-rw-r--r--nova/tests/test_vmwareapi.py1
-rw-r--r--nova/virt/vmwareapi/vm_util.py19
-rw-r--r--nova/virt/vmwareapi/vmops.py1
3 files changed, 21 insertions, 0 deletions
diff --git a/nova/tests/test_vmwareapi.py b/nova/tests/test_vmwareapi.py
index 22544fd2d..74c786a86 100644
--- a/nova/tests/test_vmwareapi.py
+++ b/nova/tests/test_vmwareapi.py
@@ -60,6 +60,7 @@ class VMwareAPIVMTestCase(test.TestCase):
'bridge_interface': None,
'injected': True},
{'broadcast': '192.168.0.255',
+ 'id': 'foo',
'dns': ['192.168.0.1'],
'gateway': '192.168.0.1',
'gateway_v6': 'dead:beef::1',
diff --git a/nova/virt/vmwareapi/vm_util.py b/nova/virt/vmwareapi/vm_util.py
index c1015cb13..bc3bd8a9c 100644
--- a/nova/virt/vmwareapi/vm_util.py
+++ b/nova/virt/vmwareapi/vm_util.py
@@ -73,6 +73,25 @@ def get_vm_create_spec(client_factory, instance, data_store_name,
device_config_spec = vif_spec_list
config_spec.deviceChange = device_config_spec
+
+ # add vm-uuid and iface-id.x values for Quantum
+ extra_config = []
+ opt = client_factory.create('ns0:OptionValue')
+ opt.key = "nvp.vm-uuid"
+ opt.value = instance['uuid']
+ extra_config.append(opt)
+
+ i = 0
+ for vif_info in vif_infos:
+ if vif_info['iface_id']:
+ opt = client_factory.create('ns0:OptionValue')
+ opt.key = "nvp.iface-id.%d" % i
+ opt.value = vif_info['iface_id']
+ extra_config.append(opt)
+ i += 1
+
+ config_spec.extraConfig = extra_config
+
return config_spec
diff --git a/nova/virt/vmwareapi/vmops.py b/nova/virt/vmwareapi/vmops.py
index 106de0cb0..4b8f926e3 100644
--- a/nova/virt/vmwareapi/vmops.py
+++ b/nova/virt/vmwareapi/vmops.py
@@ -189,6 +189,7 @@ class VMwareVMOps(object):
vif_infos.append({'network_name': network_name,
'mac_address': mac_address,
'network_ref': network_ref,
+ 'iface_id': mapping.get('id'),
})
return vif_infos