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>