abh1sar commented on code in PR #10140:
URL: https://github.com/apache/cloudstack/pull/10140#discussion_r1918196798


##########
server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java:
##########
@@ -748,6 +819,151 @@ private Backup.VolumeInfo 
getVolumeInfo(List<Backup.VolumeInfo> backedUpVolumes,
         return null;
     }
 
+    @Override
+    public void updateDiskOfferingSizeFromBackup(List<DiskOfferingInfo> 
dataDiskOfferingsInfo, Backup backup) {
+        List<DiskOfferingInfo> dataDiskOfferingsInfoFromBackup = 
getDataDiskOfferingListFromBackup(backup);
+        int index = 0;
+        for(DiskOfferingInfo diskOfferingInfo : dataDiskOfferingsInfo) {
+            diskOfferingInfo.setSize(Math.max(diskOfferingInfo.getSize(), 
dataDiskOfferingsInfoFromBackup.get(index).getSize()));
+            index++;
+        }
+    }
+
+    @Override
+    public DiskOfferingInfo getRootDiskOfferingInfoFromBackup(Backup backup) {
+        String diskOfferingIdsDetail = 
backup.getDetail(ApiConstants.DISK_OFFERING_IDS);
+        if (diskOfferingIdsDetail == null) {
+            return null;
+        }
+        String [] diskOfferingIds = diskOfferingIdsDetail.split(",");
+        String [] deviceIds = 
backup.getDetail(ApiConstants.DEVICE_IDS).split(",");
+        String [] diskSizes = 
backup.getDetail(ApiConstants.DISK_SIZES).split(",");
+
+        for (int i = 0; i < diskOfferingIds.length; i++) {
+            if (deviceIds[i].equals("0")) {
+                DiskOfferingVO diskOffering = 
diskOfferingDao.findByUuid(diskOfferingIds[i]);
+                if (diskOffering == null) {
+                    throw new CloudRuntimeException("Unable to find the root 
disk offering with uuid (" + diskOfferingIds[i] + ") stored in backup. Please 
specify a valid root disk offering id while creating the instance");
+                }
+                Long size = Long.parseLong(diskSizes[i]) / (1024 * 1024 * 
1024);
+                return new DiskOfferingInfo(diskOffering, size, null, null, 
0L);
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public List<DiskOfferingInfo> getDataDiskOfferingListFromBackup(Backup 
backup) {
+        String diskOfferingIdsDetail = 
backup.getDetail(ApiConstants.DISK_OFFERING_IDS);
+        if (diskOfferingIdsDetail == null) {
+            return null;
+        }
+
+        String [] diskOfferingIds = diskOfferingIdsDetail.split(",");
+        String [] deviceIds = 
backup.getDetail(ApiConstants.DEVICE_IDS).split(",");
+        String [] diskSizes = 
backup.getDetail(ApiConstants.DISK_SIZES).split(",");
+        String [] minIopsList = 
backup.getDetail(ApiConstants.MIN_IOPS).split(",");
+        String [] maxIopsList = 
backup.getDetail(ApiConstants.MAX_IOPS).split(",");
+
+        List<DiskOfferingInfo> diskOfferingInfoList = new ArrayList<>();
+        for (int i = 0; i < diskOfferingIds.length; i++) {
+            Long deviceId = Long.parseLong(deviceIds[i]);
+            if (deviceId == 0) {
+                continue;
+            }
+            DiskOfferingVO diskOffering = 
diskOfferingDao.findByUuid(diskOfferingIds[i]);

Review Comment:
   Will test it



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@cloudstack.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to