bug 11296 : merge fix from 2.2.10

This commit is contained in:
Kelven Yang 2011-09-01 11:56:10 -07:00
parent 5e1886ee35
commit cddd117e99
2 changed files with 25 additions and 19 deletions

View File

@ -1269,14 +1269,12 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
}
VirtualDevice nic;
int nicDeviceNumber = -1;
for (NicTO nicTo : sortNicsByDeviceId(nics)) {
s_logger.info("Prepare NIC device based on NicTO: " + _gson.toJson(nicTo));
Pair<ManagedObjectReference, String> networkInfo = prepareNetworkFromNicInfo(vmMo.getRunningHost(), nicTo);
nic = VmwareHelper.prepareNicDevice(vmMo, networkInfo.first(), mgr.getGuestNicDeviceType(), networkInfo.second(), nicTo.getMac(), nicDeviceNumber, i + 1, true, true);
nicDeviceNumber = nic.getUnitNumber() + 1;
nic = VmwareHelper.prepareNicDevice(vmMo, networkInfo.first(), mgr.getGuestNicDeviceType(), networkInfo.second(), nicTo.getMac(), i, i + 1, true, true);
deviceConfigSpecArray[i] = new VirtualDeviceConfigSpec();
deviceConfigSpecArray[i].setDevice(nic);
deviceConfigSpecArray[i].setOperation(VirtualDeviceConfigSpecOperation.add);
@ -3178,8 +3176,14 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
if (isVmInCluster(vm)) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("VM " + vm + " is now missing from host report but we detected that it might be migrated to other host by vCenter");
}
_vms.remove(vm);
}
if(oldState != State.Starting && oldState != State.Migrating) {
s_logger.debug("VM " + vm + " is now missing from host report and VM is not at starting state, remove it from host VM-sync map");
_vms.remove(vm);
} else {
s_logger.debug("VM " + vm + " is missing from host report, but we will ignore VM " + vm + " in transition state " + oldState);
}
continue;
}

View File

@ -92,11 +92,13 @@ public class VmwareHelper {
connectInfo.setStartConnected(connectOnStart);
nic.setAddressType("Manual");
nic.setConnectable(connectInfo);
nic.setMacAddress(macAddress);
nic.setMacAddress(macAddress);
/*
nic.setControllerKey(vmMo.getPCIDeviceControllerKey());
if(deviceNumber < 0)
deviceNumber = vmMo.getNextPCIDeviceNumber();
deviceNumber = vmMo.getNextPCIDeviceNumber();
*/
nic.setUnitNumber(deviceNumber);
nic.setKey(-contextNumber);
return nic;
@ -106,9 +108,6 @@ public class VmwareHelper {
public static VirtualDevice prepareDiskDevice(VirtualMachineMO vmMo, int controllerKey, String vmdkDatastorePath,
int sizeInMb, ManagedObjectReference morDs, int deviceNumber, int contextNumber) throws Exception {
if(controllerKey < 0)
controllerKey = vmMo.getIDEDeviceControllerKey();
VirtualDisk disk = new VirtualDisk();
VirtualDiskFlatVer2BackingInfo backingInfo = new VirtualDiskFlatVer2BackingInfo();
@ -119,9 +118,12 @@ public class VmwareHelper {
backingInfo.setFileName(vmdkDatastorePath);
disk.setBacking(backingInfo);
if(controllerKey < 0)
controllerKey = vmMo.getIDEDeviceControllerKey();
if(deviceNumber < 0)
deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
disk.setControllerKey(controllerKey);
disk.setControllerKey(controllerKey);
disk.setKey(-contextNumber);
disk.setUnitNumber(deviceNumber);
disk.setCapacityInKB(sizeInMb*1024);
@ -187,9 +189,9 @@ public class VmwareHelper {
if(controllerKey < 0)
controllerKey = vmMo.getIDEDeviceControllerKey();
disk.setControllerKey(controllerKey);
if(deviceNumber < 0)
deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
disk.setKey(-contextNumber);
disk.setUnitNumber(deviceNumber);
disk.setCapacityInKB(sizeInMb*1024);
@ -208,9 +210,6 @@ public class VmwareHelper {
assert(vmdkDatastorePathChain != null);
assert(vmdkDatastorePathChain.length >= 1);
if(controllerKey < 0)
controllerKey = vmMo.getIDEDeviceControllerKey();
VirtualDisk disk = new VirtualDisk();
VirtualDiskFlatVer2BackingInfo backingInfo = new VirtualDiskFlatVer2BackingInfo();
@ -227,6 +226,8 @@ public class VmwareHelper {
disk.setBacking(backingInfo);
if(controllerKey < 0)
controllerKey = vmMo.getIDEDeviceControllerKey();
if(deviceNumber < 0)
deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
@ -267,12 +268,13 @@ public class VmwareHelper {
VirtualCdrom cdRom = (VirtualCdrom )vmMo.getIsoDevice();
if(cdRom == null) {
newCdRom = true;
cdRom = new VirtualCdrom();
cdRom = new VirtualCdrom();
assert(vmMo.getIDEDeviceControllerKey() >= 0);
cdRom.setControllerKey(vmMo.getIDEDeviceControllerKey());
if(deviceNumber < 0)
deviceNumber = vmMo.getNextIDEDeviceNumber();
cdRom.setUnitNumber(deviceNumber);
cdRom.setKey(-contextNumber);
}