From 09bfc69d638ae590a176a79c97a90cdc7ef53bc7 Mon Sep 17 00:00:00 2001 From: Lyndon-Li Date: Tue, 2 Jun 2026 17:22:29 +0800 Subject: [PATCH] add totalSize to repo snapshot Signed-off-by: Lyndon-Li --- changelogs/unreleased/9875-Lyndon-Li | 1 + pkg/repository/udmrepo/kopialib/lib_repo.go | 9 ++++++++- pkg/repository/udmrepo/repo.go | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 changelogs/unreleased/9875-Lyndon-Li diff --git a/changelogs/unreleased/9875-Lyndon-Li b/changelogs/unreleased/9875-Lyndon-Li new file mode 100644 index 000000000..c0afbee71 --- /dev/null +++ b/changelogs/unreleased/9875-Lyndon-Li @@ -0,0 +1 @@ +Add totalSize to repo snapshot operation; and pin unified repo snapshots to Kopia repository and so pin them with Velero backup lifecycle \ No newline at end of file diff --git a/pkg/repository/udmrepo/kopialib/lib_repo.go b/pkg/repository/udmrepo/kopialib/lib_repo.go index 42e7fa1c2..12dd0f688 100644 --- a/pkg/repository/udmrepo/kopialib/lib_repo.go +++ b/pkg/repository/udmrepo/kopialib/lib_repo.go @@ -626,6 +626,9 @@ func (kr *kopiaRepository) SaveSnapshot(ctx context.Context, snap udmrepo.Snapsh Description: snap.Description, StartTime: fs.UTCTimestampFromTime(snap.StartTime), EndTime: fs.UTCTimestampFromTime(snap.EndTime), + Stats: snapshot.Stats{ + TotalFileSize: snap.TotalSize, + }, RootEntry: &snapshot.DirEntry{ Type: snapshot.EntryTypeDirectory, ObjectID: rootObj, @@ -634,9 +637,12 @@ func (kr *kopiaRepository) SaveSnapshot(ctx context.Context, snap udmrepo.Snapsh FileSize: snap.RootObject.Size, UserID: snap.RootObject.UserID, GroupID: snap.RootObject.GroupID, + DirSummary: &fs.DirectorySummary{ + TotalFileSize: snap.TotalSize, + }, }, Tags: snap.Tags, - Pins: []string{"velero-pin"}, + Pins: []string{"velero-pin"}, // pins are meant to prevent snapshot from automatic expiration/deletion. } id, err := snapshot.SaveSnapshot(ctx, kr.rawWriter, &manifest) @@ -663,6 +669,7 @@ func (kr *kopiaRepository) GetSnapshot(ctx context.Context, id udmrepo.ID) (udmr StartTime: snap.StartTime.ToTime(), EndTime: snap.EndTime.ToTime(), Tags: snap.Tags, + TotalSize: snap.Stats.TotalFileSize, RootObject: udmrepo.ObjectMetadata{ ID: udmrepo.ID(snap.RootEntry.ObjectID.String()), Type: udmrepo.ObjectDataTypeMetadata, diff --git a/pkg/repository/udmrepo/repo.go b/pkg/repository/udmrepo/repo.go index 7b47eb735..bd0e6eb19 100644 --- a/pkg/repository/udmrepo/repo.go +++ b/pkg/repository/udmrepo/repo.go @@ -98,6 +98,7 @@ type Snapshot struct { StartTime time.Time EndTime time.Time Tags map[string]string + TotalSize int64 RootObject ObjectMetadata }