Avoid second lister fetch during finalizer reconciliation. (#2596)

I noticed that the finalizer manipulation code was performing a second fetch of the resource from the lister cache to determine the differences in finalizers when the finalizers are being modify immediately above each callsite.

This changes both call sites to simply pass through the "desired finalizers" as a new parameter (instead of assigning them), which lets us use the unmodified resource and avoid the redundant lister cache fetch.
This commit is contained in:
Matt Moore 2022-09-20 15:43:09 -07:00 committed by GitHub
parent 5f66ecf267
commit df29e2a20a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 84 additions and 342 deletions

View File

@ -335,23 +335,14 @@ func (r *reconcilerImpl) updateStatus(ctx context.Context, existing *v1.CustomRe
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.CustomResourceDefinition) (*v1.CustomResourceDefinition, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.CustomResourceDefinition, desiredFinalizers sets.String) (*v1.CustomResourceDefinition, error) {
getter := r.Lister
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -408,10 +399,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.CustomResourceDefinition, reconcileEvent reconciler.Event) (*v1.CustomResourceDefinition, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.CustomResourceDefinition, reconcileEvent reconciler.Event) (*v1.CustomResourceDefinition, error) {
@ -435,8 +424,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Custom
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -335,23 +335,14 @@ func (r *reconcilerImpl) updateStatus(ctx context.Context, existing *v1beta1.Cus
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta1.CustomResourceDefinition) (*v1beta1.CustomResourceDefinition, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta1.CustomResourceDefinition, desiredFinalizers sets.String) (*v1beta1.CustomResourceDefinition, error) {
getter := r.Lister
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -408,10 +399,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.CustomResourceDefinition, reconcileEvent reconciler.Event) (*v1beta1.CustomResourceDefinition, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.CustomResourceDefinition, reconcileEvent reconciler.Event) (*v1beta1.CustomResourceDefinition, error) {
@ -435,8 +424,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.C
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -271,23 +271,14 @@ func (r *reconcilerImpl) Reconcile(ctx context.Context, key string) error {
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.MutatingWebhookConfiguration) (*v1.MutatingWebhookConfiguration, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.MutatingWebhookConfiguration, desiredFinalizers sets.String) (*v1.MutatingWebhookConfiguration, error) {
getter := r.Lister
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -344,10 +335,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.MutatingWebhookConfiguration, reconcileEvent reconciler.Event) (*v1.MutatingWebhookConfiguration, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.MutatingWebhookConfiguration, reconcileEvent reconciler.Event) (*v1.MutatingWebhookConfiguration, error) {
@ -371,8 +360,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Mutati
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -271,23 +271,14 @@ func (r *reconcilerImpl) Reconcile(ctx context.Context, key string) error {
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.ValidatingWebhookConfiguration) (*v1.ValidatingWebhookConfiguration, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.ValidatingWebhookConfiguration, desiredFinalizers sets.String) (*v1.ValidatingWebhookConfiguration, error) {
getter := r.Lister
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -344,10 +335,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.ValidatingWebhookConfiguration, reconcileEvent reconciler.Event) (*v1.ValidatingWebhookConfiguration, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.ValidatingWebhookConfiguration, reconcileEvent reconciler.Event) (*v1.ValidatingWebhookConfiguration, error) {
@ -371,8 +360,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Valida
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -271,23 +271,14 @@ func (r *reconcilerImpl) Reconcile(ctx context.Context, key string) error {
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta1.MutatingWebhookConfiguration) (*v1beta1.MutatingWebhookConfiguration, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta1.MutatingWebhookConfiguration, desiredFinalizers sets.String) (*v1beta1.MutatingWebhookConfiguration, error) {
getter := r.Lister
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -344,10 +335,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.MutatingWebhookConfiguration, reconcileEvent reconciler.Event) (*v1beta1.MutatingWebhookConfiguration, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.MutatingWebhookConfiguration, reconcileEvent reconciler.Event) (*v1beta1.MutatingWebhookConfiguration, error) {
@ -371,8 +360,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.M
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -271,23 +271,14 @@ func (r *reconcilerImpl) Reconcile(ctx context.Context, key string) error {
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta1.ValidatingWebhookConfiguration) (*v1beta1.ValidatingWebhookConfiguration, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta1.ValidatingWebhookConfiguration, desiredFinalizers sets.String) (*v1beta1.ValidatingWebhookConfiguration, error) {
getter := r.Lister
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -344,10 +335,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.ValidatingWebhookConfiguration, reconcileEvent reconciler.Event) (*v1beta1.ValidatingWebhookConfiguration, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.ValidatingWebhookConfiguration, reconcileEvent reconciler.Event) (*v1beta1.ValidatingWebhookConfiguration, error) {
@ -371,8 +360,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.V
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -335,23 +335,14 @@ func (r *reconcilerImpl) updateStatus(ctx context.Context, existing *v1.Deployme
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.Deployment) (*v1.Deployment, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.Deployment, desiredFinalizers sets.String) (*v1.Deployment, error) {
getter := r.Lister.Deployments(resource.Namespace)
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -408,10 +399,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Deployment, reconcileEvent reconciler.Event) (*v1.Deployment, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Deployment, reconcileEvent reconciler.Event) (*v1.Deployment, error) {
@ -435,8 +424,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Deploy
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -335,23 +335,14 @@ func (r *reconcilerImpl) updateStatus(ctx context.Context, existing *v1beta1.Dep
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta1.Deployment) (*v1beta1.Deployment, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta1.Deployment, desiredFinalizers sets.String) (*v1beta1.Deployment, error) {
getter := r.Lister.Deployments(resource.Namespace)
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -408,10 +399,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.Deployment, reconcileEvent reconciler.Event) (*v1beta1.Deployment, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.Deployment, reconcileEvent reconciler.Event) (*v1beta1.Deployment, error) {
@ -435,8 +424,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.D
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -335,23 +335,14 @@ func (r *reconcilerImpl) updateStatus(ctx context.Context, existing *v1beta2.Dep
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta2.Deployment) (*v1beta2.Deployment, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta2.Deployment, desiredFinalizers sets.String) (*v1beta2.Deployment, error) {
getter := r.Lister.Deployments(resource.Namespace)
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -408,10 +399,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta2.Deployment, reconcileEvent reconciler.Event) (*v1beta2.Deployment, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta2.Deployment, reconcileEvent reconciler.Event) (*v1beta2.Deployment, error) {
@ -435,8 +424,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta2.D
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -335,23 +335,14 @@ func (r *reconcilerImpl) updateStatus(ctx context.Context, existing *v1.CronJob,
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.CronJob) (*v1.CronJob, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.CronJob, desiredFinalizers sets.String) (*v1.CronJob, error) {
getter := r.Lister.CronJobs(resource.Namespace)
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -408,10 +399,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.CronJob, reconcileEvent reconciler.Event) (*v1.CronJob, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.CronJob, reconcileEvent reconciler.Event) (*v1.CronJob, error) {
@ -435,8 +424,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.CronJo
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -335,23 +335,14 @@ func (r *reconcilerImpl) updateStatus(ctx context.Context, existing *v1beta1.Cro
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta1.CronJob) (*v1beta1.CronJob, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta1.CronJob, desiredFinalizers sets.String) (*v1beta1.CronJob, error) {
getter := r.Lister.CronJobs(resource.Namespace)
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -408,10 +399,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.CronJob, reconcileEvent reconciler.Event) (*v1beta1.CronJob, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.CronJob, reconcileEvent reconciler.Event) (*v1beta1.CronJob, error) {
@ -435,8 +424,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.C
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -270,23 +270,14 @@ func (r *reconcilerImpl) Reconcile(ctx context.Context, key string) error {
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.ConfigMap) (*v1.ConfigMap, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.ConfigMap, desiredFinalizers sets.String) (*v1.ConfigMap, error) {
getter := r.Lister.ConfigMaps(resource.Namespace)
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -343,10 +334,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.ConfigMap, reconcileEvent reconciler.Event) (*v1.ConfigMap, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.ConfigMap, reconcileEvent reconciler.Event) (*v1.ConfigMap, error) {
@ -370,8 +359,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Config
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -334,23 +334,14 @@ func (r *reconcilerImpl) updateStatus(ctx context.Context, existing *v1.Namespac
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.Namespace) (*v1.Namespace, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.Namespace, desiredFinalizers sets.String) (*v1.Namespace, error) {
getter := r.Lister
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -407,10 +398,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Namespace, reconcileEvent reconciler.Event) (*v1.Namespace, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Namespace, reconcileEvent reconciler.Event) (*v1.Namespace, error) {
@ -434,8 +423,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Namesp
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -334,23 +334,14 @@ func (r *reconcilerImpl) updateStatus(ctx context.Context, existing *v1.Node, de
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.Node) (*v1.Node, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.Node, desiredFinalizers sets.String) (*v1.Node, error) {
getter := r.Lister
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -407,10 +398,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Node, reconcileEvent reconciler.Event) (*v1.Node, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Node, reconcileEvent reconciler.Event) (*v1.Node, error) {
@ -434,8 +423,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Node,
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -334,23 +334,14 @@ func (r *reconcilerImpl) updateStatus(ctx context.Context, existing *v1.Pod, des
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.Pod) (*v1.Pod, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.Pod, desiredFinalizers sets.String) (*v1.Pod, error) {
getter := r.Lister.Pods(resource.Namespace)
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -407,10 +398,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Pod, reconcileEvent reconciler.Event) (*v1.Pod, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Pod, reconcileEvent reconciler.Event) (*v1.Pod, error) {
@ -434,8 +423,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Pod, r
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -270,23 +270,14 @@ func (r *reconcilerImpl) Reconcile(ctx context.Context, key string) error {
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.Secret) (*v1.Secret, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.Secret, desiredFinalizers sets.String) (*v1.Secret, error) {
getter := r.Lister.Secrets(resource.Namespace)
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -343,10 +334,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Secret, reconcileEvent reconciler.Event) (*v1.Secret, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Secret, reconcileEvent reconciler.Event) (*v1.Secret, error) {
@ -370,8 +359,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Secret
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -335,23 +335,14 @@ func (r *reconcilerImpl) updateStatus(ctx context.Context, existing *v1beta1.Dep
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta1.Deployment) (*v1beta1.Deployment, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta1.Deployment, desiredFinalizers sets.String) (*v1beta1.Deployment, error) {
getter := r.Lister.Deployments(resource.Namespace)
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -408,10 +399,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.Deployment, reconcileEvent reconciler.Event) (*v1beta1.Deployment, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.Deployment, reconcileEvent reconciler.Event) (*v1beta1.Deployment, error) {
@ -435,8 +424,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.D
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -335,23 +335,14 @@ func (r *reconcilerImpl) updateStatus(ctx context.Context, existing *v1beta1.Net
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta1.NetworkPolicy) (*v1beta1.NetworkPolicy, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1beta1.NetworkPolicy, desiredFinalizers sets.String) (*v1beta1.NetworkPolicy, error) {
getter := r.Lister.NetworkPolicies(resource.Namespace)
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -408,10 +399,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.NetworkPolicy, reconcileEvent reconciler.Event) (*v1beta1.NetworkPolicy, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.NetworkPolicy, reconcileEvent reconciler.Event) (*v1beta1.NetworkPolicy, error) {
@ -435,8 +424,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1beta1.N
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -335,23 +335,14 @@ func (r *reconcilerImpl) updateStatus(ctx context.Context, existing *v1.NetworkP
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.NetworkPolicy) (*v1.NetworkPolicy, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx context.Context, resource *v1.NetworkPolicy, desiredFinalizers sets.String) (*v1.NetworkPolicy, error) {
getter := r.Lister.NetworkPolicies(resource.Namespace)
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := sets.NewString(existing.Finalizers...) existingFinalizers := sets.NewString(existing.Finalizers...)
desiredFinalizers := sets.NewString(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -408,10 +399,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx context.Context, resource *
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.NetworkPolicy, reconcileEvent reconciler.Event) (*v1.NetworkPolicy, error) { func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.NetworkPolicy, reconcileEvent reconciler.Event) (*v1.NetworkPolicy, error) {
@ -435,8 +424,6 @@ func (r *reconcilerImpl) clearFinalizer(ctx context.Context, resource *v1.Networ
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }

View File

@ -154,6 +154,10 @@ func (g *reconcilerReconcilerGenerator) GenerateType(c *generator.Context, t *ty
Package: "k8s.io/apimachinery/pkg/util/sets", Package: "k8s.io/apimachinery/pkg/util/sets",
Name: "NewString", Name: "NewString",
}), }),
"setsString": c.Universe.Type(types.Name{
Package: "k8s.io/apimachinery/pkg/util/sets",
Name: "String",
}),
"controllerOptions": c.Universe.Type(types.Name{ "controllerOptions": c.Universe.Type(types.Name{
Package: "knative.dev/pkg/controller", Package: "knative.dev/pkg/controller",
Name: "Options", Name: "Options",
@ -597,25 +601,14 @@ var reconcilerFinalizerFactory = `
// updateFinalizersFiltered will update the Finalizers of the resource. // updateFinalizersFiltered will update the Finalizers of the resource.
// TODO: this method could be generic and sync all finalizers. For now it only // TODO: this method could be generic and sync all finalizers. For now it only
// updates defaultFinalizerName or its override. // updates defaultFinalizerName or its override.
func (r *reconcilerImpl) updateFinalizersFiltered(ctx {{.contextContext|raw}}, resource *{{.type|raw}}) (*{{.type|raw}}, error) { func (r *reconcilerImpl) updateFinalizersFiltered(ctx {{.contextContext|raw}}, resource *{{.type|raw}}, desiredFinalizers {{.setsString|raw}}) (*{{.type|raw}}, error) {
{{if .nonNamespaced}}
getter := r.Lister
{{else}}
getter := r.Lister.{{.type|apiGroup}}(resource.Namespace)
{{end}}
actual, err := getter.Get(resource.Name)
if err != nil {
return resource, err
}
// Don't modify the informers copy. // Don't modify the informers copy.
existing := actual.DeepCopy() existing := resource.DeepCopy()
var finalizers []string var finalizers []string
// If there's nothing to update, just return. // If there's nothing to update, just return.
existingFinalizers := {{.setsNewString|raw}}(existing.Finalizers...) existingFinalizers := {{.setsNewString|raw}}(existing.Finalizers...)
desiredFinalizers := {{.setsNewString|raw}}(resource.Finalizers...)
if desiredFinalizers.Has(r.finalizerName) { if desiredFinalizers.Has(r.finalizerName) {
if existingFinalizers.Has(r.finalizerName) { if existingFinalizers.Has(r.finalizerName) {
@ -675,10 +668,8 @@ func (r *reconcilerImpl) setFinalizerIfFinalizer(ctx {{.contextContext|raw}}, re
finalizers.Insert(r.finalizerName) finalizers.Insert(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
func (r *reconcilerImpl) clearFinalizer(ctx {{.contextContext|raw}}, resource *{{.type|raw}}, reconcileEvent {{.reconcilerEvent|raw}}) (*{{.type|raw}}, error) { func (r *reconcilerImpl) clearFinalizer(ctx {{.contextContext|raw}}, resource *{{.type|raw}}, reconcileEvent {{.reconcilerEvent|raw}}) (*{{.type|raw}}, error) {
@ -702,10 +693,8 @@ func (r *reconcilerImpl) clearFinalizer(ctx {{.contextContext|raw}}, resource *{
finalizers.Delete(r.finalizerName) finalizers.Delete(r.finalizerName)
} }
resource.Finalizers = finalizers.List()
// Synchronize the finalizers filtered by r.finalizerName. // Synchronize the finalizers filtered by r.finalizerName.
return r.updateFinalizersFiltered(ctx, resource) return r.updateFinalizersFiltered(ctx, resource, finalizers)
} }
` `