diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 1d355d58f3d..39145006411 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -2629,7 +2629,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv if (VirtualMachine.Type.User.equals(vmTO.getType())) { cmd.setFeatures(_cpuFeatures); } - setCpuTopology(cmd, vcpus, vmTO.getDetails()); + int vCpusInDef = vmTO.getVcpuMaxLimit() == null ? vcpus : vmTO.getVcpuMaxLimit(); + setCpuTopology(cmd, vCpusInDef, vmTO.getDetails()); return cmd; } @@ -4749,7 +4750,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv return false; } - private void setCpuTopology(CpuModeDef cmd, int vcpus, Map details) { + private void setCpuTopology(CpuModeDef cmd, int vCpusInDef, Map details) { if (!enableManuallySettingCpuTopologyOnKvmVm) { s_logger.debug(String.format("Skipping manually setting CPU topology on VM's XML due to it is disabled in agent.properties {\"property\": \"%s\", \"value\": %s}.", AgentProperties.ENABLE_MANUALLY_SETTING_CPU_TOPOLOGY_ON_KVM_VM.getName(), enableManuallySettingCpuTopologyOnKvmVm)); @@ -4760,19 +4761,19 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv if (details != null) { final String coresPerSocket = details.get(VmDetailConstants.CPU_CORE_PER_SOCKET); final int intCoresPerSocket = NumbersUtil.parseInt(coresPerSocket, numCoresPerSocket); - if (intCoresPerSocket > 0 && vcpus % intCoresPerSocket == 0) { + if (intCoresPerSocket > 0 && vCpusInDef % intCoresPerSocket == 0) { numCoresPerSocket = intCoresPerSocket; } } if (numCoresPerSocket <= 0) { - if (vcpus % 6 == 0) { + if (vCpusInDef % 6 == 0) { numCoresPerSocket = 6; - } else if (vcpus % 4 == 0) { + } else if (vCpusInDef % 4 == 0) { numCoresPerSocket = 4; } } if (numCoresPerSocket > 0) { - cmd.setTopology(numCoresPerSocket, vcpus / numCoresPerSocket); + cmd.setTopology(numCoresPerSocket, vCpusInDef / numCoresPerSocket); } } diff --git a/test/integration/smoke/test_templates.py b/test/integration/smoke/test_templates.py index b967ebdc809..00ad2201b44 100644 --- a/test/integration/smoke/test_templates.py +++ b/test/integration/smoke/test_templates.py @@ -78,7 +78,7 @@ class TestCreateTemplateWithChecksum(cloudstackTestCase): if "vmware" in self.hypervisor.lower(): self.test_template = registerTemplate.registerTemplateCmd() self.test_template = registerTemplate.registerTemplateCmd() - self.test_template.checksum = "{SHA-1}" + "3c00872599c6e1e46a358aac51080db88266cf5c" + self.test_template.checksum = "{SHA-1}" + "8b82224fd3c6429b6914f32d8339e650770c7526" self.test_template.hypervisor = self.hypervisor self.test_template.zoneid = self.zone.id self.test_template.name = 'test sha-2333' @@ -86,8 +86,8 @@ class TestCreateTemplateWithChecksum(cloudstackTestCase): self.test_template.url = "http://dl.openvm.eu/cloudstack/macchinina/x86_64/macchinina-vmware.ova" self.test_template.format = "OVA" self.test_template.ostypeid = self.getOsType("Other Linux (64-bit)") - self.md5 = "27f3c56a8c7ec7b2f3ff2199f7078006" - self.sha256 = "a7b04c1eb507f3f5de844bda352df1ea5e20335b465409493ca6ae07dfd0a158" + self.md5 = "b4e8bff3882b23175974e692533b4381" + self.sha256 = "e1dffca3c3ab545a753cb42d838a341624cf25841d1bcf3d1e45556c9fce7cf3" if "xen" in self.hypervisor.lower(): self.test_template = registerTemplate.registerTemplateCmd()