diff --git a/pkg/serviceprovider/apireconciler.go b/pkg/serviceprovider/apireconciler.go index 75475b8..869319a 100644 --- a/pkg/serviceprovider/apireconciler.go +++ b/pkg/serviceprovider/apireconciler.go @@ -14,6 +14,7 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/builder" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/apiutil" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" @@ -397,7 +398,19 @@ func (r *APIReconciler[T, C]) SetupWithManager(mgr ctrl.Manager, providerName st } r.providerName = providerName controller := ctrl.NewControllerManagedBy(mgr). - For(r.emptyObj()). + For(r.emptyObj(), builder.WithPredicates( + predicate.And( + predicate.Or( + predicate.GenerationChangedPredicate{}, + controllerutil2.DeletionTimestampChangedPredicate{}, + predicate.LabelChangedPredicate{}, + predicate.AnnotationChangedPredicate{}, + ), + predicate.Not( + controllerutil2.HasAnnotationPredicate(apiconst.OperationAnnotation, apiconst.OperationAnnotationValueIgnore), + ), + ), + )). // add provider config watch WatchesRawSource(source.Kind( r.platformCluster.Cluster().GetCache(), diff --git a/pkg/serviceprovider/apireconciler_test.go b/pkg/serviceprovider/apireconciler_test.go index db57f58..36f9f5b 100644 --- a/pkg/serviceprovider/apireconciler_test.go +++ b/pkg/serviceprovider/apireconciler_test.go @@ -1295,9 +1295,6 @@ var _ = Describe("API Reconciler", func() { Expect(onboardingClient.Get(ctx, fooKey, foo)).To(Succeed()) return foo.Status }).Should(HaveField("Phase", Equal("Ready"))) - // consume the finalizer/status update reconcile request to have a quiet update channel for the following test. - // depending on reconciliation timing, the provider config update could otherwise be picked up by during the reconcile request caused by the primary watch. - Eventually(reconciler.createOrUpdateConfig).Should(Receive()) }) It("The Foo resource is reconciled when the provider config changes", func() {