This is an automated email from the ASF dual-hosted git repository.

vishesh pushed a commit to branch 4.18
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.18 by this push:
     new 8a00e25de91 Fix list backups after backup vm is expunged (#9392)
8a00e25de91 is described below

commit 8a00e25de9123794ab96baf0af799678e336d934
Author: Suresh Kumar Anaparti <sureshkumar.anapa...@gmail.com>
AuthorDate: Mon Jul 15 17:03:59 2024 +0530

    Fix list backups after backup vm is expunged (#9392)
---
 .../apache/cloudstack/api/command/user/backup/ListBackupsCmd.java   | 3 +++
 api/src/main/java/org/apache/cloudstack/backup/Backup.java          | 1 +
 .../schema/src/main/java/org/apache/cloudstack/backup/BackupVO.java | 1 +
 .../main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java   | 6 +++++-
 4 files changed, 10 insertions(+), 1 deletion(-)

diff --git 
a/api/src/main/java/org/apache/cloudstack/api/command/user/backup/ListBackupsCmd.java
 
b/api/src/main/java/org/apache/cloudstack/api/command/user/backup/ListBackupsCmd.java
index 8597d97278c..57a1de2f105 100644
--- 
a/api/src/main/java/org/apache/cloudstack/api/command/user/backup/ListBackupsCmd.java
+++ 
b/api/src/main/java/org/apache/cloudstack/api/command/user/backup/ListBackupsCmd.java
@@ -36,6 +36,7 @@ import org.apache.cloudstack.api.response.ZoneResponse;
 import org.apache.cloudstack.backup.Backup;
 import org.apache.cloudstack.backup.BackupManager;
 import org.apache.cloudstack.context.CallContext;
+import org.apache.log4j.Logger;
 
 import com.cloud.exception.ConcurrentOperationException;
 import com.cloud.exception.InsufficientCapacityException;
@@ -49,6 +50,7 @@ import com.cloud.utils.Pair;
         responseObject = BackupResponse.class, since = "4.14.0",
         authorized = {RoleType.Admin, RoleType.ResourceAdmin, 
RoleType.DomainAdmin, RoleType.User})
 public class ListBackupsCmd extends BaseListProjectAndAccountResourcesCmd {
+    private static final Logger s_logger = 
Logger.getLogger(ListBackupsCmd.class);
 
     @Inject
     private BackupManager backupManager;
@@ -116,6 +118,7 @@ public class ListBackupsCmd extends 
BaseListProjectAndAccountResourcesCmd {
             Pair<List<Backup>, Integer> result = 
backupManager.listBackups(this);
             setupResponseBackupList(result.first(), result.second());
         } catch (Exception e) {
+            s_logger.debug("Exception while listing backups", e);
             throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, 
e.getMessage());
         }
     }
diff --git a/api/src/main/java/org/apache/cloudstack/backup/Backup.java 
b/api/src/main/java/org/apache/cloudstack/backup/Backup.java
index 75c7ab4cca5..0a5c8634927 100644
--- a/api/src/main/java/org/apache/cloudstack/backup/Backup.java
+++ b/api/src/main/java/org/apache/cloudstack/backup/Backup.java
@@ -132,6 +132,7 @@ public interface Backup extends ControlledEntity, 
InternalIdentity, Identity {
     }
 
     long getVmId();
+    long getBackupOfferingId();
     String getExternalId();
     String getType();
     String getDate();
diff --git 
a/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupVO.java 
b/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupVO.java
index 2ecbfd56460..76127da26e2 100644
--- a/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupVO.java
+++ b/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupVO.java
@@ -155,6 +155,7 @@ public class BackupVO implements Backup {
         this.status = status;
     }
 
+    @Override
     public long getBackupOfferingId() {
         return backupOfferingId;
     }
diff --git 
a/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java
 
b/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java
index fefbb68ae77..8628fe8e01b 100644
--- 
a/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java
+++ 
b/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java
@@ -145,7 +145,11 @@ public class BackupDaoImpl extends 
GenericDaoBase<BackupVO, Long> implements Bac
         AccountVO account = 
accountDao.findByIdIncludingRemoved(vm.getAccountId());
         DomainVO domain = domainDao.findByIdIncludingRemoved(vm.getDomainId());
         DataCenterVO zone = 
dataCenterDao.findByIdIncludingRemoved(vm.getDataCenterId());
-        BackupOffering offering = 
backupOfferingDao.findByIdIncludingRemoved(vm.getBackupOfferingId());
+        Long offeringId = vm.getBackupOfferingId();
+        if (offeringId == null) {
+            offeringId = backup.getBackupOfferingId();
+        }
+        BackupOffering offering = 
backupOfferingDao.findByIdIncludingRemoved(offeringId);
 
         BackupResponse response = new BackupResponse();
         response.setId(backup.getUuid());

Reply via email to