diff --git a/controllers/operandbindinfo/operandbindinfo_controller.go b/controllers/operandbindinfo/operandbindinfo_controller.go index 007a38aa..fc796a9c 100644 --- a/controllers/operandbindinfo/operandbindinfo_controller.go +++ b/controllers/operandbindinfo/operandbindinfo_controller.go @@ -36,6 +36,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/controller" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/event" "sigs.k8s.io/controller-runtime/pkg/handler" @@ -740,7 +741,12 @@ func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { }, } + options := controller.Options{ + MaxConcurrentReconciles: r.MaxConcurrentReconciles, // Set the desired value for max concurrent reconciles. + } + return ctrl.NewControllerManagedBy(mgr). + WithOptions(options). For(&operatorv1alpha1.OperandBindInfo{}). Watches( &source.Kind{Type: &corev1.ConfigMap{}}, diff --git a/controllers/operandconfig/operandconfig_controller.go b/controllers/operandconfig/operandconfig_controller.go index 93f0dd42..fd7825f2 100644 --- a/controllers/operandconfig/operandconfig_controller.go +++ b/controllers/operandconfig/operandconfig_controller.go @@ -36,6 +36,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/controller" "sigs.k8s.io/controller-runtime/pkg/event" "sigs.k8s.io/controller-runtime/pkg/handler" "sigs.k8s.io/controller-runtime/pkg/predicate" @@ -398,7 +399,11 @@ func (r *Reconciler) getRequestToConfigMapper(ctx context.Context) handler.MapFu // SetupWithManager adds OperandConfig controller to the manager. func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { ctx := context.Background() + options := controller.Options{ + MaxConcurrentReconciles: r.MaxConcurrentReconciles, // Set the desired value for max concurrent reconciles. + } return ctrl.NewControllerManagedBy(mgr). + WithOptions(options). For(&operatorv1alpha1.OperandConfig{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})). Watches(&source.Kind{Type: &operatorv1alpha1.OperandRequest{}}, handler.EnqueueRequestsFromMapFunc(r.getRequestToConfigMapper(ctx)), builder.WithPredicates(predicate.Funcs{ CreateFunc: func(e event.CreateEvent) bool { diff --git a/controllers/operandregistry/operandregistry_controller.go b/controllers/operandregistry/operandregistry_controller.go index 44137df4..b1bc9197 100644 --- a/controllers/operandregistry/operandregistry_controller.go +++ b/controllers/operandregistry/operandregistry_controller.go @@ -27,6 +27,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/controller" "sigs.k8s.io/controller-runtime/pkg/event" "sigs.k8s.io/controller-runtime/pkg/handler" "sigs.k8s.io/controller-runtime/pkg/predicate" @@ -114,7 +115,11 @@ func (r *Reconciler) updateStatus(ctx context.Context, instance *operatorv1alpha // SetupWithManager adds OperandRegistry controller to the manager. func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { + options := controller.Options{ + MaxConcurrentReconciles: r.MaxConcurrentReconciles, // Set the desired value for max concurrent reconciles. + } return ctrl.NewControllerManagedBy(mgr). + WithOptions(options). For(&operatorv1alpha1.OperandRegistry{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})). Watches(&source.Kind{Type: &operatorv1alpha1.OperandRequest{}}, handler.EnqueueRequestsFromMapFunc(func(a client.Object) []reconcile.Request { or := a.(*operatorv1alpha1.OperandRequest) diff --git a/controllers/operandrequest/operandrequest_controller.go b/controllers/operandrequest/operandrequest_controller.go index 2c52b9f3..36741ccf 100644 --- a/controllers/operandrequest/operandrequest_controller.go +++ b/controllers/operandrequest/operandrequest_controller.go @@ -38,6 +38,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/controller" "sigs.k8s.io/controller-runtime/pkg/event" "sigs.k8s.io/controller-runtime/pkg/handler" "sigs.k8s.io/controller-runtime/pkg/predicate" @@ -300,7 +301,11 @@ func (r *Reconciler) getConfigToRequestMapper() handler.MapFunc { // SetupWithManager adds OperandRequest controller to the manager. func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { + options := controller.Options{ + MaxConcurrentReconciles: r.MaxConcurrentReconciles, // Set the desired value for max concurrent reconciles. + } return ctrl.NewControllerManagedBy(mgr). + WithOptions(options). For(&operatorv1alpha1.OperandRequest{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})). Watches(&source.Kind{Type: &olmv1alpha1.Subscription{}}, handler.EnqueueRequestsFromMapFunc(r.getSubToRequestMapper()), builder.WithPredicates(predicate.Funcs{ UpdateFunc: func(e event.UpdateEvent) bool { diff --git a/controllers/operator/manager.go b/controllers/operator/manager.go index 4530ee4f..abe302f3 100644 --- a/controllers/operator/manager.go +++ b/controllers/operator/manager.go @@ -45,18 +45,20 @@ type ODLMOperator struct { client.Client client.Reader *rest.Config - Recorder record.EventRecorder - Scheme *runtime.Scheme + Recorder record.EventRecorder + Scheme *runtime.Scheme + MaxConcurrentReconciles int } // NewODLMOperator is the method to initialize an Operator struct func NewODLMOperator(mgr manager.Manager, name string) *ODLMOperator { return &ODLMOperator{ - Client: mgr.GetClient(), - Reader: mgr.GetAPIReader(), - Config: mgr.GetConfig(), - Recorder: mgr.GetEventRecorderFor(name), - Scheme: mgr.GetScheme(), + Client: mgr.GetClient(), + Reader: mgr.GetAPIReader(), + Config: mgr.GetConfig(), + Recorder: mgr.GetEventRecorderFor(name), + Scheme: mgr.GetScheme(), + MaxConcurrentReconciles: 5, } }