From 21e89a01f57f9d971b080378ebc485974ef49610 Mon Sep 17 00:00:00 2001 From: Jan Fajerski Date: Wed, 6 Nov 2024 16:59:11 +0100 Subject: [PATCH] fix: give operator controller a name (#618) * fix: use For() to watch Service Signed-off-by: Jan Fajerski * fix: register gvk for core Service kind and ServiceMonitor Signed-off-by: Jan Fajerski --------- Signed-off-by: Jan Fajerski --- pkg/controllers/operator/controller.go | 46 +++++++++++--------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/pkg/controllers/operator/controller.go b/pkg/controllers/operator/controller.go index 2f0deb87..9c8f80c7 100644 --- a/pkg/controllers/operator/controller.go +++ b/pkg/controllers/operator/controller.go @@ -25,14 +25,13 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/runtime/schema" 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/controller" - "sigs.k8s.io/controller-runtime/pkg/handler" "sigs.k8s.io/controller-runtime/pkg/predicate" - "sigs.k8s.io/controller-runtime/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/scheme" ) type resourceManager struct { @@ -50,10 +49,21 @@ type resourceManager struct { // RegisterWithManager registers the controller with Manager func RegisterWithManager(mgr ctrl.Manager, namespace string) error { + // GroupVersion is group version used to register these objects + GroupVersion := schema.GroupVersion{Group: "", Version: "v1"} + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder := &scheme.Builder{GroupVersion: GroupVersion} + SchemeBuilder.Register(&corev1.Service{}, &corev1.ServiceList{}) + // GroupVersion is group version used to register these objects + GroupVersion = schema.GroupVersion{Group: "monitoring.coreos.com", Version: "v1"} + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} + SchemeBuilder.Register(&monv1.ServiceMonitor{}, &monv1.ServiceMonitorList{}) + rm := &resourceManager{ k8sClient: mgr.GetClient(), scheme: mgr.GetScheme(), - logger: ctrl.Log.WithName("observability-operator"), + logger: ctrl.Log.WithName(name), namespace: namespace, } // We only want to trigger a reconciliation when the generation @@ -63,12 +73,14 @@ func RegisterWithManager(mgr ctrl.Manager, namespace string) error { generationChanged := builder.WithPredicates(predicate.GenerationChangedPredicate{}) ctrl, err := ctrl.NewControllerManagedBy(mgr). - Owns(&monv1.ServiceMonitor{}, generationChanged). - Watches( + For( &corev1.Service{}, - handler.EnqueueRequestsFromMapFunc(rm.operatorService), - builder.WithPredicates(predicate.ResourceVersionChangedPredicate{}), + builder.WithPredicates(predicate.NewPredicateFuncs(func(object client.Object) bool { + return object.GetName() == name + })), ). + Named(name). + Owns(&monv1.ServiceMonitor{}, generationChanged). Build(rm) if err != nil { @@ -107,21 +119,3 @@ func (rm resourceManager) Reconcile(ctx context.Context, req ctrl.Request) (ctrl return ctrl.Result{}, nil } -func (rm resourceManager) operatorService(ctx context.Context, _ client.Object) []reconcile.Request { - var requests []reconcile.Request - op := &corev1.Service{} - err := rm.k8sClient.Get(ctx, types.NamespacedName{Name: "observability-operator", Namespace: rm.namespace}, op) - if errors.IsNotFound(err) { - return requests - } - if err != nil { - return requests - } - requests = append(requests, reconcile.Request{ - NamespacedName: types.NamespacedName{ - Name: op.GetName(), - Namespace: op.GetNamespace(), - }, - }) - return requests -}