From 08bf84c32993dd747b713f35bb89418c9d730895 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 2fab6447263..d420a2e76c2 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" "github.com/Azure/ARO-RP/pkg/operator" arov1alpha1 "github.com/Azure/ARO-RP/pkg/operator/apis/aro.openshift.io/v1alpha1" @@ -103,7 +104,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 5ef1d28a792..3264cbc6dc9 100644 --- a/pkg/operator/controllers/banner/banner_controller.go +++ b/pkg/operator/controllers/banner/banner_controller.go @@ -65,7 +65,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 10bbe4387e7..24b700914cb 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 be1f7923a6e..4b28c974578 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 17e79262970..5fc5e99a4be 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" "github.com/Azure/ARO-RP/pkg/operator" @@ -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 e30c1a75989..3356e3d9cdb 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 bd2435fda24..809bd075905 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 47c709cc541..1fd4b201de3 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" "github.com/Azure/ARO-RP/pkg/operator" @@ -82,7 +83,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 9c8e1bcc661..54fe47468d5 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" @@ -112,7 +113,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 731c51ffef9..0757939758b 100644 --- a/pkg/operator/controllers/guardrails/guardrails_controller.go +++ b/pkg/operator/controllers/guardrails/guardrails_controller.go @@ -169,7 +169,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 e887a527310..6c81c333982 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" "github.com/Azure/ARO-RP/pkg/operator" @@ -81,7 +82,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 d72cd2f1a40..74c1690a9cb 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" @@ -166,7 +167,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 03fc5e7e4d1..db993c4f963 100644 --- a/pkg/operator/controllers/monitoring/monitoring_controller.go +++ b/pkg/operator/controllers/monitoring/monitoring_controller.go @@ -211,7 +211,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 f1f035a81a4..c51f4304124 100644 --- a/pkg/operator/controllers/muo/muo_controller.go +++ b/pkg/operator/controllers/muo/muo_controller.go @@ -166,7 +166,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 7b108ee2f11..514b1ce946e 100644 --- a/pkg/operator/controllers/pullsecret/pullsecret_controller.go +++ b/pkg/operator/controllers/pullsecret/pullsecret_controller.go @@ -114,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{}))). // 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 36aa98fa82b..d4d57d006ae 100644 --- a/pkg/operator/controllers/rbac/rbac_controller.go +++ b/pkg/operator/controllers/rbac/rbac_controller.go @@ -19,6 +19,7 @@ import ( "github.com/Azure/ARO-RP/pkg/operator" 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" ) @@ -95,12 +96,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 34c6b73ba2a..38e42c974a3 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" "github.com/Azure/ARO-RP/pkg/operator" @@ -154,7 +155,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 5f34d8279ca..2aa73ca91d1 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" @@ -112,7 +113,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 8415d341af5..5329ba85ffa 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" @@ -150,7 +151,7 @@ func (r *reconcileManager) reconcileSubnets(ctx context.Context) error { // 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/workaround/workaround_controller.go b/pkg/operator/controllers/workaround/workaround_controller.go index 30c1932724e..33e15313d45 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" "github.com/Azure/ARO-RP/pkg/operator" arov1alpha1 "github.com/Azure/ARO-RP/pkg/operator/apis/aro.openshift.io/v1alpha1" @@ -88,7 +91,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) }