@@ -26,7 +26,9 @@ import (
26
26
"k8s.io/client-go/tools/record"
27
27
ctrl "sigs.k8s.io/controller-runtime"
28
28
"sigs.k8s.io/controller-runtime/pkg/client"
29
+ "sigs.k8s.io/controller-runtime/pkg/event"
29
30
"sigs.k8s.io/controller-runtime/pkg/log"
31
+ "sigs.k8s.io/controller-runtime/pkg/predicate"
30
32
"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datastore"
31
33
logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging"
32
34
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
63
65
}
64
66
65
67
func (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
+ }
66
87
return ctrl .NewControllerManagedBy (mgr ).
67
88
For (& corev1.Pod {}).
89
+ WithEventFilter (filter ).
68
90
Complete (c )
69
91
}
70
92
0 commit comments