From 76d95c5c9ea065eee38e1b53b6348d1ae8c720d9 Mon Sep 17 00:00:00 2001 From: Tanmay Satam Date: Fri, 17 Nov 2023 08:57:47 -0500 Subject: [PATCH] Only watch for generation (spec) changes on ARO cluster resource in most controllers --- .../autosizednodes/autosizednodes_controller.go | 3 ++- pkg/operator/controllers/banner/banner_controller.go | 2 +- .../controllers/checkers/clusterdnschecker/controller.go | 2 +- .../checkers/ingresscertificatechecker/controller.go | 2 +- .../controllers/checkers/internetchecker/controller.go | 9 +++++---- .../checkers/serviceprincipalchecker/controller.go | 2 +- .../cloudproviderconfig_controller.go | 2 +- .../clusteroperatoraro/clusteroperatoraro_controller.go | 1 + pkg/operator/controllers/dnsmasq/cluster_controller.go | 3 ++- .../genevalogging/genevalogging_controller.go | 3 ++- .../controllers/guardrails/guardrails_controller.go | 2 +- pkg/operator/controllers/ingress/ingress_controller.go | 3 ++- .../machinehealthcheck/machinehealthcheck_controller.go | 3 ++- .../controllers/monitoring/monitoring_controller.go | 2 +- pkg/operator/controllers/muo/muo_controller.go | 2 +- .../controllers/pullsecret/pullsecret_controller.go | 2 +- pkg/operator/controllers/rbac/rbac_controller.go | 7 ++----- pkg/operator/controllers/routefix/routefix_controller.go | 3 ++- .../storageaccounts/storageaccount_controller.go | 3 ++- pkg/operator/controllers/subnets/subnets_controller.go | 3 ++- .../controllers/workaround/workaround_controller.go | 6 +++++- 21 files changed, 38 insertions(+), 27 deletions(-) diff --git a/pkg/operator/controllers/autosizednodes/autosizednodes_controller.go b/pkg/operator/controllers/autosizednodes/autosizednodes_controller.go index d767708275f..89875fe6116 100644 --- a/pkg/operator/controllers/autosizednodes/autosizednodes_controller.go +++ b/pkg/operator/controllers/autosizednodes/autosizednodes_controller.go @@ -16,6 +16,7 @@ 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/predicate" arov1alpha1 "github.com/Azure/ARO-RP/pkg/operator/apis/aro.openshift.io/v1alpha1" "github.com/Azure/ARO-RP/pkg/operator/predicates" @@ -104,7 +105,7 @@ func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { // Controller adds ControllerManagedBy to KubeletConfit created by this controller. // Any changes will trigger reconcile, but only for that config. return ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). Owns(&mcv1.KubeletConfig{}). Named(ControllerName). Complete(r) diff --git a/pkg/operator/controllers/banner/banner_controller.go b/pkg/operator/controllers/banner/banner_controller.go index 9b5050b64b4..e1d8696acc3 100644 --- a/pkg/operator/controllers/banner/banner_controller.go +++ b/pkg/operator/controllers/banner/banner_controller.go @@ -66,7 +66,7 @@ func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { }) return ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). // watching ConsoleNotifications in case a user edits it Watches(&source.Kind{Type: &consolev1.ConsoleNotification{}}, &handler.EnqueueRequestForObject{}, builder.WithPredicates(aroBannerPredicate)). Named(ControllerName). diff --git a/pkg/operator/controllers/checkers/clusterdnschecker/controller.go b/pkg/operator/controllers/checkers/clusterdnschecker/controller.go index 0a8071bae89..39e9487c319 100644 --- a/pkg/operator/controllers/checkers/clusterdnschecker/controller.go +++ b/pkg/operator/controllers/checkers/clusterdnschecker/controller.go @@ -118,7 +118,7 @@ func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { }) builder := ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). Watches( &source.Kind{Type: &operatorv1.DNS{}}, &handler.EnqueueRequestForObject{}, diff --git a/pkg/operator/controllers/checkers/ingresscertificatechecker/controller.go b/pkg/operator/controllers/checkers/ingresscertificatechecker/controller.go index 69cbd3ca047..9f6e72fba72 100644 --- a/pkg/operator/controllers/checkers/ingresscertificatechecker/controller.go +++ b/pkg/operator/controllers/checkers/ingresscertificatechecker/controller.go @@ -124,7 +124,7 @@ func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { }) builder := ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). Watches( &source.Kind{Type: &operatorv1.IngressController{}}, &handler.EnqueueRequestForObject{}, diff --git a/pkg/operator/controllers/checkers/internetchecker/controller.go b/pkg/operator/controllers/checkers/internetchecker/controller.go index 29c733c966b..f988c630c1f 100644 --- a/pkg/operator/controllers/checkers/internetchecker/controller.go +++ b/pkg/operator/controllers/checkers/internetchecker/controller.go @@ -13,6 +13,7 @@ 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/predicate" "sigs.k8s.io/controller-runtime/pkg/reconcile" arov1alpha1 "github.com/Azure/ARO-RP/pkg/operator/apis/aro.openshift.io/v1alpha1" @@ -122,8 +123,8 @@ func (r *Reconciler) conditionType() string { // SetupWithManager setup our manager func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { - builder := ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)) - - return builder.Named(ControllerName).Complete(r) + return ctrl.NewControllerManagedBy(mgr). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). + Named(ControllerName). + Complete(r) } diff --git a/pkg/operator/controllers/checkers/serviceprincipalchecker/controller.go b/pkg/operator/controllers/checkers/serviceprincipalchecker/controller.go index 8b9f3e0425a..e0f270f4141 100644 --- a/pkg/operator/controllers/checkers/serviceprincipalchecker/controller.go +++ b/pkg/operator/controllers/checkers/serviceprincipalchecker/controller.go @@ -120,7 +120,7 @@ func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { }) builder := ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). Watches( &source.Kind{Type: &corev1.Secret{}}, &handler.EnqueueRequestForObject{}, diff --git a/pkg/operator/controllers/cloudproviderconfig/cloudproviderconfig_controller.go b/pkg/operator/controllers/cloudproviderconfig/cloudproviderconfig_controller.go index ace15d00f33..6bc5a339e1c 100644 --- a/pkg/operator/controllers/cloudproviderconfig/cloudproviderconfig_controller.go +++ b/pkg/operator/controllers/cloudproviderconfig/cloudproviderconfig_controller.go @@ -170,7 +170,7 @@ func (r *CloudProviderConfigReconciler) SetupWithManager(mgr ctrl.Manager) error }) return ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). Watches( &source.Kind{Type: &corev1.ConfigMap{}}, &handler.EnqueueRequestForObject{}, diff --git a/pkg/operator/controllers/clusteroperatoraro/clusteroperatoraro_controller.go b/pkg/operator/controllers/clusteroperatoraro/clusteroperatoraro_controller.go index 7a8ce8ec69f..b699dcb60fa 100644 --- a/pkg/operator/controllers/clusteroperatoraro/clusteroperatoraro_controller.go +++ b/pkg/operator/controllers/clusteroperatoraro/clusteroperatoraro_controller.go @@ -164,6 +164,7 @@ func (r *Reconciler) defaultOperator() *configv1.ClusterOperator { // SetupWithManager setup our manager func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). + // we want to reconcile on status changes on the ARO Cluster resource here, unlike most other reconcilers For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). Owns(&configv1.ClusterOperator{}). Named(ControllerName). diff --git a/pkg/operator/controllers/dnsmasq/cluster_controller.go b/pkg/operator/controllers/dnsmasq/cluster_controller.go index 36bb0e52660..15e44474421 100644 --- a/pkg/operator/controllers/dnsmasq/cluster_controller.go +++ b/pkg/operator/controllers/dnsmasq/cluster_controller.go @@ -12,6 +12,7 @@ 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/predicate" "sigs.k8s.io/controller-runtime/pkg/reconcile" arov1alpha1 "github.com/Azure/ARO-RP/pkg/operator/apis/aro.openshift.io/v1alpha1" @@ -84,7 +85,7 @@ func (r *ClusterReconciler) Reconcile(ctx context.Context, request ctrl.Request) // SetupWithManager setup our mananger func (r *ClusterReconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). Named(ClusterControllerName). Complete(r) } diff --git a/pkg/operator/controllers/genevalogging/genevalogging_controller.go b/pkg/operator/controllers/genevalogging/genevalogging_controller.go index f0ef3e472ac..57e9802a67b 100644 --- a/pkg/operator/controllers/genevalogging/genevalogging_controller.go +++ b/pkg/operator/controllers/genevalogging/genevalogging_controller.go @@ -14,6 +14,7 @@ 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/predicate" "sigs.k8s.io/controller-runtime/pkg/reconcile" "github.com/Azure/ARO-RP/pkg/operator" @@ -113,7 +114,7 @@ func (r *Reconciler) Reconcile(ctx context.Context, request ctrl.Request) (ctrl. // SetupWithManager setup our manager func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). Owns(&appsv1.DaemonSet{}). Owns(&corev1.ConfigMap{}). Owns(&corev1.Namespace{}). diff --git a/pkg/operator/controllers/guardrails/guardrails_controller.go b/pkg/operator/controllers/guardrails/guardrails_controller.go index fafd597e812..10550c3d6ef 100644 --- a/pkg/operator/controllers/guardrails/guardrails_controller.go +++ b/pkg/operator/controllers/guardrails/guardrails_controller.go @@ -149,7 +149,7 @@ func (r *Reconciler) Reconcile(ctx context.Context, request ctrl.Request) (ctrl. // SetupWithManager setup our manager func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { grBuilder := ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)) + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))) resources, err := r.deployer.Template(&config.GuardRailsDeploymentConfig{}, staticFiles) if err != nil { diff --git a/pkg/operator/controllers/ingress/ingress_controller.go b/pkg/operator/controllers/ingress/ingress_controller.go index dd4a371931d..79a9f91f77b 100644 --- a/pkg/operator/controllers/ingress/ingress_controller.go +++ b/pkg/operator/controllers/ingress/ingress_controller.go @@ -13,6 +13,7 @@ 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/predicate" "sigs.k8s.io/controller-runtime/pkg/reconcile" arov1alpha1 "github.com/Azure/ARO-RP/pkg/operator/apis/aro.openshift.io/v1alpha1" @@ -82,7 +83,7 @@ func (r *Reconciler) Reconcile(ctx context.Context, request ctrl.Request) (ctrl. // SetupWithManager setup the mananger for openshift ingress controller resource func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). Named(ControllerName). Complete(r) } diff --git a/pkg/operator/controllers/machinehealthcheck/machinehealthcheck_controller.go b/pkg/operator/controllers/machinehealthcheck/machinehealthcheck_controller.go index 06f3080800b..ed1b5198dde 100644 --- a/pkg/operator/controllers/machinehealthcheck/machinehealthcheck_controller.go +++ b/pkg/operator/controllers/machinehealthcheck/machinehealthcheck_controller.go @@ -19,6 +19,7 @@ import ( "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" "sigs.k8s.io/controller-runtime/pkg/reconcile" "sigs.k8s.io/controller-runtime/pkg/source" @@ -167,7 +168,7 @@ func (r *Reconciler) isClusterUpgrading(ctx context.Context) (bool, error) { // SetupWithManager will manage only our MHC resource with our specific controller name func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). Named(ControllerName). Owns(&machinev1beta1.MachineHealthCheck{}). Owns(&monitoringv1.PrometheusRule{}). diff --git a/pkg/operator/controllers/monitoring/monitoring_controller.go b/pkg/operator/controllers/monitoring/monitoring_controller.go index 22fed671de8..a6b7369be3f 100644 --- a/pkg/operator/controllers/monitoring/monitoring_controller.go +++ b/pkg/operator/controllers/monitoring/monitoring_controller.go @@ -212,7 +212,7 @@ func (r *MonitoringReconciler) SetupWithManager(mgr ctrl.Manager) error { }) return ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). // https://github.com/kubernetes-sigs/controller-runtime/issues/1173 // equivalent to For(&v1.ConfigMap{}, ...)., but can't call For multiple times on one builder Watches( diff --git a/pkg/operator/controllers/muo/muo_controller.go b/pkg/operator/controllers/muo/muo_controller.go index 62e10bea19b..cd1e8184e14 100644 --- a/pkg/operator/controllers/muo/muo_controller.go +++ b/pkg/operator/controllers/muo/muo_controller.go @@ -168,7 +168,7 @@ func (r *Reconciler) Reconcile(ctx context.Context, request ctrl.Request) (ctrl. // SetupWithManager setup our manager func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { muoBuilder := ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). Watches( &source.Kind{Type: &corev1.Secret{}}, &handler.EnqueueRequestForObject{}, diff --git a/pkg/operator/controllers/pullsecret/pullsecret_controller.go b/pkg/operator/controllers/pullsecret/pullsecret_controller.go index b4cde6b9a42..d165c79fcdc 100644 --- a/pkg/operator/controllers/pullsecret/pullsecret_controller.go +++ b/pkg/operator/controllers/pullsecret/pullsecret_controller.go @@ -117,7 +117,7 @@ func (r *Reconciler) Reconcile(ctx context.Context, request ctrl.Request) (ctrl. // SetupWithManager setup our manager func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). // https://github.com/kubernetes-sigs/controller-runtime/issues/1173 // equivalent to For(&v1.Secret{})., but can't call For multiple times on one builder Watches( diff --git a/pkg/operator/controllers/rbac/rbac_controller.go b/pkg/operator/controllers/rbac/rbac_controller.go index d2be5d9d380..8a30ceedca7 100644 --- a/pkg/operator/controllers/rbac/rbac_controller.go +++ b/pkg/operator/controllers/rbac/rbac_controller.go @@ -18,6 +18,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/reconcile" arov1alpha1 "github.com/Azure/ARO-RP/pkg/operator/apis/aro.openshift.io/v1alpha1" + "github.com/Azure/ARO-RP/pkg/operator/predicates" "github.com/Azure/ARO-RP/pkg/util/dynamichelper" ) @@ -96,12 +97,8 @@ func (r *Reconciler) Reconcile(ctx context.Context, request ctrl.Request) (ctrl. // SetupWithManager setup our mananger func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { - aroClusterPredicate := predicate.NewPredicateFuncs(func(o client.Object) bool { - return o.GetName() == arov1alpha1.SingletonClusterName - }) - return ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(aroClusterPredicate)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). Owns(&rbacv1.ClusterRole{}). Owns(&rbacv1.ClusterRoleBinding{}). Named(ControllerName). diff --git a/pkg/operator/controllers/routefix/routefix_controller.go b/pkg/operator/controllers/routefix/routefix_controller.go index dffe37457b9..b3208fb5718 100644 --- a/pkg/operator/controllers/routefix/routefix_controller.go +++ b/pkg/operator/controllers/routefix/routefix_controller.go @@ -18,6 +18,7 @@ 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/predicate" "sigs.k8s.io/controller-runtime/pkg/reconcile" arov1alpha1 "github.com/Azure/ARO-RP/pkg/operator/apis/aro.openshift.io/v1alpha1" @@ -155,7 +156,7 @@ func (r *Reconciler) remove(ctx context.Context, instance *arov1alpha1.Cluster) // SetupWithManager creates the controller func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). Owns(&corev1.Namespace{}). Owns(&appsv1.DaemonSet{}). Owns(&securityv1.SecurityContextConstraints{}). diff --git a/pkg/operator/controllers/storageaccounts/storageaccount_controller.go b/pkg/operator/controllers/storageaccounts/storageaccount_controller.go index 6529e0f8692..c01e691a192 100644 --- a/pkg/operator/controllers/storageaccounts/storageaccount_controller.go +++ b/pkg/operator/controllers/storageaccounts/storageaccount_controller.go @@ -14,6 +14,7 @@ import ( "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" "sigs.k8s.io/controller-runtime/pkg/reconcile" "sigs.k8s.io/controller-runtime/pkg/source" @@ -113,7 +114,7 @@ func (r *Reconciler) Reconcile(ctx context.Context, request ctrl.Request) (ctrl. // SetupWithManager creates the controller func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). Watches(&source.Kind{Type: &machinev1beta1.Machine{}}, &handler.EnqueueRequestForObject{}, builder.WithPredicates(predicates.MachineRoleMaster)). // to reconcile on master machine replacement Watches(&source.Kind{Type: &machinev1beta1.MachineSet{}}, &handler.EnqueueRequestForObject{}, builder.WithPredicates(predicates.MachineRoleWorker)). // to reconcile on worker machines Named(ControllerName). diff --git a/pkg/operator/controllers/subnets/subnets_controller.go b/pkg/operator/controllers/subnets/subnets_controller.go index bd1808a33af..cce52cfdb95 100644 --- a/pkg/operator/controllers/subnets/subnets_controller.go +++ b/pkg/operator/controllers/subnets/subnets_controller.go @@ -16,6 +16,7 @@ import ( "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" "sigs.k8s.io/controller-runtime/pkg/reconcile" "sigs.k8s.io/controller-runtime/pkg/source" @@ -153,7 +154,7 @@ func (r *reconcileManager) reconcileSubnets(ctx context.Context) error { func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). Watches(&source.Kind{Type: &machinev1beta1.Machine{}}, &handler.EnqueueRequestForObject{}, builder.WithPredicates(predicates.MachineRoleMaster)). // to reconcile on master machine replacement Watches(&source.Kind{Type: &machinev1beta1.MachineSet{}}, &handler.EnqueueRequestForObject{}, builder.WithPredicates(predicates.MachineRoleWorker)). // to reconcile on worker machines Named(ControllerName). diff --git a/pkg/operator/controllers/workaround/workaround_controller.go b/pkg/operator/controllers/workaround/workaround_controller.go index d5c1a40ee36..235143d3145 100644 --- a/pkg/operator/controllers/workaround/workaround_controller.go +++ b/pkg/operator/controllers/workaround/workaround_controller.go @@ -13,7 +13,10 @@ 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" "sigs.k8s.io/controller-runtime/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/source" arov1alpha1 "github.com/Azure/ARO-RP/pkg/operator/apis/aro.openshift.io/v1alpha1" "github.com/Azure/ARO-RP/pkg/operator/predicates" @@ -89,7 +92,8 @@ func (r *Reconciler) Reconcile(ctx context.Context, request ctrl.Request) (ctrl. // SetupWithManager setup our manager func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). - For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicates.AROCluster)). + For(&arov1alpha1.Cluster{}, builder.WithPredicates(predicate.And(predicates.AROCluster, predicate.GenerationChangedPredicate{}))). + Watches(&source.Kind{Type: &configv1.ClusterVersion{}}, &handler.EnqueueRequestForObject{}, builder.WithPredicates(predicates.ClusterVersion)). Named(ControllerName). Complete(r) }