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',

Reply via email to