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

abh1sar pushed a commit to branch hide-fields-kboss
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 9f8b04dedd91a159fb1eb43b345e0ee86f474b93
Author: Abhisar Sinha <[email protected]>
AuthorDate: Tue Jul 21 22:29:09 2026 +0530

    Don't set compressionstatus and validation status in backupVO and 
backupsResponse for non-kboss providers.
    These columns are hidden in UI if they are not set.
---
 .../src/main/java/org/apache/cloudstack/backup/BackupVO.java |  9 ++++-----
 .../org/apache/cloudstack/backup/KbossBackupProvider.java    |  3 ++-
 .../java/org/apache/cloudstack/backup/BackupManagerImpl.java | 12 ++++++++----
 ui/src/views/AutogenView.vue                                 | 10 ++++++++++
 ui/src/views/compute/InstanceTab.vue                         |  4 +++-
 5 files changed, 27 insertions(+), 11 deletions(-)

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 c2b091700ed..b4cad92d877 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
@@ -128,11 +128,10 @@ public class BackupVO implements Backup {
 
     public BackupVO() {
         this.uuid = UUID.randomUUID().toString();
-        this.compressionStatus = CompressionStatus.Uncompressed;
-        this.validationStatus = ValidationStatus.NotValidated;
     }
 
-    public BackupVO(String name, long vmId, long backupOfferingId, long 
accountId, long domainId, long zoneId, long virtualSize, Status status, Long 
backupScheduleId) {
+    public BackupVO(String name, long vmId, long backupOfferingId, long 
accountId, long domainId, long zoneId, long virtualSize,
+                    Status status, Long backupScheduleId, CompressionStatus 
compressionStatus, ValidationStatus validationStatus) {
         this.name = name;
         this.vmId = vmId;
         this.backupOfferingId = backupOfferingId;
@@ -144,8 +143,8 @@ public class BackupVO implements Backup {
         this.setType("FULL");
         this.uuid = UUID.randomUUID().toString();
         this.backupScheduleId = backupScheduleId;
-        this.compressionStatus = CompressionStatus.Uncompressed;
-        this.validationStatus = ValidationStatus.NotValidated;
+        this.compressionStatus = compressionStatus;
+        this.validationStatus = validationStatus;
     }
 
     @Override
diff --git 
a/plugins/backup/kboss/src/main/java/org/apache/cloudstack/backup/KbossBackupProvider.java
 
b/plugins/backup/kboss/src/main/java/org/apache/cloudstack/backup/KbossBackupProvider.java
index 60bfb7a0b58..0569c318935 100644
--- 
a/plugins/backup/kboss/src/main/java/org/apache/cloudstack/backup/KbossBackupProvider.java
+++ 
b/plugins/backup/kboss/src/main/java/org/apache/cloudstack/backup/KbossBackupProvider.java
@@ -1071,7 +1071,8 @@ public class KbossBackupProvider extends AdapterBase 
implements InternalBackupPr
         long vmId = vm.getId();
 
         BackupVO backup = new BackupVO(String.format("%s-%s", 
vm.getHostName(), DateUtil.getDateInSystemTimeZone()), vmId, 
vm.getBackupOfferingId(), accountId,
-                vm.getDomainId(), vm.getDataCenterId(), 0, 
Backup.Status.Queued, backupScheduleId);
+                vm.getDomainId(), vm.getDataCenterId(), 0, 
Backup.Status.Queued, backupScheduleId,
+                Backup.CompressionStatus.Uncompressed, 
Backup.ValidationStatus.NotValidated);
 
         VmWorkJobVO workJob = new 
VmWorkJobVO(AsyncJobExecutionContext.getOriginJobId(), userId, accountId, 
VmWorkTakeBackup.class.getName(), vmId, VirtualMachine.Type.Instance,
                 VmWorkJobVO.Step.Starting);
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 9be4c7ea083..58bad20e4f1 100644
--- a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java
@@ -2653,11 +2653,15 @@ public class BackupManagerImpl extends ManagerBase 
implements BackupManager {
         response.setProtectedSize(backup.getProtectedSize());
         response.setStatus(backup.getStatus());
         response.setIntervalType("MANUAL");
-        response.setCompressionStatus(backup.getCompressionStatus());
-        if (backup.getUncompressedSize() != null && 
backup.getUncompressedSize() > 0) {
-            response.setUncompressedSize(backup.getUncompressedSize());
+        if (backup.getCompressionStatus() != null) {
+            response.setCompressionStatus(backup.getCompressionStatus());
+            if (backup.getUncompressedSize() != null && 
backup.getUncompressedSize() > 0) {
+                response.setUncompressedSize(backup.getUncompressedSize());
+            }
+        }
+        if (backup.getValidationStatus() != null) {
+            response.setValidationStatus(backup.getValidationStatus());
         }
-        response.setValidationStatus(backup.getValidationStatus());
         if (backup.getBackupScheduleId() != null) {
             BackupScheduleVO scheduleVO = 
backupScheduleDao.findById(backup.getBackupScheduleId());
             if (scheduleVO != null) {
diff --git a/ui/src/views/AutogenView.vue b/ui/src/views/AutogenView.vue
index 284aee4ffa3..8b492d507a2 100644
--- a/ui/src/views/AutogenView.vue
+++ b/ui/src/views/AutogenView.vue
@@ -1267,6 +1267,16 @@ export default {
           })
         }
 
+        if (this.apiName === 'listBackups') {
+          const kbossFields = ['compressionstatus', 'validationstatus']
+          const hasKbossData = this.items.some(backup => 
kbossFields.some(field => backup[field]))
+          if (!hasKbossData) {
+            this.columns = this.columns.filter(col => 
!kbossFields.includes(col.dataIndex))
+            this.allColumns = this.allColumns.filter(col => 
!kbossFields.includes(col.dataIndex))
+            this.selectedColumns = this.selectedColumns.filter(key => 
!kbossFields.includes(key))
+          }
+        }
+
         for (let idx = 0; idx < this.items.length; idx++) {
           this.items[idx].key = idx
           for (const key in customRender) {
diff --git a/ui/src/views/compute/InstanceTab.vue 
b/ui/src/views/compute/InstanceTab.vue
index 85710db933e..d125995e3e1 100644
--- a/ui/src/views/compute/InstanceTab.vue
+++ b/ui/src/views/compute/InstanceTab.vue
@@ -74,7 +74,9 @@
           apiName="listBackups"
           :resource="resource"
           :params="{virtualmachineid: dataResource.id}"
-          :columns="['name', 'status', 'compressionstatus', 
'validationstatus', 'size', 'virtualsize', 'type', 'intervaltype', 'created']"
+          :columns="dataResource.backupprovider === 'kboss'
+            ? ['name', 'status', 'compressionstatus', 'validationstatus', 
'size', 'virtualsize', 'type', 'intervaltype', 'created']
+            : ['name', 'status', 'size', 'virtualsize', 'type', 
'intervaltype', 'created']"
           :routerlinks="(record) => { return { name: '/backup/' + record.id } 
}"
           :showSearch="false"/>
       </a-tab-pane>

Reply via email to