@@ -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/api/v1alpha2"
31
33
"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datastore"
32
34
logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging"
@@ -65,8 +67,28 @@ func (c *PodReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.R
65
67
}
66
68
67
69
func (c * PodReconciler ) SetupWithManager (mgr ctrl.Manager ) error {
70
+ filter := predicate.Funcs {
71
+ CreateFunc : func (ce event.CreateEvent ) bool {
72
+ pod := ce .Object .(* corev1.Pod )
73
+ return c .Datastore .PoolLabelsMatch (pod .GetLabels ())
74
+ },
75
+ UpdateFunc : func (ue event.UpdateEvent ) bool {
76
+ oldPod := ue .ObjectOld .(* corev1.Pod )
77
+ newPod := ue .ObjectNew .(* corev1.Pod )
78
+ return c .Datastore .PoolLabelsMatch (oldPod .GetLabels ()) || c .Datastore .PoolLabelsMatch (newPod .GetLabels ())
79
+ },
80
+ DeleteFunc : func (de event.DeleteEvent ) bool {
81
+ pod := de .Object .(* corev1.Pod )
82
+ return c .Datastore .PoolLabelsMatch (pod .GetLabels ())
83
+ },
84
+ GenericFunc : func (ge event.GenericEvent ) bool {
85
+ pod := ge .Object .(* corev1.Pod )
86
+ return c .Datastore .PoolLabelsMatch (pod .GetLabels ())
87
+ },
88
+ }
68
89
return ctrl .NewControllerManagedBy (mgr ).
69
90
For (& corev1.Pod {}).
91
+ WithEventFilter (filter ).
70
92
Complete (c )
71
93
}
72
94
0 commit comments