diff --git a/changelogs/unreleased/8012-sseago b/changelogs/unreleased/8012-sseago new file mode 100644 index 0000000000..6f56e867ab --- /dev/null +++ b/changelogs/unreleased/8012-sseago @@ -0,0 +1 @@ +Reuse existing plugin manager for get/put volume info diff --git a/pkg/backup/backup.go b/pkg/backup/backup.go index 9e6da6fe72..7acae30603 100644 --- a/pkg/backup/backup.go +++ b/pkg/backup/backup.go @@ -95,6 +95,7 @@ type Backupper interface { outBackupFile io.Writer, backupItemActionResolver framework.BackupItemActionResolverV2, asyncBIAOperations []*itemoperation.BackupOperation, + backupStore persistence.BackupStore, ) error } @@ -610,6 +611,7 @@ func (kb *kubernetesBackupper) FinalizeBackup( outBackupFile io.Writer, backupItemActionResolver framework.BackupItemActionResolverV2, asyncBIAOperations []*itemoperation.BackupOperation, + backupStore persistence.BackupStore, ) error { gzw := gzip.NewWriter(outBackupFile) defer gzw.Close() @@ -726,7 +728,7 @@ func (kb *kubernetesBackupper) FinalizeBackup( }).Infof("Updated %d items out of an estimated total of %d (estimate will change throughout the backup finalizer)", len(backupRequest.BackedUpItems), totalItems) } - backupStore, volumeInfos, err := kb.getVolumeInfos(*backupRequest.Backup, log) + volumeInfos, err := kb.getVolumeInfos(*backupRequest.Backup, backupStore, log) if err != nil { log.WithError(err).Errorf("fail to get the backup VolumeInfos for backup %s", backupRequest.Name) return err @@ -812,30 +814,15 @@ type tarWriter interface { func (kb *kubernetesBackupper) getVolumeInfos( backup velerov1api.Backup, + backupStore persistence.BackupStore, log logrus.FieldLogger, -) (persistence.BackupStore, []*volume.BackupVolumeInfo, error) { - location := &velerov1api.BackupStorageLocation{} - if err := kb.kbClient.Get(context.Background(), kbclient.ObjectKey{ - Namespace: backup.Namespace, - Name: backup.Spec.StorageLocation, - }, location); err != nil { - return nil, nil, errors.WithStack(err) - } - - pluginManager := kb.pluginManager(log) - defer pluginManager.CleanupClients() - - backupStore, storeErr := kb.backupStoreGetter.Get(location, pluginManager, log) - if storeErr != nil { - return nil, nil, storeErr - } - +) ([]*volume.BackupVolumeInfo, error) { volumeInfos, err := backupStore.GetBackupVolumeInfos(backup.Name) if err != nil { - return nil, nil, err + return nil, err } - return backupStore, volumeInfos, nil + return volumeInfos, nil } // updateVolumeInfos update the VolumeInfos according to the AsyncOperations diff --git a/pkg/backup/backup_test.go b/pkg/backup/backup_test.go index 0c46070a9f..0fa981f9a9 100644 --- a/pkg/backup/backup_test.go +++ b/pkg/backup/backup_test.go @@ -4532,7 +4532,7 @@ func TestGetVolumeInfos(t *testing.T) { bsl := builder.ForBackupStorageLocation("velero", "default").Result() require.NoError(t, h.backupper.kbClient.Create(context.Background(), bsl)) - _, _, err := h.backupper.getVolumeInfos(*backup, h.log) + _, err := h.backupper.getVolumeInfos(*backup, backupStore, h.log) require.NoError(t, err) } diff --git a/pkg/controller/backup_controller_test.go b/pkg/controller/backup_controller_test.go index 46f123f1ab..bf1d836227 100644 --- a/pkg/controller/backup_controller_test.go +++ b/pkg/controller/backup_controller_test.go @@ -85,6 +85,7 @@ func (b *fakeBackupper) FinalizeBackup( outBackupFile io.Writer, backupItemActionResolver framework.BackupItemActionResolverV2, asyncBIAOperations []*itemoperation.BackupOperation, + backupStore persistence.BackupStore, ) error { args := b.Called(logger, backup, inBackupFile, outBackupFile, backupItemActionResolver, asyncBIAOperations) return args.Error(0) diff --git a/pkg/controller/backup_finalizer_controller.go b/pkg/controller/backup_finalizer_controller.go index 2bf17e9bfb..74386b1cd1 100644 --- a/pkg/controller/backup_finalizer_controller.go +++ b/pkg/controller/backup_finalizer_controller.go @@ -184,6 +184,7 @@ func (r *backupFinalizerReconciler) Reconcile(ctx context.Context, req ctrl.Requ outBackupFile, backupItemActionsResolver, operations, + backupStore, ) if err != nil { log.WithError(err).Error("error finalizing Backup") diff --git a/pkg/controller/backup_finalizer_controller_test.go b/pkg/controller/backup_finalizer_controller_test.go index 8c1a5e3615..898c5c28db 100644 --- a/pkg/controller/backup_finalizer_controller_test.go +++ b/pkg/controller/backup_finalizer_controller_test.go @@ -225,7 +225,7 @@ func TestBackupFinalizerReconcile(t *testing.T) { backupStore.On("GetBackupVolumeInfos", mock.Anything).Return(nil, nil) backupStore.On("PutBackupVolumeInfos", mock.Anything, mock.Anything).Return(nil) pluginManager.On("GetBackupItemActionsV2").Return(nil, nil) - backupper.On("FinalizeBackup", mock.Anything, mock.Anything, mock.Anything, mock.Anything, framework.BackupItemActionResolverV2{}, mock.Anything).Return(nil) + backupper.On("FinalizeBackup", mock.Anything, mock.Anything, mock.Anything, mock.Anything, framework.BackupItemActionResolverV2{}, mock.Anything, mock.Anything).Return(nil) _, err := reconciler.Reconcile(context.TODO(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: test.backup.Namespace, Name: test.backup.Name}}) gotErr := err != nil assert.Equal(t, test.expectError, gotErr)