From 35e809e7ce4cc7504ae8438bbde4592f9dc7ba2b Mon Sep 17 00:00:00 2001 From: Abhisar Sinha <63767682+abh1sar@users.noreply.github.com> Date: Mon, 17 Mar 2025 22:16:05 +0530 Subject: [PATCH] Set external Id to null after backupProvider.removeVMFromBackup (#10562) --- .../org/apache/cloudstack/backup/VeeamBackupProvider.java | 3 +++ .../org/apache/cloudstack/backup/BackupManagerImpl.java | 6 +++--- 2 files changed, 6 insertions(+), 3 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 e20f67995b9..e8b65e19e0b 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 class VeeamBackupProvider extends AdapterBase implements BackupProvider, 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 36978ab2f87..2fc98973ad1 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 class BackupManagerImpl extends ManagerBase implements BackupManager { boolean result = false; try { - vm.setBackupOfferingId(null); - vm.setBackupExternalId(null); - vm.setBackupVolumes(null); result = backupProvider.removeVMFromBackupOffering(vm); + vm.setBackupOfferingId(null); + vm.setBackupVolumes(null); + vm.setBackupExternalId(null); if (result && backupProvider.willDeleteBackupsOnOfferingRemoval()) { final List backups = backupDao.listByVmId(null, vm.getId()); for (final Backup backup : backups) {