From 82faa554bda815fef10bdad4e6d7004f53653ce9 Mon Sep 17 00:00:00 2001 From: Anshul Ahuja Date: Fri, 19 Jul 2024 04:32:39 +0000 Subject: [PATCH] Fail Delete Backup if BSL is not available 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..6b4bb7818 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")) + assert.Nil(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.Equal(t, 1, len(res.Status.Errors)) + 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) {