diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java index 815ac4f70fe8..7c60614c97e4 100644 --- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java @@ -1305,8 +1305,9 @@ public void validateCustomParameters(ServiceOfferingVO serviceOffering, Map details) Map customParameters = new HashMap<>(); customParameters.put(VmDetailConstants.CPU_NUMBER, String.valueOf(newCpu)); customParameters.put(VmDetailConstants.MEMORY, String.valueOf(newMemory)); - if (svcOffering.isCustomCpuSpeedSupported()) { + if (details.containsKey(VmDetailConstants.CPU_SPEED)) { customParameters.put(VmDetailConstants.CPU_SPEED, details.get(VmDetailConstants.CPU_SPEED)); } validateCustomParameters(svcOffering, customParameters); + } else { + if (details.containsKey(VmDetailConstants.CPU_NUMBER) || details.containsKey(VmDetailConstants.MEMORY) || + details.containsKey(VmDetailConstants.CPU_SPEED)) { + throw new InvalidParameterValueException("CPU number, Memory and CPU speed cannot be updated for a " + + "non-dynamic offering"); + } } if (VirtualMachineManager.ResourceCountRunningVMsonly.value()) { return;