Skip to content

Commit 912639b

Browse files
committed
Extract duplicate code into new method checkAndRemoveBackupOfferingBeforeExpunge()
1 parent 1574f3a commit 912639b

File tree

4 files changed

+20
-24
lines changed

4 files changed

+20
-24
lines changed

api/src/main/java/org/apache/cloudstack/backup/BackupManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,4 +257,6 @@ public interface BackupManager extends BackupService, Configurable, PluggableSer
257257
void updateOrphanedBackups(VirtualMachine vm);
258258

259259
Capacity getBackupStorageUsedStats(Long zoneId);
260+
261+
void checkAndRemoveBackupOfferingBeforeExpunge(VirtualMachine vm);
260262
}

engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@
5757
import org.apache.cloudstack.api.command.admin.vm.MigrateVMCmd;
5858
import org.apache.cloudstack.api.command.admin.volume.MigrateVolumeCmdByAdmin;
5959
import org.apache.cloudstack.api.command.user.volume.MigrateVolumeCmd;
60-
import org.apache.cloudstack.backup.Backup;
6160
import org.apache.cloudstack.backup.BackupManager;
6261
import org.apache.cloudstack.backup.dao.BackupDao;
6362
import org.apache.cloudstack.ca.CAManager;
@@ -2349,17 +2348,7 @@ public void doInTransactionWithoutResult(final TransactionStatus status) throws
23492348
throw new CloudRuntimeException("Unable to destroy " + vm);
23502349
} else {
23512350
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);
23632352
if (!stateTransitTo(vm, VirtualMachine.Event.ExpungeOperation, vm.getHostId())) {
23642353
logger.debug("Unable to expunge the vm because it is not in the correct state: {}", vm);
23652354
throw new CloudRuntimeException("Unable to expunge " + vm);

server/src/main/java/com/cloud/vm/UserVmManagerImpl.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@
9595
import org.apache.cloudstack.api.command.user.vmgroup.DeleteVMGroupCmd;
9696
import org.apache.cloudstack.api.command.user.volume.ChangeOfferingForVolumeCmd;
9797
import org.apache.cloudstack.api.command.user.volume.ResizeVolumeCmd;
98-
import org.apache.cloudstack.backup.Backup;
9998
import org.apache.cloudstack.backup.BackupManager;
10099
import org.apache.cloudstack.backup.BackupVO;
101100
import org.apache.cloudstack.backup.dao.BackupDao;
@@ -2483,17 +2482,7 @@ public boolean expunge(UserVmVO vm) {
24832482
}
24842483
try {
24852484

2486-
if (vm.getBackupOfferingId() != null) {
2487-
List<Backup> backupsForVm = backupDao.listByVmId(vm.getDataCenterId(), vm.getId());
2488-
if (CollectionUtils.isEmpty(backupsForVm)) {
2489-
backupManager.removeVMFromBackupOffering(vm.getId(), true);
2490-
} else {
2491-
throw new CloudRuntimeException(String.format("This VM [uuid: %s, name: %s] has a "
2492-
+ "Backup Offering [id: %s, external id: %s] with %s backups. Please, remove the backup offering "
2493-
+ "before proceeding to VM exclusion!", vm.getUuid(), vm.getInstanceName(), vm.getBackupOfferingId(),
2494-
vm.getBackupExternalId(), backupsForVm.size()));
2495-
}
2496-
}
2485+
backupManager.checkAndRemoveBackupOfferingBeforeExpunge(vm);
24972486

24982487
autoScaleManager.removeVmFromVmGroup(vm.getId());
24992488

server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1817,4 +1817,20 @@ public CapacityVO getBackupStorageUsedStats(Long zoneId) {
18171817
Pair<Long, Long> backupUsage = backupProvider.getBackupStorageStats(zoneId);
18181818
return new CapacityVO(null, zoneId, null, null, backupUsage.first(), backupUsage.second(), Capacity.CAPACITY_TYPE_BACKUP_STORAGE);
18191819
}
1820+
1821+
@Override
1822+
public void checkAndRemoveBackupOfferingBeforeExpunge(VirtualMachine vm) {
1823+
if (vm.getBackupOfferingId() == null) {
1824+
return;
1825+
}
1826+
List<Backup> backupsForVm = backupDao.listByVmId(vm.getDataCenterId(), vm.getId());
1827+
if (org.apache.commons.collections.CollectionUtils.isEmpty(backupsForVm)) {
1828+
removeVMFromBackupOffering(vm.getId(), true);
1829+
} else {
1830+
throw new CloudRuntimeException(String.format("This VM [uuid: %s, name: %s] has a "
1831+
+ "Backup Offering [id: %s, external id: %s] with %s backups. Please, remove the backup offering "
1832+
+ "before proceeding to VM exclusion!", vm.getUuid(), vm.getInstanceName(), vm.getBackupOfferingId(),
1833+
vm.getBackupExternalId(), backupsForVm.size()));
1834+
}
1835+
}
18201836
}

0 commit comments

Comments
 (0)