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

winterhazel 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 3b53e8c4cb5 Don't set compressionstatus and validationstatus in 
backupVO and backupsResponse for non-kboss providers (#13661)
3b53e8c4cb5 is described below

commit 3b53e8c4cb5353613cf4fb885d8cc2a515d8e93b
Author: Abhisar Sinha <[email protected]>
AuthorDate: Wed Jul 22 20:42:50 2026 +0530

    Don't set compressionstatus and validationstatus in backupVO and 
backupsResponse for non-kboss providers (#13661)
---
 .../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/components/view/ListView.vue                          |  4 ++--
 ui/src/views/AutogenView.vue                                 | 10 ++++++++++
 ui/src/views/compute/InstanceTab.vue                         |  4 +++-
 6 files changed, 29 insertions(+), 13 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/components/view/ListView.vue 
b/ui/src/components/view/ListView.vue
index f6fd6be3583..9272617900f 100644
--- a/ui/src/components/view/ListView.vue
+++ b/ui/src/components/view/ListView.vue
@@ -484,10 +484,10 @@
         />
       </template>
       <template v-if="column.key === 'compressionstatus'">
-        <status :text="text ? text : ''" displayText />
+        <status :text="text ? text : $t('label.unknown')" displayText />
       </template>
       <template v-if="column.key === 'validationstatus'">
-        <status :text="text ? text : ''" displayText />
+        <status :text="text ? text : $t('label.unknown')" displayText />
       </template>
       <template v-if="column.key === 'allocationstate'">
         <status
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