This is an automated email from the ASF dual-hosted git repository.
rohit pushed a commit to branch 4.19
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.19 by this push:
new 027149487b5 Fix: Update rootdisksize detail on restore VM (#8981)
027149487b5 is described below
commit 027149487b509be5cccef1b8ea73de7707bc35d7
Author: Vishesh <[email protected]>
AuthorDate: Mon Apr 29 22:15:06 2024 +0530
Fix: Update rootdisksize detail on restore VM (#8981)
* Fix: Update rootdisksize detail on restore VM
* minor fixup
---
.../main/java/com/cloud/vm/UserVmManagerImpl.java | 26 +++++++++++++++++-----
1 file changed, 21 insertions(+), 5 deletions(-)
diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
index e574d9887c3..4283b44e171 100644
--- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
@@ -7975,17 +7975,25 @@ public class UserVmManagerImpl extends ManagerBase
implements UserVmManager, Vir
private void updateVolume(Volume vol, VMTemplateVO template, UserVmVO
userVm, DiskOffering diskOffering, Map<String, String> details) {
VolumeVO resizedVolume = (VolumeVO) vol;
- if (userVmDetailsDao.findDetail(userVm.getId(),
VmDetailConstants.ROOT_DISK_SIZE) == null &&
!vol.getSize().equals(template.getSize())) {
- if (template.getSize() != null) {
+ if (template != null && template.getSize() != null) {
+ UserVmDetailVO vmRootDiskSizeDetail =
userVmDetailsDao.findDetail(userVm.getId(), VmDetailConstants.ROOT_DISK_SIZE);
+ if (vmRootDiskSizeDetail == null) {
resizedVolume.setSize(template.getSize());
+ } else {
+ long rootDiskSize =
Long.parseLong(vmRootDiskSizeDetail.getValue()) * GiB_TO_BYTES;
+ if (template.getSize() >= rootDiskSize) {
+ resizedVolume.setSize(template.getSize());
+ userVmDetailsDao.remove(vmRootDiskSizeDetail.getId());
+ } else {
+ resizedVolume.setSize(rootDiskSize);
+ }
}
}
if (diskOffering != null) {
resizedVolume.setDiskOfferingId(diskOffering.getId());
- resizedVolume.setSize(diskOffering.getDiskSize());
- if (diskOffering.isCustomized()) {
- resizedVolume.setSize(vol.getSize());
+ if (!diskOffering.isCustomized()) {
+ resizedVolume.setSize(diskOffering.getDiskSize());
}
if (diskOffering.getMinIops() != null) {
resizedVolume.setMinIops(diskOffering.getMinIops());
@@ -7999,6 +8007,14 @@ public class UserVmManagerImpl extends ManagerBase
implements UserVmManager, Vir
if
(StringUtils.isNumeric(details.get(VmDetailConstants.ROOT_DISK_SIZE))) {
Long rootDiskSize =
Long.parseLong(details.get(VmDetailConstants.ROOT_DISK_SIZE)) * GiB_TO_BYTES;
resizedVolume.setSize(rootDiskSize);
+ UserVmDetailVO vmRootDiskSizeDetail =
userVmDetailsDao.findDetail(userVm.getId(), VmDetailConstants.ROOT_DISK_SIZE);
+ if (vmRootDiskSizeDetail != null) {
+
vmRootDiskSizeDetail.setValue(details.get(VmDetailConstants.ROOT_DISK_SIZE));
+ userVmDetailsDao.update(vmRootDiskSizeDetail.getId(),
vmRootDiskSizeDetail);
+ } else {
+ userVmDetailsDao.persist(new
UserVmDetailVO(userVm.getId(), VmDetailConstants.ROOT_DISK_SIZE,
+ details.get(VmDetailConstants.ROOT_DISK_SIZE),
true));
+ }
}
String minIops = details.get(MIN_IOPS);