Skip to content

Commit 61a336c

Browse files
committed
all: setup controller in a consistent way
Signed-off-by: Stefan Büringer [email protected]
1 parent 9fe7ff5 commit 61a336c

File tree

11 files changed

+126
-128
lines changed

11 files changed

+126
-128
lines changed

bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller.go

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import (
3434
"k8s.io/klog/v2"
3535
"k8s.io/utils/pointer"
3636
ctrl "sigs.k8s.io/controller-runtime"
37+
"sigs.k8s.io/controller-runtime/pkg/builder"
3738
"sigs.k8s.io/controller-runtime/pkg/client"
3839
"sigs.k8s.io/controller-runtime/pkg/controller"
3940
"sigs.k8s.io/controller-runtime/pkg/handler"
@@ -124,26 +125,23 @@ func (r *KubeadmConfigReconciler) SetupWithManager(ctx context.Context, mgr ctrl
124125
b = b.Watches(
125126
&source.Kind{Type: &expv1.MachinePool{}},
126127
handler.EnqueueRequestsFromMapFunc(r.MachinePoolToBootstrapMapFunc),
127-
).WithEventFilter(predicates.ResourceNotPausedAndHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue))
128-
}
129-
130-
c, err := b.Build(r)
131-
if err != nil {
132-
return errors.Wrap(err, "failed setting up with a controller manager")
128+
)
133129
}
134130

135-
err = c.Watch(
131+
b = b.Watches(
136132
&source.Kind{Type: &clusterv1.Cluster{}},
137133
handler.EnqueueRequestsFromMapFunc(r.ClusterToKubeadmConfigs),
138-
predicates.All(ctrl.LoggerFrom(ctx),
139-
predicates.ClusterUnpausedAndInfrastructureReady(ctrl.LoggerFrom(ctx)),
140-
predicates.ResourceHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue),
134+
builder.WithPredicates(
135+
predicates.All(ctrl.LoggerFrom(ctx),
136+
predicates.ClusterUnpausedAndInfrastructureReady(ctrl.LoggerFrom(ctx)),
137+
predicates.ResourceHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue),
138+
),
141139
),
142140
)
143-
if err != nil {
144-
return errors.Wrap(err, "failed adding Watch for Clusters to controller manager")
145-
}
146141

142+
if err := b.Complete(r); err != nil {
143+
return errors.Wrap(err, "failed setting up with a controller manager")
144+
}
147145
return nil
148146
}
149147

controlplane/kubeadm/internal/controllers/controller.go

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
"k8s.io/klog/v2"
3232
"k8s.io/utils/pointer"
3333
ctrl "sigs.k8s.io/controller-runtime"
34+
"sigs.k8s.io/controller-runtime/pkg/builder"
3435
"sigs.k8s.io/controller-runtime/pkg/client"
3536
"sigs.k8s.io/controller-runtime/pkg/controller"
3637
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -85,23 +86,20 @@ func (r *KubeadmControlPlaneReconciler) SetupWithManager(ctx context.Context, mg
8586
Owns(&clusterv1.Machine{}).
8687
WithOptions(options).
8788
WithEventFilter(predicates.ResourceNotPausedAndHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue)).
88-
Build(r)
89+
Watches(
90+
&source.Kind{Type: &clusterv1.Cluster{}},
91+
handler.EnqueueRequestsFromMapFunc(r.ClusterToKubeadmControlPlane),
92+
builder.WithPredicates(
93+
predicates.All(ctrl.LoggerFrom(ctx),
94+
predicates.ResourceHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue),
95+
predicates.ClusterUnpausedAndInfrastructureReady(ctrl.LoggerFrom(ctx)),
96+
),
97+
),
98+
).Build(r)
8999
if err != nil {
90100
return errors.Wrap(err, "failed setting up with a controller manager")
91101
}
92102

93-
err = c.Watch(
94-
&source.Kind{Type: &clusterv1.Cluster{}},
95-
handler.EnqueueRequestsFromMapFunc(r.ClusterToKubeadmControlPlane),
96-
predicates.All(ctrl.LoggerFrom(ctx),
97-
predicates.ResourceHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue),
98-
predicates.ClusterUnpausedAndInfrastructureReady(ctrl.LoggerFrom(ctx)),
99-
),
100-
)
101-
if err != nil {
102-
return errors.Wrap(err, "failed adding Watch for Clusters to controller manager")
103-
}
104-
105103
r.controller = c
106104
r.recorder = mgr.GetEventRecorderFor("kubeadm-control-plane-controller")
107105

exp/internal/controllers/machinepool_controller.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"k8s.io/client-go/tools/record"
3030
"k8s.io/klog/v2"
3131
ctrl "sigs.k8s.io/controller-runtime"
32+
"sigs.k8s.io/controller-runtime/pkg/builder"
3233
"sigs.k8s.io/controller-runtime/pkg/client"
3334
"sigs.k8s.io/controller-runtime/pkg/controller"
3435
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -80,22 +81,21 @@ func (r *MachinePoolReconciler) SetupWithManager(ctx context.Context, mgr ctrl.M
8081
For(&expv1.MachinePool{}).
8182
WithOptions(options).
8283
WithEventFilter(predicates.ResourceNotPausedAndHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue)).
84+
Watches(
85+
&source.Kind{Type: &clusterv1.Cluster{}},
86+
handler.EnqueueRequestsFromMapFunc(clusterToMachinePools),
87+
// TODO: should this wait for Cluster.Status.InfrastructureReady similar to Infra Machine resources?
88+
builder.WithPredicates(
89+
predicates.All(ctrl.LoggerFrom(ctx),
90+
predicates.ClusterUnpaused(ctrl.LoggerFrom(ctx)),
91+
predicates.ResourceHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue),
92+
),
93+
),
94+
).
8395
Build(r)
8496
if err != nil {
8597
return errors.Wrap(err, "failed setting up with a controller manager")
8698
}
87-
err = c.Watch(
88-
&source.Kind{Type: &clusterv1.Cluster{}},
89-
handler.EnqueueRequestsFromMapFunc(clusterToMachinePools),
90-
// TODO: should this wait for Cluster.Status.InfrastructureReady similar to Infra Machine resources?
91-
predicates.All(ctrl.LoggerFrom(ctx),
92-
predicates.ClusterUnpaused(ctrl.LoggerFrom(ctx)),
93-
predicates.ResourceHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue),
94-
),
95-
)
96-
if err != nil {
97-
return errors.Wrap(err, "failed adding Watch for Cluster to controller manager")
98-
}
9999

100100
r.controller = c
101101
r.recorder = mgr.GetEventRecorderFor("machinepool-controller")

internal/controllers/cluster/cluster_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ type Reconciler struct {
7676
}
7777

7878
func (r *Reconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, options controller.Options) error {
79-
controller, err := ctrl.NewControllerManagedBy(mgr).
79+
c, err := ctrl.NewControllerManagedBy(mgr).
8080
For(&clusterv1.Cluster{}).
8181
Watches(
8282
&source.Kind{Type: &clusterv1.Machine{}},
@@ -92,7 +92,7 @@ func (r *Reconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, opt
9292

9393
r.recorder = mgr.GetEventRecorderFor("cluster-controller")
9494
r.externalTracker = external.ObjectTracker{
95-
Controller: controller,
95+
Controller: c,
9696
}
9797
return nil
9898
}

internal/controllers/machine/machine_controller.go

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import (
3434
"k8s.io/klog/v2"
3535
kubedrain "k8s.io/kubectl/pkg/drain"
3636
ctrl "sigs.k8s.io/controller-runtime"
37+
"sigs.k8s.io/controller-runtime/pkg/builder"
3738
"sigs.k8s.io/controller-runtime/pkg/client"
3839
"sigs.k8s.io/controller-runtime/pkg/controller"
3940
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -103,36 +104,33 @@ func (r *Reconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, opt
103104
r.nodeDeletionRetryTimeout = 10 * time.Second
104105
}
105106

106-
controller, err := ctrl.NewControllerManagedBy(mgr).
107+
c, err := ctrl.NewControllerManagedBy(mgr).
107108
For(&clusterv1.Machine{}).
108109
WithOptions(options).
109110
WithEventFilter(predicates.ResourceNotPausedAndHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue)).
111+
Watches(
112+
&source.Kind{Type: &clusterv1.Cluster{}},
113+
handler.EnqueueRequestsFromMapFunc(clusterToMachines),
114+
builder.WithPredicates(
115+
// TODO: should this wait for Cluster.Status.InfrastructureReady similar to Infra Machine resources?
116+
predicates.All(ctrl.LoggerFrom(ctx),
117+
predicates.Any(ctrl.LoggerFrom(ctx),
118+
predicates.ClusterUnpaused(ctrl.LoggerFrom(ctx)),
119+
predicates.ClusterControlPlaneInitialized(ctrl.LoggerFrom(ctx)),
120+
),
121+
predicates.ResourceHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue),
122+
),
123+
)).
110124
Build(r)
111125
if err != nil {
112126
return errors.Wrap(err, "failed setting up with a controller manager")
113127
}
114128

115-
err = controller.Watch(
116-
&source.Kind{Type: &clusterv1.Cluster{}},
117-
handler.EnqueueRequestsFromMapFunc(clusterToMachines),
118-
// TODO: should this wait for Cluster.Status.InfrastructureReady similar to Infra Machine resources?
119-
predicates.All(ctrl.LoggerFrom(ctx),
120-
predicates.Any(ctrl.LoggerFrom(ctx),
121-
predicates.ClusterUnpaused(ctrl.LoggerFrom(ctx)),
122-
predicates.ClusterControlPlaneInitialized(ctrl.LoggerFrom(ctx)),
123-
),
124-
predicates.ResourceHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue),
125-
),
126-
)
127-
if err != nil {
128-
return errors.Wrap(err, "failed to add Watch for Clusters to controller manager")
129-
}
130-
131-
r.controller = controller
129+
r.controller = c
132130

133131
r.recorder = mgr.GetEventRecorderFor("machine-controller")
134132
r.externalTracker = external.ObjectTracker{
135-
Controller: controller,
133+
Controller: c,
136134
}
137135
return nil
138136
}

internal/controllers/machinedeployment/machinedeployment_controller.go

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"k8s.io/client-go/tools/record"
3131
"k8s.io/klog/v2"
3232
ctrl "sigs.k8s.io/controller-runtime"
33+
"sigs.k8s.io/controller-runtime/pkg/builder"
3334
"sigs.k8s.io/controller-runtime/pkg/client"
3435
"sigs.k8s.io/controller-runtime/pkg/controller"
3536
"sigs.k8s.io/controller-runtime/pkg/handler"
@@ -78,7 +79,7 @@ func (r *Reconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, opt
7879
return err
7980
}
8081

81-
c, err := ctrl.NewControllerManagedBy(mgr).
82+
err = ctrl.NewControllerManagedBy(mgr).
8283
For(&clusterv1.MachineDeployment{}).
8384
Owns(&clusterv1.MachineSet{}).
8485
Watches(
@@ -87,24 +88,21 @@ func (r *Reconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, opt
8788
).
8889
WithOptions(options).
8990
WithEventFilter(predicates.ResourceNotPausedAndHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue)).
90-
Build(r)
91+
Watches(
92+
&source.Kind{Type: &clusterv1.Cluster{}},
93+
handler.EnqueueRequestsFromMapFunc(clusterToMachineDeployments),
94+
builder.WithPredicates(
95+
// TODO: should this wait for Cluster.Status.InfrastructureReady similar to Infra Machine resources?
96+
predicates.All(ctrl.LoggerFrom(ctx),
97+
predicates.ClusterUnpaused(ctrl.LoggerFrom(ctx)),
98+
predicates.ResourceHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue),
99+
),
100+
),
101+
).Complete(r)
91102
if err != nil {
92103
return errors.Wrap(err, "failed setting up with a controller manager")
93104
}
94105

95-
err = c.Watch(
96-
&source.Kind{Type: &clusterv1.Cluster{}},
97-
handler.EnqueueRequestsFromMapFunc(clusterToMachineDeployments),
98-
// TODO: should this wait for Cluster.Status.InfrastructureReady similar to Infra Machine resources?
99-
predicates.All(ctrl.LoggerFrom(ctx),
100-
predicates.ClusterUnpaused(ctrl.LoggerFrom(ctx)),
101-
predicates.ResourceHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue),
102-
),
103-
)
104-
if err != nil {
105-
return errors.Wrap(err, "failed to add Watch for Clusters to controller manager")
106-
}
107-
108106
r.recorder = mgr.GetEventRecorderFor("machinedeployment-controller")
109107
return nil
110108
}

internal/controllers/machinehealthcheck/machinehealthcheck_controller.go

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import (
3636
"k8s.io/client-go/tools/record"
3737
"k8s.io/klog/v2"
3838
ctrl "sigs.k8s.io/controller-runtime"
39+
"sigs.k8s.io/controller-runtime/pkg/builder"
3940
"sigs.k8s.io/controller-runtime/pkg/client"
4041
"sigs.k8s.io/controller-runtime/pkg/controller"
4142
"sigs.k8s.io/controller-runtime/pkg/handler"
@@ -85,32 +86,30 @@ type Reconciler struct {
8586
}
8687

8788
func (r *Reconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, options controller.Options) error {
88-
controller, err := ctrl.NewControllerManagedBy(mgr).
89+
c, err := ctrl.NewControllerManagedBy(mgr).
8990
For(&clusterv1.MachineHealthCheck{}).
9091
Watches(
9192
&source.Kind{Type: &clusterv1.Machine{}},
9293
handler.EnqueueRequestsFromMapFunc(r.machineToMachineHealthCheck),
9394
).
9495
WithOptions(options).
9596
WithEventFilter(predicates.ResourceNotPausedAndHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue)).
96-
Build(r)
97+
Watches(
98+
&source.Kind{Type: &clusterv1.Cluster{}},
99+
handler.EnqueueRequestsFromMapFunc(r.clusterToMachineHealthCheck),
100+
builder.WithPredicates(
101+
// TODO: should this wait for Cluster.Status.InfrastructureReady similar to Infra Machine resources?
102+
predicates.All(ctrl.LoggerFrom(ctx),
103+
predicates.ClusterUnpaused(ctrl.LoggerFrom(ctx)),
104+
predicates.ResourceHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue),
105+
),
106+
),
107+
).Build(r)
97108
if err != nil {
98109
return errors.Wrap(err, "failed setting up with a controller manager")
99110
}
100-
err = controller.Watch(
101-
&source.Kind{Type: &clusterv1.Cluster{}},
102-
handler.EnqueueRequestsFromMapFunc(r.clusterToMachineHealthCheck),
103-
// TODO: should this wait for Cluster.Status.InfrastructureReady similar to Infra Machine resources?
104-
predicates.All(ctrl.LoggerFrom(ctx),
105-
predicates.ClusterUnpaused(ctrl.LoggerFrom(ctx)),
106-
predicates.ResourceHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue),
107-
),
108-
)
109-
if err != nil {
110-
return errors.Wrap(err, "failed to add Watch for Clusters to controller manager")
111-
}
112111

113-
r.controller = controller
112+
r.controller = c
114113
r.recorder = mgr.GetEventRecorderFor("machinehealthcheck-controller")
115114
return nil
116115
}

internal/controllers/machineset/machineset_controller.go

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
"k8s.io/client-go/tools/record"
3434
"k8s.io/klog/v2"
3535
ctrl "sigs.k8s.io/controller-runtime"
36+
"sigs.k8s.io/controller-runtime/pkg/builder"
3637
"sigs.k8s.io/controller-runtime/pkg/client"
3738
"sigs.k8s.io/controller-runtime/pkg/controller"
3839
"sigs.k8s.io/controller-runtime/pkg/handler"
@@ -94,7 +95,7 @@ func (r *Reconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, opt
9495
return err
9596
}
9697

97-
c, err := ctrl.NewControllerManagedBy(mgr).
98+
err = ctrl.NewControllerManagedBy(mgr).
9899
For(&clusterv1.MachineSet{}).
99100
Owns(&clusterv1.Machine{}).
100101
Watches(
@@ -103,24 +104,21 @@ func (r *Reconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, opt
103104
).
104105
WithOptions(options).
105106
WithEventFilter(predicates.ResourceNotPausedAndHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue)).
106-
Build(r)
107+
Watches(
108+
&source.Kind{Type: &clusterv1.Cluster{}},
109+
handler.EnqueueRequestsFromMapFunc(clusterToMachineSets),
110+
builder.WithPredicates(
111+
// TODO: should this wait for Cluster.Status.InfrastructureReady similar to Infra Machine resources?
112+
predicates.All(ctrl.LoggerFrom(ctx),
113+
predicates.ClusterUnpaused(ctrl.LoggerFrom(ctx)),
114+
predicates.ResourceHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue),
115+
),
116+
),
117+
).Complete(r)
107118
if err != nil {
108119
return errors.Wrap(err, "failed setting up with a controller manager")
109120
}
110121

111-
err = c.Watch(
112-
&source.Kind{Type: &clusterv1.Cluster{}},
113-
handler.EnqueueRequestsFromMapFunc(clusterToMachineSets),
114-
// TODO: should this wait for Cluster.Status.InfrastructureReady similar to Infra Machine resources?
115-
predicates.All(ctrl.LoggerFrom(ctx),
116-
predicates.ClusterUnpaused(ctrl.LoggerFrom(ctx)),
117-
predicates.ResourceHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue),
118-
),
119-
)
120-
if err != nil {
121-
return errors.Wrap(err, "failed to add Watch for Clusters to controller manager")
122-
}
123-
124122
r.recorder = mgr.GetEventRecorderFor("machineset-controller")
125123
return nil
126124
}

0 commit comments

Comments
 (0)