From 7bb51b42b335b10e4523360d65ad41fe56be15c5 Mon Sep 17 00:00:00 2001 From: Abhisar Sinha <63767682+abh1sar@users.noreply.github.com> Date: Thu, 13 Mar 2025 16:45:34 +0530 Subject: [PATCH] Set external Id to null after backupProvider.removeVMFromBackup --- .../org/apache/cloudstack/backup/VeeamBackupProvider.java | 3 +++ .../java/org/apache/cloudstack/backup/BackupManagerImpl.java | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java b/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java index e20f67995b9f..e8b65e19e0b9 100644 --- a/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java +++ b/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java @@ -199,6 +199,9 @@ public boolean assignVMToBackupOffering(final VirtualMachine vm, final BackupOff public boolean removeVMFromBackupOffering(final VirtualMachine vm) { final VeeamClient client = getClient(vm.getDataCenterId()); final VmwareDatacenter vmwareDC = findVmwareDatacenterForVM(vm); + if (vm.getBackupExternalId() == null) { + throw new CloudRuntimeException("The VM does not have a backup job assigned."); + } try { if (!client.removeVMFromVeeamJob(vm.getBackupExternalId(), vm.getInstanceName(), vmwareDC.getVcenterHost())) { LOG.warn("Failed to remove VM from Veeam Job id: " + vm.getBackupExternalId()); diff --git a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java index 36978ab2f871..2fc98973ad10 100644 --- a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java @@ -368,10 +368,10 @@ public boolean removeVMFromBackupOffering(final Long vmId, final boolean forced) boolean result = false; try { + result = backupProvider.removeVMFromBackupOffering(vm); vm.setBackupOfferingId(null); - vm.setBackupExternalId(null); vm.setBackupVolumes(null); - result = backupProvider.removeVMFromBackupOffering(vm); + vm.setBackupExternalId(null); if (result && backupProvider.willDeleteBackupsOnOfferingRemoval()) { final List backups = backupDao.listByVmId(null, vm.getId()); for (final Backup backup : backups) {