Skip to content

Commit 53b8f70

Browse files
committed
fixup! Use Patch instead of Update for finalizer operations
Signed-off-by: Todd Short <[email protected]>
1 parent 6903fb2 commit 53b8f70

File tree

4 files changed

+27
-27
lines changed

4 files changed

+27
-27
lines changed

internal/catalogd/controllers/core/clustercatalog_controller.go

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,12 @@ import (
4444
)
4545

4646
const (
47-
fbcDeletionFinalizer = "olm.operatorframework.io/delete-server-cache"
47+
ClusterCatalogFinalizerOwner = "olm.operatorframework.io/clustercatalog-controller"
48+
fbcDeletionFinalizer = "olm.operatorframework.io/delete-server-cache"
4849
// CatalogSources are polled if PollInterval is mentioned, in intervals of wait.Jitter(pollDuration, maxFactor)
4950
// wait.Jitter returns a time.Duration between pollDuration and pollDuration + maxFactor * pollDuration.
50-
requeueJitterMaxFactor = 0.01
51+
requeueJitterMaxFactor = 0.01
52+
lastAppliedConfiguration = "kubectl.kubernetes.io/last-applied-configuration"
5153
)
5254

5355
// ClusterCatalogReconciler reconciles a Catalog object
@@ -150,20 +152,16 @@ func (r *ClusterCatalogReconciler) reconcile(ctx context.Context, catalog *ocv1.
150152
return ctrl.Result{}, err
151153
}
152154

155+
// Set status.conditions[type=Progressing] to False as we are done with
156+
// all that needs to be done with the catalog
157+
updateStatusProgressingUserSpecifiedUnavailable(&catalog.Status, catalog.GetGeneration())
158+
153159
// Remove the fbcDeletionFinalizer as we do not want a finalizer attached to the catalog
154160
// when it is disabled. Because the finalizer serves no purpose now.
155-
if err := finalizerutil.RemoveFinalizer(ctx, r.Client, catalog, fbcDeletionFinalizer); err != nil {
161+
if err := finalizerutil.RemoveFinalizers(ctx, ClusterCatalogFinalizerOwner, r.Client, catalog, fbcDeletionFinalizer); err != nil {
156162
return ctrl.Result{}, fmt.Errorf("error removing finalizer: %v", err)
157163
}
158164

159-
// Set status.conditions[type=Progressing] to True as we are done with
160-
// all that needs to be done with the catalog
161-
updateStatusProgressingUserSpecifiedUnavailable(&catalog.Status, catalog.GetGeneration())
162-
// Clear URLs, ResolvedSource, and LastUnpacked since catalog is unavailable
163-
catalog.Status.ResolvedSource = nil
164-
catalog.Status.URLs = nil
165-
catalog.Status.LastUnpacked = nil
166-
167165
return ctrl.Result{}, nil
168166
}
169167

@@ -176,16 +174,16 @@ func (r *ClusterCatalogReconciler) reconcile(ctx context.Context, catalog *ocv1.
176174
if err := r.deleteCatalogCache(ctx, catalog); err != nil {
177175
return ctrl.Result{}, fmt.Errorf("finalizer %q failed: %w", fbcDeletionFinalizer, err)
178176
}
179-
if err := finalizerutil.RemoveFinalizer(ctx, r.Client, catalog, fbcDeletionFinalizer); err != nil {
177+
if err := finalizerutil.RemoveFinalizers(ctx, ClusterCatalogFinalizerOwner, r.Client, catalog, fbcDeletionFinalizer); err != nil {
180178
return ctrl.Result{}, fmt.Errorf("error removing finalizer: %v", err)
181179
}
182180
// Update status to reflect that catalog is no longer serving
183181
updateStatusNotServing(&catalog.Status, catalog.GetGeneration())
184182
return ctrl.Result{}, nil
185183
}
186184

187-
// Ensure finalizer is present
188-
finalizerAdded, err := finalizerutil.EnsureFinalizer(ctx, r.Client, catalog, fbcDeletionFinalizer)
185+
// Add finalizer
186+
finalizerAdded, err := finalizerutil.AddFinalizers(ctx, ClusterCatalogFinalizerOwner, r.Client, catalog, fbcDeletionFinalizer)
189187
if err != nil {
190188
return ctrl.Result{}, fmt.Errorf("error ensuring finalizer: %v", err)
191189
}
@@ -417,10 +415,10 @@ func checkForUnexpectedFieldChange(a, b ocv1.ClusterCatalog) bool {
417415
a.ResourceVersion, b.ResourceVersion = "", ""
418416
// Remove kubectl's last-applied-configuration annotation which may be added by the API server
419417
if a.Annotations != nil {
420-
delete(a.Annotations, "kubectl.kubernetes.io/last-applied-configuration")
418+
delete(a.Annotations, lastAppliedConfiguration)
421419
}
422420
if b.Annotations != nil {
423-
delete(b.Annotations, "kubectl.kubernetes.io/last-applied-configuration")
421+
delete(b.Annotations, lastAppliedConfiguration)
424422
}
425423
return !equality.Semantic.DeepEqual(a, b)
426424
}

internal/operator-controller/controllers/clusterextension_controller.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ import (
6161
const (
6262
ClusterExtensionCleanupUnpackCacheFinalizer = "olm.operatorframework.io/cleanup-unpack-cache"
6363
ClusterExtensionCleanupContentManagerCacheFinalizer = "olm.operatorframework.io/cleanup-contentmanager-cache"
64+
ClusterExtensionFinalizerOwner = "olm.operatorframework.io/clusterextension-controller"
6465
)
6566

6667
// ClusterExtensionReconciler reconciles a ClusterExtension object
@@ -195,7 +196,7 @@ func (r *ClusterExtensionReconciler) handleDeletion(ctx context.Context, ext *oc
195196
}
196197
// Remove all finalizers in a single patch operation
197198
if len(finalizersToRemove) > 0 {
198-
if err := finalizerutil.RemoveFinalizer(ctx, r.Client, ext, finalizersToRemove...); err != nil {
199+
if err := finalizerutil.RemoveFinalizers(ctx, ClusterExtensionFinalizerOwner, r.Client, ext, finalizersToRemove...); err != nil {
199200
setStatusProgressing(ext, err)
200201
return ctrl.Result{}, fmt.Errorf("error removing finalizers: %v", err)
201202
}
@@ -215,13 +216,13 @@ func (r *ClusterExtensionReconciler) reconcile(ctx context.Context, ext *ocv1.Cl
215216
return r.handleDeletion(ctx, ext)
216217
}
217218

218-
// Ensure all finalizers are present
219+
// Add all finalizers
219220
finalizers := make([]string, 0, len(r.FinalizerHandlers))
220221
for finalizerKey := range r.FinalizerHandlers {
221222
finalizers = append(finalizers, finalizerKey)
222223
}
223224
if len(finalizers) > 0 {
224-
if _, err := finalizerutil.EnsureFinalizer(ctx, r.Client, ext, finalizers...); err != nil {
225+
if _, err := finalizerutil.AddFinalizers(ctx, ClusterExtensionFinalizerOwner, r.Client, ext, finalizers...); err != nil {
225226
setStatusProgressing(ext, err)
226227
return ctrl.Result{}, fmt.Errorf("error ensuring finalizers: %v", err)
227228
}

internal/operator-controller/controllers/clusterextensionrevision_controller.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
const (
3838
ClusterExtensionRevisionOwnerLabel = "olm.operatorframework.io/owner"
3939
clusterExtensionRevisionTeardownFinalizer = "olm.operatorframework.io/teardown"
40+
CluserExtensionRevisionFinalizerOwner = "olm.operatorframework.io/clusterextensionrevision-controller"
4041
)
4142

4243
// ClusterExtensionRevisionReconciler actions individual snapshots of ClusterExtensions,
@@ -140,7 +141,7 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, rev
140141
//
141142
// Reconcile
142143
//
143-
if _, err := finalizerutil.EnsureFinalizer(ctx, c.Client, rev, clusterExtensionRevisionTeardownFinalizer); err != nil {
144+
if _, err := finalizerutil.AddFinalizers(ctx, CluserExtensionRevisionFinalizerOwner, c.Client, rev, clusterExtensionRevisionTeardownFinalizer); err != nil {
144145
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
145146
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
146147
Status: metav1.ConditionFalse,
@@ -375,7 +376,7 @@ func (c *ClusterExtensionRevisionReconciler) teardown(ctx context.Context, rev *
375376
return ctrl.Result{}, nil
376377
}
377378

378-
if err := finalizerutil.RemoveFinalizer(ctx, c.Client, rev, clusterExtensionRevisionTeardownFinalizer); err != nil {
379+
if err := finalizerutil.RemoveFinalizers(ctx, CluserExtensionRevisionFinalizerOwner, c.Client, rev, clusterExtensionRevisionTeardownFinalizer); err != nil {
379380
return ctrl.Result{}, fmt.Errorf("error removing teardown finalizer: %v", err)
380381
}
381382
return ctrl.Result{}, nil

internal/shared/util/finalizer/finalizer.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ import (
2929
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
3030
)
3131

32-
// EnsureFinalizer adds one or more finalizers to the object using server-side apply.
32+
// AddFinalizers adds one or more finalizers to the object using server-side apply.
3333
// If all finalizers already exist, this is a no-op and returns (false, nil).
3434
// Returns (true, nil) if any finalizers were added.
3535
// Note: This function will update the passed object with the server response.
36-
func EnsureFinalizer(ctx context.Context, c client.Client, obj client.Object, finalizers ...string) (bool, error) {
36+
func AddFinalizers(ctx context.Context, owner string, c client.Client, obj client.Object, finalizers ...string) (bool, error) {
3737
if len(finalizers) == 0 {
3838
return false, nil
3939
}
@@ -73,7 +73,7 @@ func EnsureFinalizer(ctx context.Context, c client.Client, obj client.Object, fi
7373
u.SetFinalizers(newFinalizers)
7474

7575
// Use server-side apply to update finalizers
76-
if err := c.Patch(ctx, u, client.Apply, client.ForceOwnership, client.FieldOwner("finalizer-controller")); err != nil {
76+
if err := c.Patch(ctx, u, client.Apply, client.ForceOwnership, client.FieldOwner(owner)); err != nil {
7777
return false, fmt.Errorf("adding finalizer: %w", err)
7878
}
7979

@@ -84,9 +84,9 @@ func EnsureFinalizer(ctx context.Context, c client.Client, obj client.Object, fi
8484
return true, nil
8585
}
8686

87-
// RemoveFinalizer removes one or more finalizers from the object using server-side apply.
87+
// RemoveFinalizers removes one or more finalizers from the object using server-side apply.
8888
// If none of the finalizers exist, this is a no-op.
89-
func RemoveFinalizer(ctx context.Context, c client.Client, obj client.Object, finalizers ...string) error {
89+
func RemoveFinalizers(ctx context.Context, owner string, c client.Client, obj client.Object, finalizers ...string) error {
9090
if len(finalizers) == 0 {
9191
return nil
9292
}
@@ -125,7 +125,7 @@ func RemoveFinalizer(ctx context.Context, c client.Client, obj client.Object, fi
125125
u.SetFinalizers(newFinalizers)
126126

127127
// Use server-side apply to update finalizers
128-
if err := c.Patch(ctx, u, client.Apply, client.ForceOwnership, client.FieldOwner("finalizer-controller")); err != nil {
128+
if err := c.Patch(ctx, u, client.Apply, client.ForceOwnership, client.FieldOwner(owner)); err != nil {
129129
return fmt.Errorf("removing finalizer: %w", err)
130130
}
131131

0 commit comments

Comments
 (0)