diff --git a/changelogs/unreleased/8946-blackpiglet b/changelogs/unreleased/8946-blackpiglet new file mode 100644 index 000000000..a83ab9290 --- /dev/null +++ b/changelogs/unreleased/8946-blackpiglet @@ -0,0 +1 @@ +Remove CSI VS and VSC metadata from backup. diff --git a/pkg/controller/backup_controller.go b/pkg/controller/backup_controller.go index 17656d96b..9ae3b3590 100644 --- a/pkg/controller/backup_controller.go +++ b/pkg/controller/backup_controller.go @@ -833,15 +833,6 @@ func persistBackup(backup *pkgbackup.Request, persistErrs = append(persistErrs, errs...) } - csiSnapshotJSON, errs := encode.ToJSONGzip(csiVolumeSnapshots, "csi volume snapshots list") - if errs != nil { - persistErrs = append(persistErrs, errs...) - } - - csiSnapshotContentsJSON, errs := encode.ToJSONGzip(csiVolumeSnapshotContents, "csi volume snapshot contents list") - if errs != nil { - persistErrs = append(persistErrs, errs...) - } csiSnapshotClassesJSON, errs := encode.ToJSONGzip(csiVolumeSnapshotClasses, "csi volume snapshot classes list") if errs != nil { persistErrs = append(persistErrs, errs...) @@ -877,27 +868,23 @@ func persistBackup(backup *pkgbackup.Request, nativeVolumeSnapshots = nil backupItemOperations = nil backupResourceList = nil - csiSnapshotJSON = nil - csiSnapshotContentsJSON = nil csiSnapshotClassesJSON = nil backupResult = nil volumeInfoJSON = nil } backupInfo := persistence.BackupInfo{ - Name: backup.Name, - Metadata: backupJSON, - Contents: backupContents, - Log: backupLog, - BackupResults: backupResult, - PodVolumeBackups: podVolumeBackups, - VolumeSnapshots: nativeVolumeSnapshots, - BackupItemOperations: backupItemOperations, - BackupResourceList: backupResourceList, - CSIVolumeSnapshots: csiSnapshotJSON, - CSIVolumeSnapshotContents: csiSnapshotContentsJSON, - CSIVolumeSnapshotClasses: csiSnapshotClassesJSON, - BackupVolumeInfo: volumeInfoJSON, + Name: backup.Name, + Metadata: backupJSON, + Contents: backupContents, + Log: backupLog, + BackupResults: backupResult, + PodVolumeBackups: podVolumeBackups, + VolumeSnapshots: nativeVolumeSnapshots, + BackupItemOperations: backupItemOperations, + BackupResourceList: backupResourceList, + CSIVolumeSnapshotClasses: csiSnapshotClassesJSON, + BackupVolumeInfo: volumeInfoJSON, } if err := backupStore.PutBackup(backupInfo); err != nil { persistErrs = append(persistErrs, err) diff --git a/pkg/persistence/object_store.go b/pkg/persistence/object_store.go index bfdc8fbdc..0fd069d85 100644 --- a/pkg/persistence/object_store.go +++ b/pkg/persistence/object_store.go @@ -49,8 +49,6 @@ type BackupInfo struct { VolumeSnapshots, BackupItemOperations, BackupResourceList, - CSIVolumeSnapshots, - CSIVolumeSnapshotContents, CSIVolumeSnapshotClasses, BackupVolumeInfo io.Reader } @@ -72,7 +70,6 @@ type BackupStore interface { GetPodVolumeBackups(name string) ([]*velerov1api.PodVolumeBackup, error) GetBackupContents(name string) (io.ReadCloser, error) GetCSIVolumeSnapshots(name string) ([]*snapshotv1api.VolumeSnapshot, error) - GetCSIVolumeSnapshotContents(name string) ([]*snapshotv1api.VolumeSnapshotContent, error) GetCSIVolumeSnapshotClasses(name string) ([]*snapshotv1api.VolumeSnapshotClass, error) PutBackupVolumeInfos(name string, volumeInfo io.Reader) error GetBackupVolumeInfos(name string) ([]*volume.BackupVolumeInfo, error) @@ -269,15 +266,13 @@ func (s *objectBackupStore) PutBackup(info BackupInfo) error { // Since the logic for all of these files is the exact same except for the name and the contents, // use a map literal to iterate through them and write them to the bucket. var backupObjs = map[string]io.Reader{ - s.layout.getPodVolumeBackupsKey(info.Name): info.PodVolumeBackups, - s.layout.getBackupVolumeSnapshotsKey(info.Name): info.VolumeSnapshots, - s.layout.getBackupItemOperationsKey(info.Name): info.BackupItemOperations, - s.layout.getBackupResourceListKey(info.Name): info.BackupResourceList, - s.layout.getCSIVolumeSnapshotKey(info.Name): info.CSIVolumeSnapshots, - s.layout.getCSIVolumeSnapshotContentsKey(info.Name): info.CSIVolumeSnapshotContents, - s.layout.getCSIVolumeSnapshotClassesKey(info.Name): info.CSIVolumeSnapshotClasses, - s.layout.getBackupResultsKey(info.Name): info.BackupResults, - s.layout.getBackupVolumeInfoKey(info.Name): info.BackupVolumeInfo, + s.layout.getPodVolumeBackupsKey(info.Name): info.PodVolumeBackups, + s.layout.getBackupVolumeSnapshotsKey(info.Name): info.VolumeSnapshots, + s.layout.getBackupItemOperationsKey(info.Name): info.BackupItemOperations, + s.layout.getBackupResourceListKey(info.Name): info.BackupResourceList, + s.layout.getCSIVolumeSnapshotClassesKey(info.Name): info.CSIVolumeSnapshotClasses, + s.layout.getBackupResultsKey(info.Name): info.BackupResults, + s.layout.getBackupVolumeInfoKey(info.Name): info.BackupVolumeInfo, } for key, reader := range backupObjs { diff --git a/pkg/persistence/object_store_test.go b/pkg/persistence/object_store_test.go index e8eb3b9a0..fab522c53 100644 --- a/pkg/persistence/object_store_test.go +++ b/pkg/persistence/object_store_test.go @@ -863,40 +863,6 @@ func TestGetCSIVolumeSnapshots(t *testing.T) { assert.EqualValues(t, snapshots, res) } -func TestGetCSIVolumeSnapshotContents(t *testing.T) { - harness := newObjectBackupStoreTestHarness("test-bucket", "") - - // file not found should not error - res, err := harness.GetCSIVolumeSnapshotContents("test-backup") - assert.NoError(t, err) - assert.Nil(t, res) - - // file containing invalid data should error - harness.objectStore.PutObject(harness.bucket, "backups/test-backup/test-backup-csi-volumesnapshotcontents.json.gz", newStringReadSeeker("foo")) - _, err = harness.GetCSIVolumeSnapshotContents("test-backup") - assert.Error(t, err) - - // file containing gzipped json data should return correctly - contents := []*snapshotv1api.VolumeSnapshotContent{ - { - Spec: snapshotv1api.VolumeSnapshotContentSpec{ - Driver: "driver", - }, - }, - } - - obj := new(bytes.Buffer) - gzw := gzip.NewWriter(obj) - - require.NoError(t, json.NewEncoder(gzw).Encode(contents)) - require.NoError(t, gzw.Close()) - require.NoError(t, harness.objectStore.PutObject(harness.bucket, "backups/test-backup/test-backup-csi-volumesnapshotcontents.json.gz", obj)) - - res, err = harness.GetCSIVolumeSnapshotContents("test-backup") - assert.NoError(t, err) - assert.EqualValues(t, contents, res) -} - type objectStoreGetter map[string]velero.ObjectStore func (osg objectStoreGetter) GetObjectStore(provider string) (velero.ObjectStore, error) {