Skip to content

Commit 1331fa0

Browse files
authored
Merge pull request #38 from Karthik-K-N/update-setup
Simplify setupwith manager methods
2 parents 9d0a281 + fd8c41a commit 1331fa0

File tree

2 files changed

+42
-67
lines changed

2 files changed

+42
-67
lines changed

internal/controller/node_controller.go

Lines changed: 36 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,10 @@ import (
2525
"k8s.io/apimachinery/pkg/runtime"
2626
"k8s.io/client-go/util/retry"
2727
ctrl "sigs.k8s.io/controller-runtime"
28+
"sigs.k8s.io/controller-runtime/pkg/builder"
2829
"sigs.k8s.io/controller-runtime/pkg/client"
2930
"sigs.k8s.io/controller-runtime/pkg/event"
30-
"sigs.k8s.io/controller-runtime/pkg/handler"
3131
"sigs.k8s.io/controller-runtime/pkg/predicate"
32-
"sigs.k8s.io/controller-runtime/pkg/source"
33-
3432
readinessv1alpha1 "sigs.k8s.io/node-readiness-controller/api/v1alpha1"
3533
)
3634

@@ -243,46 +241,42 @@ func (r *ReadinessGateController) recordNodeFailure(
243241

244242
// SetupWithManager sets up the controller with the Manager.
245243
func (r *NodeReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager) error {
246-
nodeController, err := ctrl.NewControllerManagedBy(mgr).
247-
For(&corev1.Node{}).
244+
return ctrl.NewControllerManagedBy(mgr).
248245
Named("node").
249-
Build(r)
250-
if err != nil {
251-
return err
252-
}
253-
// Watch node create/update events for readiness taint processing
254-
return nodeController.Watch(
255-
source.Kind(mgr.GetCache(), &corev1.Node{},
256-
&handler.TypedEnqueueRequestForObject[*corev1.Node]{},
257-
predicate.TypedFuncs[*corev1.Node]{
258-
CreateFunc: func(e event.TypedCreateEvent[*corev1.Node]) bool {
259-
log := ctrl.LoggerFrom(ctx)
260-
log.V(4).Info("NodeReconciler processing node create event", "node", e.Object.Name)
261-
return true
262-
},
263-
UpdateFunc: func(e event.TypedUpdateEvent[*corev1.Node]) bool {
264-
log := ctrl.LoggerFrom(ctx)
265-
oldNode := e.ObjectOld
266-
newNode := e.ObjectNew
267-
268-
// Only reconcile if conditions or taints changed
269-
conditionsChanged := !conditionsEqual(oldNode.Status.Conditions, newNode.Status.Conditions)
270-
taintsChanged := !taintsEqual(oldNode.Spec.Taints, newNode.Spec.Taints)
271-
labelsChanged := !labelsEqual(oldNode.Labels, newNode.Labels)
272-
273-
shouldReconcile := conditionsChanged || taintsChanged || labelsChanged
274-
275-
if shouldReconcile {
276-
log.V(4).Info("NodeReconciler processing node update event",
277-
"node", newNode.Name,
278-
"conditionsChanged", conditionsChanged,
279-
"taintsChanged", taintsChanged,
280-
"labelsChanged", labelsChanged)
281-
}
282-
283-
return shouldReconcile
284-
},
285-
}))
246+
For(&corev1.Node{}, builder.WithPredicates(predicate.Funcs{
247+
CreateFunc: func(e event.CreateEvent) bool {
248+
log := ctrl.LoggerFrom(ctx)
249+
n, ok := e.Object.(*corev1.Node)
250+
if !ok {
251+
log.V(4).Info("Expected Node", "type", fmt.Sprintf("%T", e.Object))
252+
return false
253+
}
254+
log.V(4).Info("NodeReconciler processing node create event", "node", n.GetName())
255+
return true
256+
},
257+
UpdateFunc: func(e event.UpdateEvent) bool {
258+
log := ctrl.LoggerFrom(ctx)
259+
oldNode := e.ObjectOld.(*corev1.Node)
260+
newNode := e.ObjectNew.(*corev1.Node)
261+
262+
conditionsChanged := !conditionsEqual(oldNode.Status.Conditions, newNode.Status.Conditions)
263+
taintsChanged := !taintsEqual(oldNode.Spec.Taints, newNode.Spec.Taints)
264+
labelsChanged := !labelsEqual(oldNode.Labels, newNode.Labels)
265+
266+
shouldReconcile := conditionsChanged || taintsChanged || labelsChanged
267+
268+
if shouldReconcile {
269+
log.V(4).Info("NodeReconciler processing node update event",
270+
"node", newNode.Name,
271+
"conditionsChanged", conditionsChanged,
272+
"taintsChanged", taintsChanged,
273+
"labelsChanged", labelsChanged)
274+
}
275+
276+
return shouldReconcile
277+
},
278+
})).
279+
Complete(r)
286280
}
287281

288282
// conditionsEqual checks if two condition slices are equal

internal/controller/nodereadinessrule_controller.go

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,10 @@ import (
3030
"k8s.io/client-go/kubernetes"
3131
"k8s.io/client-go/util/retry"
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"
35-
"sigs.k8s.io/controller-runtime/pkg/event"
36-
"sigs.k8s.io/controller-runtime/pkg/handler"
3736
"sigs.k8s.io/controller-runtime/pkg/predicate"
38-
"sigs.k8s.io/controller-runtime/pkg/source"
39-
4037
readinessv1alpha1 "sigs.k8s.io/node-readiness-controller/api/v1alpha1"
4138
)
4239

@@ -740,25 +737,9 @@ func removeFinalizer(rule *readinessv1alpha1.NodeReadinessRule, finalizer string
740737

741738
// SetupWithManager sets up the controller with the Manager.
742739
func (r *RuleReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager) error {
743-
c, err := controller.New("nodereadiness-controller", mgr, controller.Options{
744-
Reconciler: r,
745-
MaxConcurrentReconciles: 1,
746-
})
747-
if err != nil {
748-
return err
749-
}
750-
751-
// Watch for changes to the primary resource NodeReadinessRule
752-
err = c.Watch(source.Kind(mgr.GetCache(), &readinessv1alpha1.NodeReadinessRule{},
753-
&handler.TypedEnqueueRequestForObject[*readinessv1alpha1.NodeReadinessRule]{},
754-
predicate.TypedFuncs[*readinessv1alpha1.NodeReadinessRule]{
755-
UpdateFunc: func(tue event.TypedUpdateEvent[*readinessv1alpha1.NodeReadinessRule]) bool {
756-
return tue.ObjectOld.GetGeneration() != tue.ObjectNew.GetGeneration() // Only reconcile on spec changes
757-
},
758-
}))
759-
if err != nil {
760-
return err
761-
}
762-
763-
return nil
740+
return ctrl.NewControllerManagedBy(mgr).
741+
Named("nodereadiness-controller").
742+
WithOptions(controller.Options{MaxConcurrentReconciles: 1}).
743+
For(&readinessv1alpha1.NodeReadinessRule{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})).
744+
Complete(r)
764745
}

0 commit comments

Comments
 (0)