From 5be33770e8e4e592d6f566f15b674d7a287557af Mon Sep 17 00:00:00 2001 From: Stefan Prodan Date: Thu, 13 Jan 2022 18:18:32 +0200 Subject: [PATCH] Use patch instead of update when adding finalizers This is needed to prevent source-controller from managing all the fields under `.spec`. Signed-off-by: Stefan Prodan --- controllers/bucket_controller.go | 3 ++- controllers/gitrepository_controller.go | 3 ++- controllers/helmchart_controller.go | 3 ++- controllers/helmrepository_controller.go | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/controllers/bucket_controller.go b/controllers/bucket_controller.go index 95ac7029..a25587d1 100644 --- a/controllers/bucket_controller.go +++ b/controllers/bucket_controller.go @@ -97,8 +97,9 @@ func (r *BucketReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr // Add our finalizer if it does not exist if !controllerutil.ContainsFinalizer(&bucket, sourcev1.SourceFinalizer) { + patch := client.MergeFrom(bucket.DeepCopy()) controllerutil.AddFinalizer(&bucket, sourcev1.SourceFinalizer) - if err := r.Update(ctx, &bucket); err != nil { + if err := r.Patch(ctx, &bucket, patch); err != nil { log.Error(err, "unable to register finalizer") return ctrl.Result{}, err } diff --git a/controllers/gitrepository_controller.go b/controllers/gitrepository_controller.go index 7568c443..7642a161 100644 --- a/controllers/gitrepository_controller.go +++ b/controllers/gitrepository_controller.go @@ -100,8 +100,9 @@ func (r *GitRepositoryReconciler) Reconcile(ctx context.Context, req ctrl.Reques // Add our finalizer if it does not exist if !controllerutil.ContainsFinalizer(&repository, sourcev1.SourceFinalizer) { + patch := client.MergeFrom(repository.DeepCopy()) controllerutil.AddFinalizer(&repository, sourcev1.SourceFinalizer) - if err := r.Update(ctx, &repository); err != nil { + if err := r.Patch(ctx, &repository, patch); err != nil { log.Error(err, "unable to register finalizer") return ctrl.Result{}, err } diff --git a/controllers/helmchart_controller.go b/controllers/helmchart_controller.go index 0f5dbeb1..e63f8e45 100644 --- a/controllers/helmchart_controller.go +++ b/controllers/helmchart_controller.go @@ -126,8 +126,9 @@ func (r *HelmChartReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( // Add our finalizer if it does not exist if !controllerutil.ContainsFinalizer(&chart, sourcev1.SourceFinalizer) { + patch := client.MergeFrom(chart.DeepCopy()) controllerutil.AddFinalizer(&chart, sourcev1.SourceFinalizer) - if err := r.Update(ctx, &chart); err != nil { + if err := r.Patch(ctx, &chart, patch); err != nil { log.Error(err, "unable to register finalizer") return ctrl.Result{}, err } diff --git a/controllers/helmrepository_controller.go b/controllers/helmrepository_controller.go index b17d75e7..d82bdad6 100644 --- a/controllers/helmrepository_controller.go +++ b/controllers/helmrepository_controller.go @@ -93,8 +93,9 @@ func (r *HelmRepositoryReconciler) Reconcile(ctx context.Context, req ctrl.Reque // Add our finalizer if it does not exist if !controllerutil.ContainsFinalizer(&repository, sourcev1.SourceFinalizer) { + patch := client.MergeFrom(repository.DeepCopy()) controllerutil.AddFinalizer(&repository, sourcev1.SourceFinalizer) - if err := r.Update(ctx, &repository); err != nil { + if err := r.Patch(ctx, &repository, patch); err != nil { log.Error(err, "unable to register finalizer") return ctrl.Result{}, err }