Skip to content

Commit 46db497

Browse files
committed
Add filter to pod redconciler
1 parent d2c6e7a commit 46db497

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

pkg/epp/controller/pod_reconciler.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,32 +22,32 @@ import (
2222
"github.com/go-logr/logr"
2323
corev1 "k8s.io/api/core/v1"
2424
apierrors "k8s.io/apimachinery/pkg/api/errors"
25-
"k8s.io/apimachinery/pkg/runtime"
2625
"k8s.io/apimachinery/pkg/types"
2726
"k8s.io/client-go/tools/record"
2827
ctrl "sigs.k8s.io/controller-runtime"
2928
"sigs.k8s.io/controller-runtime/pkg/client"
3029
"sigs.k8s.io/controller-runtime/pkg/log"
30+
"sigs.k8s.io/controller-runtime/pkg/predicate"
3131
"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datastore"
3232
logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging"
3333
)
3434

3535
type PodReconciler struct {
3636
client.Client
3737
Datastore datastore.Datastore
38-
Scheme *runtime.Scheme
38+
// namespace of the InferencePool
39+
// we donot support cross namespace pod selection
40+
Namespace string
3941
Record record.EventRecorder
4042
}
4143

4244
func (c *PodReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
4345
logger := log.FromContext(ctx)
44-
inferencePool, err := c.Datastore.PoolGet()
46+
_, err := c.Datastore.PoolGet()
4547
if err != nil {
4648
logger.V(logutil.TRACE).Info("Skipping reconciling Pod because the InferencePool is not available yet", "error", err)
4749
// When the inferencePool is initialized it lists the appropriate pods and populates the datastore, so no need to requeue.
4850
return ctrl.Result{}, nil
49-
} else if inferencePool.Namespace != req.Namespace {
50-
return ctrl.Result{}, nil
5151
}
5252

5353
logger.V(logutil.VERBOSE).Info("Pod being reconciled", "name", req.NamespacedName)
@@ -67,8 +67,12 @@ func (c *PodReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.R
6767
}
6868

6969
func (c *PodReconciler) SetupWithManager(mgr ctrl.Manager) error {
70+
// Filter specific inference pool
71+
p := predicate.NewPredicateFuncs(func(object client.Object) bool {
72+
return object.GetNamespace() == c.Namespace
73+
})
7074
return ctrl.NewControllerManagedBy(mgr).
71-
For(&corev1.Pod{}).
75+
For(&corev1.Pod{}).WithEventFilter(p).
7276
Complete(c)
7377
}
7478

pkg/epp/server/runserver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ func (r *ExtProcServerRunner) SetupWithManager(ctx context.Context, mgr ctrl.Man
115115

116116
if err := (&controller.PodReconciler{
117117
Datastore: r.Datastore,
118-
Scheme: mgr.GetScheme(),
119118
Client: mgr.GetClient(),
119+
Namespace: r.PoolNamespace,
120120
Record: mgr.GetEventRecorderFor("pod"),
121121
}).SetupWithManager(mgr); err != nil {
122122
return fmt.Errorf("failed setting up EndpointSliceReconciler: %v", err)

0 commit comments

Comments
 (0)