|
57 | 57 | import org.apache.cloudstack.api.command.admin.vm.MigrateVMCmd; |
58 | 58 | import org.apache.cloudstack.api.command.admin.volume.MigrateVolumeCmdByAdmin; |
59 | 59 | import org.apache.cloudstack.api.command.user.volume.MigrateVolumeCmd; |
60 | | -import org.apache.cloudstack.backup.Backup; |
61 | 60 | import org.apache.cloudstack.backup.BackupManager; |
62 | 61 | import org.apache.cloudstack.backup.dao.BackupDao; |
63 | 62 | import org.apache.cloudstack.ca.CAManager; |
@@ -2349,17 +2348,7 @@ public void doInTransactionWithoutResult(final TransactionStatus status) throws |
2349 | 2348 | throw new CloudRuntimeException("Unable to destroy " + vm); |
2350 | 2349 | } else { |
2351 | 2350 | if (expunge) { |
2352 | | - if (vm.getBackupOfferingId() != null) { |
2353 | | - List<Backup> backupsForVm = backupDao.listByVmId(vm.getDataCenterId(), vm.getId()); |
2354 | | - if (CollectionUtils.isEmpty(backupsForVm)) { |
2355 | | - backupManager.removeVMFromBackupOffering(vm.getId(), true); |
2356 | | - } else { |
2357 | | - throw new CloudRuntimeException(String.format("This VM [uuid: %s, name: %s] has a " |
2358 | | - + "Backup Offering [id: %s, external id: %s] with %s backups. Please, remove the backup offering " |
2359 | | - + "before proceeding to VM exclusion!", vm.getUuid(), vm.getInstanceName(), vm.getBackupOfferingId(), |
2360 | | - vm.getBackupExternalId(), backupsForVm.size())); |
2361 | | - } |
2362 | | - } |
| 2351 | + backupManager.checkAndRemoveBackupOfferingBeforeExpunge(vm); |
2363 | 2352 | if (!stateTransitTo(vm, VirtualMachine.Event.ExpungeOperation, vm.getHostId())) { |
2364 | 2353 | logger.debug("Unable to expunge the vm because it is not in the correct state: {}", vm); |
2365 | 2354 | throw new CloudRuntimeException("Unable to expunge " + vm); |
|
0 commit comments