Skip to content

Commit 5db8915

Browse files
authored
feat: allow subroutines to decide on the finalizer considering the instance (#73)
1 parent 1f8a4fd commit 5db8915

File tree

5 files changed

+12
-12
lines changed

5 files changed

+12
-12
lines changed

controller/lifecycle/lifecycle.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ func reconcileSubroutine(ctx context.Context, instance runtimeobject.RuntimeObje
178178
var result ctrl.Result
179179
var err errors.OperatorError
180180
if instance.GetDeletionTimestamp() != nil {
181-
if containsFinalizer(instance, subroutine.Finalizers()) {
181+
if containsFinalizer(instance, subroutine.Finalizers(instance)) {
182182
subroutineLogger.Debug().Msg("finalizing instance")
183183
result, err = subroutine.Finalize(ctx, instance)
184184
subroutineLogger.Debug().Any("result", result).Msg("finalized instance")
@@ -222,7 +222,7 @@ func removeFinalizerIfNeeded(ctx context.Context, instance runtimeobject.Runtime
222222
if result.RequeueAfter == 0 {
223223
update := false
224224
original := instance.DeepCopyObject().(client.Object)
225-
for _, f := range subroutine.Finalizers() {
225+
for _, f := range subroutine.Finalizers(instance) {
226226
needsUpdate := controllerutil.RemoveFinalizer(instance, f)
227227
if needsUpdate {
228228
update = true
@@ -320,7 +320,7 @@ func AddFinalizersIfNeeded(ctx context.Context, cl client.Client, instance runti
320320
update := false
321321
original := instance.DeepCopyObject().(client.Object)
322322
for _, s := range subroutines {
323-
if len(s.Finalizers()) > 0 {
323+
if len(s.Finalizers(instance)) > 0 {
324324
needsUpdate := AddFinalizerIfNeeded(instance, s)
325325
if needsUpdate {
326326
update = true
@@ -338,7 +338,7 @@ func AddFinalizersIfNeeded(ctx context.Context, cl client.Client, instance runti
338338

339339
func AddFinalizerIfNeeded(instance runtimeobject.RuntimeObject, subroutine subroutine.Subroutine) bool {
340340
update := false
341-
for _, f := range subroutine.Finalizers() {
341+
for _, f := range subroutine.Finalizers(instance) {
342342
needsUpdate := controllerutil.AddFinalizer(instance, f)
343343
if needsUpdate {
344344
update = true

controller/lifecycle/lifecycle_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -967,9 +967,9 @@ func TestRemoveFinalizerIfNeeded(t *testing.T) {
967967
func TestContainsFinalizer(t *testing.T) {
968968
instance := &pmtesting.TestApiObject{}
969969
sub := pmtesting.FinalizerSubroutine{}
970-
assert.False(t, containsFinalizer(instance, sub.Finalizers()))
970+
assert.False(t, containsFinalizer(instance, sub.Finalizers(instance)))
971971
AddFinalizerIfNeeded(instance, sub)
972-
assert.True(t, containsFinalizer(instance, sub.Finalizers()))
972+
assert.True(t, containsFinalizer(instance, sub.Finalizers(instance)))
973973
}
974974

975975
func TestMarkResourceAsFinal(t *testing.T) {

controller/lifecycle/subroutine/subroutine.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ type Subroutine interface {
1313
Process(ctx context.Context, instance runtimeobject.RuntimeObject) (ctrl.Result, errors.OperatorError)
1414
Finalize(ctx context.Context, instance runtimeobject.RuntimeObject) (ctrl.Result, errors.OperatorError)
1515
GetName() string
16-
Finalizers() []string
16+
Finalizers(instance runtimeobject.RuntimeObject) []string
1717
}

controller/testSupport/finalizerSubroutine.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func (c FinalizerSubroutine) GetName() string {
4040
return "changeStatus"
4141
}
4242

43-
func (c FinalizerSubroutine) Finalizers() []string {
43+
func (c FinalizerSubroutine) Finalizers(_ runtimeobject.RuntimeObject) []string {
4444
return []string{
4545
SubroutineFinalizer,
4646
}

controller/testSupport/testSupport.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ func (c ChangeStatusSubroutine) GetName() string {
112112
return "changeStatus"
113113
}
114114

115-
func (c ChangeStatusSubroutine) Finalizers() []string {
115+
func (c ChangeStatusSubroutine) Finalizers(instance runtimeobject.RuntimeObject) []string {
116116
return []string{"changestatus"}
117117
}
118118

@@ -142,7 +142,7 @@ func (c AddConditionSubroutine) GetName() string {
142142
return "addCondition"
143143
}
144144

145-
func (c AddConditionSubroutine) Finalizers() []string {
145+
func (c AddConditionSubroutine) Finalizers(instance runtimeobject.RuntimeObject) []string {
146146
return []string{}
147147
}
148148

@@ -169,7 +169,7 @@ func (f FailureScenarioSubroutine) Finalize(_ context.Context, _ runtimeobject.R
169169
return controllerruntime.Result{}, errors.NewOperatorError(fmt.Errorf("FailureScenarioSubroutine"), true, false)
170170
}
171171

172-
func (f FailureScenarioSubroutine) Finalizers() []string {
172+
func (f FailureScenarioSubroutine) Finalizers(instance runtimeobject.RuntimeObject) []string {
173173
return []string{FailureScenarioSubroutineFinalizer}
174174
}
175175

@@ -220,7 +220,7 @@ func (f ContextValueSubroutine) Finalize(_ context.Context, _ runtimeobject.Runt
220220
return controllerruntime.Result{}, nil
221221
}
222222

223-
func (f ContextValueSubroutine) Finalizers() []string {
223+
func (f ContextValueSubroutine) Finalizers(instance runtimeobject.RuntimeObject) []string {
224224
return []string{}
225225
}
226226

0 commit comments

Comments
 (0)