diff --git a/controller/lifecycle/lifecycle.go b/controller/lifecycle/lifecycle.go index aa857bd..50e9156 100644 --- a/controller/lifecycle/lifecycle.go +++ b/controller/lifecycle/lifecycle.go @@ -178,7 +178,7 @@ func reconcileSubroutine(ctx context.Context, instance runtimeobject.RuntimeObje var result ctrl.Result var err errors.OperatorError if instance.GetDeletionTimestamp() != nil { - if containsFinalizer(instance, subroutine.Finalizers()) { + if containsFinalizer(instance, subroutine.Finalizers(instance)) { subroutineLogger.Debug().Msg("finalizing instance") result, err = subroutine.Finalize(ctx, instance) subroutineLogger.Debug().Any("result", result).Msg("finalized instance") @@ -222,7 +222,7 @@ func removeFinalizerIfNeeded(ctx context.Context, instance runtimeobject.Runtime if result.RequeueAfter == 0 { update := false original := instance.DeepCopyObject().(client.Object) - for _, f := range subroutine.Finalizers() { + for _, f := range subroutine.Finalizers(instance) { needsUpdate := controllerutil.RemoveFinalizer(instance, f) if needsUpdate { update = true @@ -320,7 +320,7 @@ func AddFinalizersIfNeeded(ctx context.Context, cl client.Client, instance runti update := false original := instance.DeepCopyObject().(client.Object) for _, s := range subroutines { - if len(s.Finalizers()) > 0 { + if len(s.Finalizers(instance)) > 0 { needsUpdate := AddFinalizerIfNeeded(instance, s) if needsUpdate { update = true @@ -338,7 +338,7 @@ func AddFinalizersIfNeeded(ctx context.Context, cl client.Client, instance runti func AddFinalizerIfNeeded(instance runtimeobject.RuntimeObject, subroutine subroutine.Subroutine) bool { update := false - for _, f := range subroutine.Finalizers() { + for _, f := range subroutine.Finalizers(instance) { needsUpdate := controllerutil.AddFinalizer(instance, f) if needsUpdate { update = true diff --git a/controller/lifecycle/lifecycle_test.go b/controller/lifecycle/lifecycle_test.go index 6069541..3b30b79 100644 --- a/controller/lifecycle/lifecycle_test.go +++ b/controller/lifecycle/lifecycle_test.go @@ -967,9 +967,9 @@ func TestRemoveFinalizerIfNeeded(t *testing.T) { func TestContainsFinalizer(t *testing.T) { instance := &pmtesting.TestApiObject{} sub := pmtesting.FinalizerSubroutine{} - assert.False(t, containsFinalizer(instance, sub.Finalizers())) + assert.False(t, containsFinalizer(instance, sub.Finalizers(instance))) AddFinalizerIfNeeded(instance, sub) - assert.True(t, containsFinalizer(instance, sub.Finalizers())) + assert.True(t, containsFinalizer(instance, sub.Finalizers(instance))) } func TestMarkResourceAsFinal(t *testing.T) { diff --git a/controller/lifecycle/subroutine/subroutine.go b/controller/lifecycle/subroutine/subroutine.go index 54a22e7..9fdf76e 100644 --- a/controller/lifecycle/subroutine/subroutine.go +++ b/controller/lifecycle/subroutine/subroutine.go @@ -13,5 +13,5 @@ type Subroutine interface { Process(ctx context.Context, instance runtimeobject.RuntimeObject) (ctrl.Result, errors.OperatorError) Finalize(ctx context.Context, instance runtimeobject.RuntimeObject) (ctrl.Result, errors.OperatorError) GetName() string - Finalizers() []string + Finalizers(instance runtimeobject.RuntimeObject) []string } diff --git a/controller/testSupport/finalizerSubroutine.go b/controller/testSupport/finalizerSubroutine.go index e6626d5..68271c5 100644 --- a/controller/testSupport/finalizerSubroutine.go +++ b/controller/testSupport/finalizerSubroutine.go @@ -40,7 +40,7 @@ func (c FinalizerSubroutine) GetName() string { return "changeStatus" } -func (c FinalizerSubroutine) Finalizers() []string { +func (c FinalizerSubroutine) Finalizers(_ runtimeobject.RuntimeObject) []string { return []string{ SubroutineFinalizer, } diff --git a/controller/testSupport/testSupport.go b/controller/testSupport/testSupport.go index c245d57..3fcb3bc 100644 --- a/controller/testSupport/testSupport.go +++ b/controller/testSupport/testSupport.go @@ -112,7 +112,7 @@ func (c ChangeStatusSubroutine) GetName() string { return "changeStatus" } -func (c ChangeStatusSubroutine) Finalizers() []string { +func (c ChangeStatusSubroutine) Finalizers(instance runtimeobject.RuntimeObject) []string { return []string{"changestatus"} } @@ -142,7 +142,7 @@ func (c AddConditionSubroutine) GetName() string { return "addCondition" } -func (c AddConditionSubroutine) Finalizers() []string { +func (c AddConditionSubroutine) Finalizers(instance runtimeobject.RuntimeObject) []string { return []string{} } @@ -169,7 +169,7 @@ func (f FailureScenarioSubroutine) Finalize(_ context.Context, _ runtimeobject.R return controllerruntime.Result{}, errors.NewOperatorError(fmt.Errorf("FailureScenarioSubroutine"), true, false) } -func (f FailureScenarioSubroutine) Finalizers() []string { +func (f FailureScenarioSubroutine) Finalizers(instance runtimeobject.RuntimeObject) []string { return []string{FailureScenarioSubroutineFinalizer} } @@ -220,7 +220,7 @@ func (f ContextValueSubroutine) Finalize(_ context.Context, _ runtimeobject.Runt return controllerruntime.Result{}, nil } -func (f ContextValueSubroutine) Finalizers() []string { +func (f ContextValueSubroutine) Finalizers(instance runtimeobject.RuntimeObject) []string { return []string{} }