From 989bfa2b3458e8da80d67a85d73d116ee7258c32 Mon Sep 17 00:00:00 2001 From: Joseph Callen Date: Mon, 19 May 2025 09:17:57 -0400 Subject: [PATCH 1/3] Debugging sync controller --- pkg/controllers/cloud_config_sync_controller.go | 8 ++++++++ pkg/controllers/watch_predicates.go | 8 ++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/pkg/controllers/cloud_config_sync_controller.go b/pkg/controllers/cloud_config_sync_controller.go index c77f19948..0dd0ec4dd 100644 --- a/pkg/controllers/cloud_config_sync_controller.go +++ b/pkg/controllers/cloud_config_sync_controller.go @@ -184,6 +184,8 @@ func (r *CloudConfigReconciler) Reconcile(ctx context.Context, req ctrl.Request) } func (r *CloudConfigReconciler) isCloudConfigSyncNeeded(platformStatus *configv1.PlatformStatus, infraCloudConfigRef configv1.ConfigMapFileReference) (bool, error) { + klog.V(1).Info("Checking if cloud config sync needed") + if platformStatus == nil { return false, fmt.Errorf("platformStatus is required") } @@ -205,6 +207,7 @@ func (r *CloudConfigReconciler) isCloudConfigSyncNeeded(platformStatus *configv1 } func (r *CloudConfigReconciler) prepareSourceConfigMap(source *corev1.ConfigMap, infra *configv1.Infrastructure) (*corev1.ConfigMap, error) { + klog.V(1).Info("Preparing source config map") // Keys might be different between openshift-config/cloud-config and openshift-config-managed/kube-cloud-config // Always use "cloud.conf" which is default one across openshift cloudConfCm := source.DeepCopy() @@ -225,11 +228,13 @@ func (r *CloudConfigReconciler) prepareSourceConfigMap(source *corev1.ConfigMap, } func (r *CloudConfigReconciler) isCloudConfigEqual(source *corev1.ConfigMap, target *corev1.ConfigMap) bool { + klog.V(1).Info("Checking if cloud config equal") return source.Immutable == target.Immutable && reflect.DeepEqual(source.Data, target.Data) && reflect.DeepEqual(source.BinaryData, target.BinaryData) } func (r *CloudConfigReconciler) syncCloudConfigData(ctx context.Context, source *corev1.ConfigMap, target *corev1.ConfigMap) error { + klog.V(1).Info("Syncing cloud config data") target.SetName(syncedCloudConfigMapName) target.SetNamespace(r.ManagedNamespace) target.Data = source.Data @@ -250,6 +255,8 @@ func (r *CloudConfigReconciler) syncCloudConfigData(ctx context.Context, source // SetupWithManager sets up the controller with the Manager. func (r *CloudConfigReconciler) SetupWithManager(mgr ctrl.Manager) error { + klog.V(1).Info("Setting up controller") + build := ctrl.NewControllerManagedBy(mgr). Named("CloudConfigSyncController"). For( @@ -275,6 +282,7 @@ func (r *CloudConfigReconciler) SetupWithManager(mgr ctrl.Manager) error { } func (r *CloudConfigReconciler) setAvailableCondition(ctx context.Context) error { + klog.V(1).Info("Setting available condition") co, err := r.getOrCreateClusterOperator(ctx) if err != nil { return err diff --git a/pkg/controllers/watch_predicates.go b/pkg/controllers/watch_predicates.go index 766097d20..9ccd8696a 100644 --- a/pkg/controllers/watch_predicates.go +++ b/pkg/controllers/watch_predicates.go @@ -3,14 +3,16 @@ package controllers import ( "context" - configv1 "github.com/openshift/api/config/v1" - operatorv1 "github.com/openshift/api/operator/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/klog/v2" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/event" "sigs.k8s.io/controller-runtime/pkg/predicate" "sigs.k8s.io/controller-runtime/pkg/reconcile" + + configv1 "github.com/openshift/api/config/v1" + operatorv1 "github.com/openshift/api/operator/v1" ) func clusterOperatorPredicates() predicate.Funcs { @@ -106,6 +108,8 @@ func openshiftCloudConfigMapPredicates() predicate.Funcs { isOpenshiftConfigNamespace := configMap.GetNamespace() == OpenshiftConfigNamespace isManagedCloudConfig := configMap.GetName() == managedCloudConfigMapName && configMap.GetNamespace() == OpenshiftManagedConfigNamespace + klog.V(1).Infof("is ocp configmap %t/%t", isOpenshiftConfigNamespace, isManagedCloudConfig) + return isOpenshiftConfigNamespace || isManagedCloudConfig } From aeb17257d549e7a3037956070bc67816bcc505db Mon Sep 17 00:00:00 2001 From: Joseph Callen Date: Mon, 19 May 2025 13:17:22 -0400 Subject: [PATCH 2/3] more logging --- pkg/controllers/watch_predicates.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/controllers/watch_predicates.go b/pkg/controllers/watch_predicates.go index 9ccd8696a..2d700bece 100644 --- a/pkg/controllers/watch_predicates.go +++ b/pkg/controllers/watch_predicates.go @@ -36,12 +36,14 @@ func toClusterOperator(context.Context, client.Object) []reconcile.Request { } func toManagedConfigMap(context.Context, client.Object) []reconcile.Request { + klog.V(1).Info("toManagedConfigMap called") return []reconcile.Request{{ NamespacedName: client.ObjectKey{Name: syncedCloudConfigMapName, Namespace: DefaultManagedNamespace}, }} } func infrastructurePredicates() predicate.Funcs { + klog.V(1).Info("infrastructurePredicates called") isInfrastructureCluster := func(obj runtime.Object) bool { infra, ok := obj.(*configv1.Infrastructure) return ok && infra.GetName() == infrastructureResourceName From 304aeb08f8d502d26a9116b2f0e0c0fe5f748e87 Mon Sep 17 00:00:00 2001 From: Joseph Callen Date: Mon, 19 May 2025 13:39:40 -0400 Subject: [PATCH 3/3] remove watches --- .../cloud_config_sync_controller.go | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/pkg/controllers/cloud_config_sync_controller.go b/pkg/controllers/cloud_config_sync_controller.go index 0dd0ec4dd..7efe9e580 100644 --- a/pkg/controllers/cloud_config_sync_controller.go +++ b/pkg/controllers/cloud_config_sync_controller.go @@ -12,7 +12,6 @@ import ( 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/handler" "sigs.k8s.io/controller-runtime/pkg/predicate" configv1 "github.com/openshift/api/config/v1" @@ -267,16 +266,23 @@ func (r *CloudConfigReconciler) SetupWithManager(mgr ctrl.Manager) error { openshiftCloudConfigMapPredicates(), ), ), - ). - Watches( - &configv1.Infrastructure{}, - handler.EnqueueRequestsFromMapFunc(toManagedConfigMap), - builder.WithPredicates(infrastructurePredicates()), - ). - Watches( - &configv1.Network{}, - handler.EnqueueRequestsFromMapFunc(toManagedConfigMap), ) + /* + . + Watches( + &configv1.Infrastructure{}, + handler.EnqueueRequestsFromMapFunc(toManagedConfigMap), + builder.WithPredicates(infrastructurePredicates()), + ). + Watches( + &configv1.Network{}, + handler.EnqueueRequestsFromMapFunc(toManagedConfigMap), + ).Watches( + &corev1.ConfigMap{}, handler.EnqueueRequestsFromMapFunc(toManagedConfigMap), + + ) + + */ return build.Complete(r) }