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 <[email protected]>
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());