Skip to content

Commit d597e80

Browse files
authored
Merge pull request #341 from vignesh-goutham/increase-workers
Affinity group and failure domain controllers with multiple workers
2 parents a77afd3 + 9f30e7f commit d597e80

6 files changed

+35
-14
lines changed

controllers/cloudstackaffinitygroup_controller.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121

2222
ctrl "sigs.k8s.io/controller-runtime"
23+
"sigs.k8s.io/controller-runtime/pkg/controller"
2324
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
2425

2526
infrav1 "sigs.k8s.io/cluster-api-provider-cloudstack/api/v1beta3"
@@ -94,8 +95,9 @@ func (r *CloudStackAGReconciliationRunner) ReconcileDelete() (ctrl.Result, error
9495
}
9596

9697
// SetupWithManager sets up the controller with the Manager.
97-
func (reconciler *CloudStackAffinityGroupReconciler) SetupWithManager(mgr ctrl.Manager) error {
98+
func (reconciler *CloudStackAffinityGroupReconciler) SetupWithManager(mgr ctrl.Manager, opts controller.Options) error {
9899
return ctrl.NewControllerManagedBy(mgr).
100+
WithOptions(opts).
99101
For(&infrav1.CloudStackAffinityGroup{}).
100102
Complete(reconciler)
101103
}

controllers/cloudstackaffinitygroup_controller_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,14 @@ import (
2525
"sigs.k8s.io/cluster-api-provider-cloudstack/pkg/cloud"
2626
dummies "sigs.k8s.io/cluster-api-provider-cloudstack/test/dummies/v1beta3"
2727
"sigs.k8s.io/controller-runtime/pkg/client"
28+
"sigs.k8s.io/controller-runtime/pkg/controller"
2829
)
2930

3031
var _ = Describe("CloudStackAffinityGroupReconciler", func() {
3132
BeforeEach(func() {
3233
SetupTestEnvironment() // Must happen before setting up managers/reconcilers.
3334
dummies.SetDummyVars()
34-
Ω(AffinityGReconciler.SetupWithManager(k8sManager)).Should(Succeed()) // Register CloudStack AffinityGReconciler.
35+
Ω(AffinityGReconciler.SetupWithManager(k8sManager, controller.Options{})).Should(Succeed()) // Register CloudStack AffinityGReconciler.
3536
})
3637

3738
It("Should patch back the affinity group as ready after calling GetOrCreateAffinityGroup.", func() {

controllers/cloudstackcluster_controller_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ import (
3030
var _ = Describe("CloudStackClusterReconciler", func() {
3131
Context("With k8s like test environment.", func() {
3232
BeforeEach(func() {
33-
SetupTestEnvironment() // Must happen before setting up managers/reconcilers.
34-
Ω(ClusterReconciler.SetupWithManager(ctx, k8sManager, controller.Options{})).Should(Succeed()) // Register CloudStack ClusterReconciler.
35-
Ω(FailureDomainReconciler.SetupWithManager(k8sManager)).Should(Succeed()) // Register CloudStack FailureDomainReconciler.
33+
SetupTestEnvironment() // Must happen before setting up managers/reconcilers.
34+
Ω(ClusterReconciler.SetupWithManager(ctx, k8sManager, controller.Options{})).Should(Succeed()) // Register CloudStack ClusterReconciler.
35+
Ω(FailureDomainReconciler.SetupWithManager(k8sManager, controller.Options{})).Should(Succeed()) // Register CloudStack FailureDomainReconciler.
3636
})
3737

3838
It("Should create a CloudStackFailureDomain.", func() {

controllers/cloudstackfailuredomain_controller.go

+6-3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
2525
ctrl "sigs.k8s.io/controller-runtime"
2626
"sigs.k8s.io/controller-runtime/pkg/client"
27+
"sigs.k8s.io/controller-runtime/pkg/controller"
2728
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
2829
"sort"
2930

@@ -263,7 +264,9 @@ func (r *CloudStackFailureDomainReconciliationRunner) RemoveFinalizer() (ctrl.Re
263264
}
264265

265266
// SetupWithManager sets up the controller with the Manager.
266-
func (reconciler *CloudStackFailureDomainReconciler) SetupWithManager(mgr ctrl.Manager) error {
267-
_, err := ctrl.NewControllerManagedBy(mgr).For(&infrav1.CloudStackFailureDomain{}).Build(reconciler)
268-
return err
267+
func (reconciler *CloudStackFailureDomainReconciler) SetupWithManager(mgr ctrl.Manager, opts controller.Options) error {
268+
return ctrl.NewControllerManagedBy(mgr).
269+
WithOptions(opts).
270+
For(&infrav1.CloudStackFailureDomain{}).
271+
Complete(reconciler)
269272
}

controllers/cloudstackfailuredomain_controller_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,15 @@ import (
2828
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
2929
"sigs.k8s.io/cluster-api/util/patch"
3030
"sigs.k8s.io/controller-runtime/pkg/client"
31+
"sigs.k8s.io/controller-runtime/pkg/controller"
3132
)
3233

3334
var _ = Describe("CloudStackFailureDomainReconciler", func() {
3435
Context("With k8s like test environment.", func() {
3536
BeforeEach(func() {
3637
dummies.SetDummyVars()
37-
SetupTestEnvironment() // Must happen before setting up managers/reconcilers.
38-
Ω(FailureDomainReconciler.SetupWithManager(k8sManager)).Should(Succeed()) // Register CloudStack FailureDomainReconciler.
38+
SetupTestEnvironment() // Must happen before setting up managers/reconcilers.
39+
Ω(FailureDomainReconciler.SetupWithManager(k8sManager, controller.Options{})).Should(Succeed()) // Register CloudStack FailureDomainReconciler.
3940
// Modify failure domain name the same way the cluster controller would.
4041
dummies.CSFailureDomain1.Name = dummies.CSFailureDomain1.Name + "-" + dummies.CSCluster.Name
4142

main.go

+18-4
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,10 @@ type managerOpts struct {
8484
WatchFilterValue string
8585
CertDir string
8686

87-
CloudStackClusterConcurrency int
88-
CloudStackMachineConcurrency int
87+
CloudStackClusterConcurrency int
88+
CloudStackMachineConcurrency int
89+
CloudStackAffinityGroupConcurrency int
90+
CloudStackFailureDomainConcurrency int
8991
}
9092

9193
func setFlags() *managerOpts {
@@ -142,6 +144,18 @@ func setFlags() *managerOpts {
142144
10,
143145
"Maximum concurrent reconciles for CloudStackMachine resources",
144146
)
147+
flag.IntVar(
148+
&opts.CloudStackAffinityGroupConcurrency,
149+
"cloudstackaffinitygroup-concurrency",
150+
5,
151+
"Maximum concurrent reconciles for CloudStackAffinityGroup resources",
152+
)
153+
flag.IntVar(
154+
&opts.CloudStackFailureDomainConcurrency,
155+
"cloudstackfailuredomain-concurrency",
156+
5,
157+
"Maximum concurrent reconciles for CloudStackFailureDomain resources",
158+
)
145159

146160
return opts
147161
}
@@ -245,11 +259,11 @@ func setupReconcilers(ctx context.Context, base utils.ReconcilerBase, opts manag
245259
setupLog.Error(err, "unable to create controller", "controller", "CloudStackIsoNetReconciler")
246260
os.Exit(1)
247261
}
248-
if err := (&controllers.CloudStackAffinityGroupReconciler{ReconcilerBase: base}).SetupWithManager(mgr); err != nil {
262+
if err := (&controllers.CloudStackAffinityGroupReconciler{ReconcilerBase: base}).SetupWithManager(mgr, controller.Options{MaxConcurrentReconciles: opts.CloudStackAffinityGroupConcurrency}); err != nil {
249263
setupLog.Error(err, "unable to create controller", "controller", "CloudStackAffinityGroup")
250264
os.Exit(1)
251265
}
252-
if err := (&controllers.CloudStackFailureDomainReconciler{ReconcilerBase: base}).SetupWithManager(mgr); err != nil {
266+
if err := (&controllers.CloudStackFailureDomainReconciler{ReconcilerBase: base}).SetupWithManager(mgr, controller.Options{MaxConcurrentReconciles: opts.CloudStackFailureDomainConcurrency}); err != nil {
253267
setupLog.Error(err, "unable to create controller", "controller", "CloudStackFailureDomain")
254268
os.Exit(1)
255269
}

0 commit comments

Comments
 (0)