@@ -19,6 +19,7 @@ package controller
1919import (
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+
141170func (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