This is an automated email from the ASF dual-hosted git repository.
DaanHoogland pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/main by this push:
new 719dbe931fc Addition of type and VM filter in the backup listing API
(#13644)
719dbe931fc is described below
commit 719dbe931fcd1732dcf10aaa1d30361dd3a5567a
Author: Gean Jair Silva <[email protected]>
AuthorDate: Tue Sep 8 04:17:08 2026 -0300
Addition of type and VM filter in the backup listing API (#13644)
---
.../cloudstack/api/command/user/backup/ListBackupsCmd.java | 10 ++++++++++
.../java/org/apache/cloudstack/backup/BackupManagerImpl.java | 4 ++++
ui/src/components/view/SearchView.vue | 2 +-
ui/src/config/section/storage.js | 5 +----
4 files changed, 16 insertions(+), 5 deletions(-)
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 35cadd9f2e5..1893589f2fd 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
@@ -95,6 +95,12 @@ public class ListBackupsCmd extends
BaseListProjectAndAccountResourcesCmd {
description = "list backups by status")
private String backupStatus;
+ @Parameter(name = ApiConstants.TYPE,
+ type = CommandType.STRING,
+ since = "4.24.0",
+ description = "list backups by type")
+ private String backupType;
+
@Parameter(name = ApiConstants.LIST_VM_DETAILS,
type = CommandType.BOOLEAN,
since = "4.21.0",
@@ -129,6 +135,10 @@ public class ListBackupsCmd extends
BaseListProjectAndAccountResourcesCmd {
return backupStatus;
}
+ public String getBackupType() {
+ return backupType;
+ }
+
public Boolean getListVmDetails() {
return listVmDetails;
}
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 58e435b6406..654926eaee7 100644
--- a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java
@@ -1203,6 +1203,7 @@ public class BackupManagerImpl extends ManagerBase
implements BackupManager {
final Long zoneId = cmd.getZoneId();
final Long backupOfferingId = cmd.getBackupOfferingId();
final Backup.Status backupStatus =
validateBackupStatus(cmd.getBackupStatus());
+ final String backupType = cmd.getBackupType();
final Account caller = CallContext.current().getCallingAccount();
final String keyword = cmd.getKeyword();
List<Long> permittedAccounts = new ArrayList<Long>();
@@ -1235,6 +1236,7 @@ public class BackupManagerImpl extends ManagerBase
implements BackupManager {
// incremental chain GC can sweep them once their last descendant is
deleted.
sb.and("statusNeq", sb.entity().getStatus(), SearchCriteria.Op.NEQ);
sb.and("backupStatus", sb.entity().getStatus(), SearchCriteria.Op.EQ);
+ sb.and("backupType", sb.entity().getType(), SearchCriteria.Op.EQ);
if (keyword != null) {
sb.and().op("keywordName", sb.entity().getName(),
SearchCriteria.Op.LIKE);
@@ -1270,6 +1272,8 @@ public class BackupManagerImpl extends ManagerBase
implements BackupManager {
sc.setParametersIfNotNull("backupStatus", backupStatus);
+ sc.setParametersIfNotNull("backupType", backupType);
+
if (keyword != null) {
String keywordMatch = "%" + keyword + "%";
sc.setParameters("keywordName", keywordMatch);
diff --git a/ui/src/components/view/SearchView.vue
b/ui/src/components/view/SearchView.vue
index 227ee0a75fa..7cd5db96f48 100644
--- a/ui/src/components/view/SearchView.vue
+++ b/ui/src/components/view/SearchView.vue
@@ -334,7 +334,7 @@ export default {
}
if (['zoneid', 'domainid', 'imagestoreid', 'storageid', 'state',
'account', 'hypervisor', 'level',
'clusterid', 'podid', 'groupid', 'entitytype', 'accounttype',
'systemvmtype', 'scope', 'provider',
- 'type', 'scope', 'managementserverid', 'serviceofferingid',
+ 'scope', 'managementserverid', 'serviceofferingid',
'diskofferingid', 'networkid', 'usagetype', 'restartrequired',
'gpuenabled',
'displaynetwork', 'guestiptype', 'usersource', 'arch',
'oscategoryid', 'templatetype', 'gpucardid', 'vgpuprofileid',
'extensionid', 'backupoffering', 'volumeid', 'virtualmachineid',
'hsmprofileid', 'kmskeyid', 'status'].includes(item)
diff --git a/ui/src/config/section/storage.js b/ui/src/config/section/storage.js
index 702b782690a..75bdfd4d5fa 100644
--- a/ui/src/config/section/storage.js
+++ b/ui/src/config/section/storage.js
@@ -495,10 +495,7 @@ export default {
params: { listvmdetails: 'true' },
columns: ['name', 'status', 'compressionstatus', 'validationstatus',
'size', 'virtualsize', 'virtualmachinename', 'backupofferingname',
'intervaltype', 'type', 'created', 'account', 'domain', 'zone'],
details: ['name', 'description', 'virtualmachinename', 'id',
'intervaltype', 'type', 'externalid', 'size', 'virtualsize', 'volumes',
'backupofferingname', 'zone', 'account', 'domain', 'created'],
- searchFilters: () => {
- var filters = ['name', 'zoneid', 'domainid', 'account',
'backupofferingid', 'status']
- return filters
- },
+ searchFilters: ['name', 'zoneid', 'domainid', 'account',
'backupofferingid', 'status', 'type', 'virtualmachineid'],
tabs: [
{
name: 'details',