From 9f597ef13049f8a6a4eb8553a30565b3eb6d07e2 Mon Sep 17 00:00:00 2001 From: Likitha Shetty Date: Wed, 12 Feb 2014 15:51:22 +0530 Subject: [PATCH] CLOUDSTACK-6056. Enabling static NAT rule for a portable public IP fails with error "Failed to enable static nat". router.extra.public.nics isn't being honoured and so when an ip that is acquired from the additional VLAN range is being configured it failed. --- .../src/com/cloud/hypervisor/guru/VMwareGuru.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java index 9a30f189062..372c80e9e9b 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java @@ -89,6 +89,7 @@ import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; import com.cloud.vm.SecondaryStorageVmVO; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.Type; import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.VmDetailConstants; import com.cloud.vm.dao.NicDao; @@ -151,9 +152,12 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru, Co if (details == null) details = new HashMap(); + Type vmType = vm.getType(); + boolean userVm = !(vmType.equals(VirtualMachine.Type.DomainRouter) || vmType.equals(VirtualMachine.Type.ConsoleProxy) + || vmType.equals(VirtualMachine.Type.SecondaryStorageVm)); + String nicDeviceType = details.get(VmDetailConstants.NIC_ADAPTER); - if (vm.getVirtualMachine() instanceof DomainRouterVO || vm.getVirtualMachine() instanceof ConsoleProxyVO || - vm.getVirtualMachine() instanceof SecondaryStorageVmVO) { + if (!userVm) { if (nicDeviceType == null) { details.put(VmDetailConstants.NIC_ADAPTER, _vmwareMgr.getSystemVMDefaultNicAdapterType()); @@ -180,8 +184,7 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru, Co } String diskDeviceType = details.get(VmDetailConstants.ROOK_DISK_CONTROLLER); - if (!(vm.getVirtualMachine() instanceof DomainRouterVO || vm.getVirtualMachine() instanceof ConsoleProxyVO || vm.getVirtualMachine() instanceof SecondaryStorageVmVO)) { - // user vm + if (userVm) { if (diskDeviceType == null) { details.put(VmDetailConstants.ROOK_DISK_CONTROLLER, _vmwareMgr.getRootDiskController()); } @@ -203,7 +206,7 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru, Co details.put(Config.VmwareReserveMem.key(), VmwareReserveMemory.valueIn(clusterId).toString()); to.setDetails(details); - if (vm.getVirtualMachine() instanceof DomainRouterVO) { + if (vmType.equals(VirtualMachine.Type.DomainRouter)) { NicProfile publicNicProfile = null; for (NicProfile nicProfile : nicProfiles) { @@ -277,7 +280,7 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru, Co // Don't do this if the virtual machine is one of the special types // Should only be done on user machines - if (!(vm.getVirtualMachine() instanceof DomainRouterVO || vm.getVirtualMachine() instanceof ConsoleProxyVO || vm.getVirtualMachine() instanceof SecondaryStorageVmVO)) { + if (userVm) { String nestedVirt = _configDao.getValue(Config.VmwareEnableNestedVirtualization.key()); if (nestedVirt != null) { s_logger.debug("Nested virtualization requested, adding flag to vm configuration");