From 1a167f9ebfad34b61fdad28fd4554b7ed82058a4 Mon Sep 17 00:00:00 2001 From: Anshul Ahuja Date: Wed, 31 Jul 2024 20:23:39 +0530 Subject: [PATCH] Fail Delete Backup if BSL is not available (#8029) * Fail Delete Backup if BSL is not available Signed-off-by: Anshul Ahuja * linter Signed-off-by: Anshul Ahuja --------- Signed-off-by: Anshul Ahuja --- pkg/controller/backup_deletion_controller.go | 6 +++++- pkg/controller/backup_deletion_controller_test.go | 9 +++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/pkg/controller/backup_deletion_controller.go b/pkg/controller/backup_deletion_controller.go index a37f1f9e8..86612f871 100644 --- a/pkg/controller/backup_deletion_controller.go +++ b/pkg/controller/backup_deletion_controller.go @@ -248,7 +248,11 @@ func (r *backupDeletionReconciler) Reconcile(ctx context.Context, req ctrl.Reque backupStore, err := r.backupStoreGetter.Get(location, pluginManager, log) if err != nil { - return ctrl.Result{}, errors.Wrap(err, "error getting the backup store") + _, patchErr := r.patchDeleteBackupRequest(ctx, dbr, func(r *velerov1api.DeleteBackupRequest) { + r.Status.Phase = velerov1api.DeleteBackupRequestPhaseProcessed + r.Status.Errors = append(r.Status.Errors, fmt.Sprintf("cannot delete backup because backup storage location %s is currently unavailable, error: %s", location.Name, err.Error())) + }) + return ctrl.Result{}, patchErr } actions, err := pluginManager.GetDeleteItemActions() diff --git a/pkg/controller/backup_deletion_controller_test.go b/pkg/controller/backup_deletion_controller_test.go index c82a90bca..e36876f87 100644 --- a/pkg/controller/backup_deletion_controller_test.go +++ b/pkg/controller/backup_deletion_controller_test.go @@ -125,8 +125,13 @@ func TestBackupDeletionControllerReconcile(t *testing.T) { td := setupBackupDeletionControllerTest(t, defaultTestDbr(), location, backup) td.controller.backupStoreGetter = &fakeErrorBackupStoreGetter{} _, err := td.controller.Reconcile(ctx, td.req) - assert.Error(t, err) - assert.True(t, strings.HasPrefix(err.Error(), "error getting the backup store")) + require.NoError(t, err) + res := &velerov1api.DeleteBackupRequest{} + err = td.fakeClient.Get(ctx, td.req.NamespacedName, res) + require.NoError(t, err) + assert.Equal(t, "Processed", string(res.Status.Phase)) + assert.Len(t, res.Status.Errors, 1) + assert.True(t, strings.HasPrefix(res.Status.Errors[0], fmt.Sprintf("cannot delete backup because backup storage location %s is currently unavailable", location.Name))) }) t.Run("missing spec.backupName", func(t *testing.T) {