Skip to content

Commit 4edb028

Browse files
committed
controller: watch for nodes changes
We should reconcile when nodes are being added or deleted, to keep the autosizing feature in sync. Signed-off-by: Talor Itzhak <titzhak@redhat.com>
1 parent 6b9b322 commit 4edb028

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

internal/controller/numaresourcesscheduler_controller.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package controller
1919
import (
2020
"context"
2121
"fmt"
22+
"sigs.k8s.io/controller-runtime/pkg/handler"
2223
"time"
2324

2425
appsv1 "k8s.io/api/apps/v1"
@@ -127,6 +128,18 @@ func (r *NUMAResourcesSchedulerReconciler) SetupWithManager(mgr ctrl.Manager) er
127128
!apiequality.Semantic.DeepEqual(e.ObjectNew.GetAnnotations(), e.ObjectOld.GetAnnotations())
128129
},
129130
}
131+
nodesPredicate := predicate.Funcs{
132+
// we only care about cases when nodes are getting created or deleted
133+
CreateFunc: func(e event.TypedCreateEvent[client.Object]) bool {
134+
return true
135+
},
136+
DeleteFunc: func(e event.TypedDeleteEvent[client.Object]) bool {
137+
return true
138+
},
139+
UpdateFunc: func(e event.TypedUpdateEvent[client.Object]) bool {
140+
return false
141+
},
142+
}
130143

131144
return ctrl.NewControllerManagedBy(mgr).
132145
For(&nropv1.NUMAResourcesScheduler{}).
@@ -135,9 +148,25 @@ func (r *NUMAResourcesSchedulerReconciler) SetupWithManager(mgr ctrl.Manager) er
135148
Owns(&corev1.ServiceAccount{}, builder.WithPredicates(p)).
136149
Owns(&corev1.ConfigMap{}, builder.WithPredicates(p)).
137150
Owns(&appsv1.Deployment{}, builder.WithPredicates(p)).
151+
Watches(&corev1.Node{}, handler.EnqueueRequestsFromMapFunc(r.nodeToNUMAResourcesScheduler),
152+
builder.WithPredicates(nodesPredicate)).
138153
Complete(r)
139154
}
140155

156+
func (r *NUMAResourcesSchedulerReconciler) nodeToNUMAResourcesScheduler(ctx context.Context, object client.Object) []reconcile.Request {
157+
var requests []reconcile.Request
158+
nross := &nropv1.NUMAResourcesSchedulerList{}
159+
if err := r.List(ctx, nross); err != nil {
160+
klog.ErrorS(err, "failed to List NUMAResourcesScheduler")
161+
}
162+
for _, instance := range nross.Items {
163+
requests = append(requests, reconcile.Request{NamespacedName: client.ObjectKey{
164+
Name: instance.Name,
165+
}})
166+
}
167+
return requests
168+
}
169+
141170
func (r *NUMAResourcesSchedulerReconciler) reconcileResource(ctx context.Context, instance *nropv1.NUMAResourcesScheduler) (reconcile.Result, string, error) {
142171
schedStatus, err := r.syncNUMASchedulerResources(ctx, instance)
143172
if err != nil {

0 commit comments

Comments
 (0)