You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by sh...@apache.org on 2022/09/01 06:58:45 UTC
[cloudstack] branch 4.17 updated: server: fix scale vm with compute offering having same disk offering (#6688)
This is an automated email from the ASF dual-hosted git repository.
shwstppr pushed a commit to branch 4.17
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.17 by this push:
new c290cbcb71 server: fix scale vm with compute offering having same disk offering (#6688)
c290cbcb71 is described below
commit c290cbcb71e80910c4ef22149803d758f13afbc6
Author: Abhishek Kumar <ab...@gmail.com>
AuthorDate: Thu Sep 1 12:28:39 2022 +0530
server: fix scale vm with compute offering having same disk offering (#6688)
Fixes #6679
Fixes behaviour when the VM is scaled to a new compute offering which has the same disk offering associated as the earlier compute offering.
---
.../src/main/java/com/cloud/vm/UserVmManagerImpl.java | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
index 9d56c339ee..748ee4c6e7 100644
--- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
@@ -2042,13 +2042,25 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
for (final VolumeVO rootVolumeOfVm : vols) {
DiskOfferingVO currentRootDiskOffering = _diskOfferingDao.findById(rootVolumeOfVm.getDiskOfferingId());
+ Long rootDiskSize= null;
+ Long rootDiskSizeBytes = null;
+ if (customParameters.containsKey(ApiConstants.ROOT_DISK_SIZE)) {
+ rootDiskSize = Long.parseLong(customParameters.get(ApiConstants.ROOT_DISK_SIZE));
+ rootDiskSizeBytes = rootDiskSize << 30;
+ }
+ if (currentRootDiskOffering.getId() == newDiskOffering.getId() &&
+ (!newDiskOffering.isCustomized() || (newDiskOffering.isCustomized() && Objects.equals(rootVolumeOfVm.getSize(), rootDiskSizeBytes)))) {
+ if (s_logger.isDebugEnabled()) {
+ s_logger.debug(String.format("Volume %s is already having disk offering %s", rootVolumeOfVm, newDiskOffering.getUuid()));
+ }
+ continue;
+ }
HypervisorType hypervisorType = _volsDao.getHypervisorType(rootVolumeOfVm.getId());
if (HypervisorType.Simulator != hypervisorType) {
Long minIopsInNewDiskOffering = null;
Long maxIopsInNewDiskOffering = null;
boolean autoMigrate = false;
boolean shrinkOk = false;
- Long rootDiskSize = null;
if (customParameters.containsKey(ApiConstants.MIN_IOPS)) {
minIopsInNewDiskOffering = Long.parseLong(customParameters.get(ApiConstants.MIN_IOPS));
}
@@ -2061,9 +2073,6 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if (customParameters.containsKey(ApiConstants.SHRINK_OK)) {
shrinkOk = Boolean.parseBoolean(customParameters.get(ApiConstants.SHRINK_OK));
}
- if (customParameters.containsKey(ApiConstants.ROOT_DISK_SIZE)) {
- rootDiskSize = Long.parseLong(customParameters.get(ApiConstants.ROOT_DISK_SIZE));
- }
ChangeOfferingForVolumeCmd changeOfferingForVolumeCmd = new ChangeOfferingForVolumeCmd(rootVolumeOfVm.getId(), newDiskOffering.getId(), minIopsInNewDiskOffering, maxIopsInNewDiskOffering, autoMigrate, shrinkOk);
if (rootDiskSize != null) {
changeOfferingForVolumeCmd.setSize(rootDiskSize);