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