From 0a2a524e261a373ee9df1f2c7cfd4ba2580ea677 Mon Sep 17 00:00:00 2001 From: Wei Zhou <57355700+weizhouapache@users.noreply.github.com> Date: Sun, 15 Aug 2021 23:36:01 +0200 Subject: [PATCH] vmware: get recommended disk controller only when root or data disk controller is osdefault (#5258) * vmware: get recommended disk controller only when root or data disk controller is osdefault * #5258: fix NPE when template OS is 'Other SUSE Linux(64-bit)' * server: skip zone check for PERHOST iso during attachIso Hypervisor tools ISO - vmware-toools.iso, xs-tools.iso are marked as PERHOST in DB. They are active but not downloaded to the secondary storages and hence no template-zone entry. Skips the template-zone check for such templates. Fixes #5265 Signed-off-by: Abhishek Kumar * inverted check Co-authored-by: Abhishek Kumar --- .../cloud/hypervisor/vmware/mo/HypervisorHostHelper.java | 9 +++------ .../com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java index c5e2fe52120..e35c37d4c9e 100644 --- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java +++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java @@ -1527,14 +1527,11 @@ public class HypervisorHostHelper { VmwareHelper.setBasicVmConfig(vmConfig, cpuCount, cpuSpeedMHz, cpuReservedMHz, memoryMB, memoryReserveMB, guestOsIdentifier, limitCpuUse, false); - String recommendedController = host.getRecommendedDiskController(guestOsIdentifier); String newRootDiskController = controllerInfo.first(); String newDataDiskController = controllerInfo.second(); - if (DiskControllerType.getType(controllerInfo.first()) == DiskControllerType.osdefault) { - newRootDiskController = recommendedController; - } - if (DiskControllerType.getType(controllerInfo.second()) == DiskControllerType.osdefault) { - newDataDiskController = recommendedController; + String recommendedController = null; + if (VmwareHelper.isControllerOsRecommended(newRootDiskController) || VmwareHelper.isControllerOsRecommended(newDataDiskController)) { + recommendedController = host.getRecommendedDiskController(guestOsIdentifier); } Pair updatedControllerInfo = new Pair(newRootDiskController, newDataDiskController); diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java index 0d01931989b..0fdaa7d52ea 100644 --- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java +++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java @@ -3341,7 +3341,7 @@ public class VirtualMachineMO extends BaseMO { virtualHardwareVersion = getVirtualHardwareVersion(); // Check if guest operating system supports cpu hotadd - if (guestOsDescriptor.isSupportsCpuHotAdd()) { + if (guestOsDescriptor != null && guestOsDescriptor.isSupportsCpuHotAdd()) { guestOsSupportsCpuHotAdd = true; }