From 781e6358631ce91d1c6178c0d621e6bfd2c065c7 Mon Sep 17 00:00:00 2001 From: Johannes Aubart Date: Fri, 4 Sep 2026 15:46:20 +0200 Subject: [PATCH 1/3] make service instance reconciler ignore status changes Signed-off-by: Johannes Aubart --- pkg/serviceprovider/apireconciler.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pkg/serviceprovider/apireconciler.go b/pkg/serviceprovider/apireconciler.go index 75475b8..7b13785 100644 --- a/pkg/serviceprovider/apireconciler.go +++ b/pkg/serviceprovider/apireconciler.go @@ -6,6 +6,7 @@ import ( "github.com/openmcp-project/controller-utils/pkg/clusters" controllerutil2 "github.com/openmcp-project/controller-utils/pkg/controller" + ctrlutils "github.com/openmcp-project/controller-utils/pkg/controller" "github.com/openmcp-project/opencontrolplane-runtime/pkg/serviceprovider/clusteraccess" clustersv1alpha1 "github.com/openmcp-project/openmcp-operator/api/clusters/v1alpha1" apiconst "github.com/openmcp-project/openmcp-operator/api/constants" @@ -14,6 +15,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 +399,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{}, + ctrlutils.DeletionTimestampChangedPredicate{}, + predicate.LabelChangedPredicate{}, + predicate.AnnotationChangedPredicate{}, + ), + predicate.Not( + ctrlutils.HasAnnotationPredicate(apiconst.OperationAnnotation, apiconst.OperationAnnotationValueIgnore), + ), + ), + )). // add provider config watch WatchesRawSource(source.Kind( r.platformCluster.Cluster().GetCache(), From f0be641a6997b2c30a69605d6181aae8932ecdce Mon Sep 17 00:00:00 2001 From: Johannes Aubart Date: Fri, 4 Sep 2026 16:18:33 +0200 Subject: [PATCH 2/3] fix duplicate import Signed-off-by: Johannes Aubart --- pkg/serviceprovider/apireconciler.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkg/serviceprovider/apireconciler.go b/pkg/serviceprovider/apireconciler.go index 7b13785..869319a 100644 --- a/pkg/serviceprovider/apireconciler.go +++ b/pkg/serviceprovider/apireconciler.go @@ -6,7 +6,6 @@ import ( "github.com/openmcp-project/controller-utils/pkg/clusters" controllerutil2 "github.com/openmcp-project/controller-utils/pkg/controller" - ctrlutils "github.com/openmcp-project/controller-utils/pkg/controller" "github.com/openmcp-project/opencontrolplane-runtime/pkg/serviceprovider/clusteraccess" clustersv1alpha1 "github.com/openmcp-project/openmcp-operator/api/clusters/v1alpha1" apiconst "github.com/openmcp-project/openmcp-operator/api/constants" @@ -403,12 +402,12 @@ func (r *APIReconciler[T, C]) SetupWithManager(mgr ctrl.Manager, providerName st predicate.And( predicate.Or( predicate.GenerationChangedPredicate{}, - ctrlutils.DeletionTimestampChangedPredicate{}, + controllerutil2.DeletionTimestampChangedPredicate{}, predicate.LabelChangedPredicate{}, predicate.AnnotationChangedPredicate{}, ), predicate.Not( - ctrlutils.HasAnnotationPredicate(apiconst.OperationAnnotation, apiconst.OperationAnnotationValueIgnore), + controllerutil2.HasAnnotationPredicate(apiconst.OperationAnnotation, apiconst.OperationAnnotationValueIgnore), ), ), )). From f48621456dc6442b513aa5768910542717213522 Mon Sep 17 00:00:00 2001 From: Christopher Junk Date: Fri, 4 Sep 2026 19:30:03 +0200 Subject: [PATCH 3/3] fix(test): drop redundant status update check On-behalf-of: @SAP christopher.junk@sap.com Signed-off-by: Christopher Junk --- pkg/serviceprovider/apireconciler_test.go | 3 --- 1 file changed, 3 deletions(-) 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() {