@@ -26,7 +26,9 @@ import (
2626 "k8s.io/client-go/tools/record"
2727 ctrl "sigs.k8s.io/controller-runtime"
2828 "sigs.k8s.io/controller-runtime/pkg/client"
29+ "sigs.k8s.io/controller-runtime/pkg/event"
2930 "sigs.k8s.io/controller-runtime/pkg/log"
31+ "sigs.k8s.io/controller-runtime/pkg/predicate"
3032 "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datastore"
3133 logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging"
3234 podutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/pod"
@@ -63,8 +65,28 @@ func (c *PodReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.R
6365}
6466
6567func (c * PodReconciler ) SetupWithManager (mgr ctrl.Manager ) error {
68+ filter := predicate.Funcs {
69+ CreateFunc : func (ce event.CreateEvent ) bool {
70+ pod := ce .Object .(* corev1.Pod )
71+ return c .Datastore .PoolLabelsMatch (pod .GetLabels ())
72+ },
73+ UpdateFunc : func (ue event.UpdateEvent ) bool {
74+ oldPod := ue .ObjectOld .(* corev1.Pod )
75+ newPod := ue .ObjectNew .(* corev1.Pod )
76+ return c .Datastore .PoolLabelsMatch (oldPod .GetLabels ()) || c .Datastore .PoolLabelsMatch (newPod .GetLabels ())
77+ },
78+ DeleteFunc : func (de event.DeleteEvent ) bool {
79+ pod := de .Object .(* corev1.Pod )
80+ return c .Datastore .PoolLabelsMatch (pod .GetLabels ())
81+ },
82+ GenericFunc : func (ge event.GenericEvent ) bool {
83+ pod := ge .Object .(* corev1.Pod )
84+ return c .Datastore .PoolLabelsMatch (pod .GetLabels ())
85+ },
86+ }
6687 return ctrl .NewControllerManagedBy (mgr ).
6788 For (& corev1.Pod {}).
89+ WithEventFilter (filter ).
6890 Complete (c )
6991}
7092
0 commit comments