From 23d4233c828f91ebbce76ae0f2d54cec9e5ab667 Mon Sep 17 00:00:00 2001 From: Lyndon-Li Date: Thu, 10 Sep 2026 14:44:52 +0800 Subject: [PATCH] add fallbackFull to DU and PVB and volumeInfo Signed-off-by: Lyndon-Li --- internal/volume/volumes_information.go | 7 +++++++ pkg/apis/velero/v1/pod_volume_backup_types.go | 3 +++ pkg/apis/velero/v2alpha1/data_upload_types.go | 3 +++ pkg/backup/backup.go | 1 + 4 files changed, 14 insertions(+) diff --git a/internal/volume/volumes_information.go b/internal/volume/volumes_information.go index c5af900cb..39ae654e1 100644 --- a/internal/volume/volumes_information.go +++ b/internal/volume/volumes_information.go @@ -194,6 +194,9 @@ type BackupSnapshotDataMovementInfo struct { // The size of source volume, for backup only SourceSize int64 `json:"sourceSize,omitempty"` + // FallbackFull indicates whether the incremental backup fallbacks to full backup + FallbackFull bool `json:"fallbackFull,omitempty"` + // The DataUpload's Status.Phase value Phase velerov2alpha1.DataUploadPhase `json:"phase"` } @@ -300,6 +303,9 @@ type PodVolumeBackupInfo struct { // This field will be empty when the struct is used to represent a podvolumerestore. NodeName string `json:"nodeName,omitempty"` + // FallbackFull indicates whether the incremental backup fallbacks to full backup + FallbackFull bool `json:"fallbackFull,omitempty"` + // The PVB's Status.Phase value Phase velerov1api.PodVolumeBackupPhase `json:"phase,omitempty"` } @@ -352,6 +358,7 @@ func newPodVolumeInfoFromPVB(pvb *velerov1api.PodVolumeBackup) *PodVolumeBackupI PodNamespace: pvb.Spec.Pod.Namespace, NodeName: pvb.Spec.Node, Phase: pvb.Status.Phase, + FallbackFull: pvb.Status.FallbackFull, } } diff --git a/pkg/apis/velero/v1/pod_volume_backup_types.go b/pkg/apis/velero/v1/pod_volume_backup_types.go index 559d784f5..5b2c03361 100644 --- a/pkg/apis/velero/v1/pod_volume_backup_types.go +++ b/pkg/apis/velero/v1/pod_volume_backup_types.go @@ -141,6 +141,9 @@ type PodVolumeBackupStatus struct { // +optional // +nullable AcceptedTimestamp *metav1.Time `json:"acceptedTimestamp,omitempty"` + + // FallbackFull indicates whether the incremental backup fallbacks to full backup + FallbackFull bool `json:"fallbackFull,omitempty"` } // TODO(2.0) After converting all resources to use the runttime-controller client, diff --git a/pkg/apis/velero/v2alpha1/data_upload_types.go b/pkg/apis/velero/v2alpha1/data_upload_types.go index bc7d895dc..d207b151e 100644 --- a/pkg/apis/velero/v2alpha1/data_upload_types.go +++ b/pkg/apis/velero/v2alpha1/data_upload_types.go @@ -198,6 +198,9 @@ type DataUploadStatus struct { // +optional // +nullable AcceptedTimestamp *metav1.Time `json:"acceptedTimestamp,omitempty"` + + // FallbackFull indicates whether the incremental backup fallbacks to full backup + FallbackFull bool `json:"fallbackFull,omitempty"` } // TODO(2.0) After converting all resources to use the runttime-controller client, diff --git a/pkg/backup/backup.go b/pkg/backup/backup.go index 434fe1fa4..a3f3c570f 100644 --- a/pkg/backup/backup.go +++ b/pkg/backup/backup.go @@ -1330,6 +1330,7 @@ func updateVolumeInfos( volumeInfos[index].SnapshotDataMovementInfo.IncrementalSize = dataUpload.Status.IncrementalBytes volumeInfos[index].SnapshotDataMovementInfo.SourceSize = dataUpload.Status.SourceSize volumeInfos[index].SnapshotDataMovementInfo.Phase = dataUpload.Status.Phase + volumeInfos[index].SnapshotDataMovementInfo.FallbackFull = dataUpload.Status.FallbackFull if dataUpload.Status.Phase == velerov2alpha1.DataUploadPhaseCompleted { volumeInfos[index].Result = volume.VolumeResultSucceeded