@@ -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/v1alpha1"
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"
@@ -41,25 +43,20 @@ type InferenceModelReconciler struct {
41
43
}
42
44
43
45
func (c * InferenceModelReconciler ) Reconcile (ctx context.Context , req ctrl.Request ) (ctrl.Result , error ) {
44
- if req .Namespace != c .PoolNamespacedName .Namespace {
45
- return ctrl.Result {}, nil
46
- }
47
-
48
- logger := log .FromContext (ctx )
49
- loggerDefault := logger .V (logutil .DEFAULT )
50
- loggerDefault .Info ("Reconciling InferenceModel" , "name" , req .NamespacedName )
46
+ logger := log .FromContext (ctx ).WithValues ("Request.Namespace" , req .Namespace , "Request.Name" , req .Name ).V (logutil .DEFAULT )
47
+ logger .Info ("Reconciling InferenceModel" )
51
48
52
49
infModel := & v1alpha1.InferenceModel {}
53
50
if err := c .Get (ctx , req .NamespacedName , infModel ); err != nil {
54
51
if errors .IsNotFound (err ) {
55
- loggerDefault .Info ("InferenceModel not found. Removing from datastore since object must be deleted" , "name" , req . NamespacedName )
52
+ logger .Info ("InferenceModel not found. Removing from datastore since object must be deleted" )
56
53
c .Datastore .ModelDelete (infModel .Spec .ModelName )
57
54
return ctrl.Result {}, nil
58
55
}
59
- loggerDefault .Error (err , "Unable to get InferenceModel" , "name" , req . NamespacedName )
56
+ logger .Error (err , "Unable to get InferenceModel" )
60
57
return ctrl.Result {}, err
61
58
} else if ! infModel .DeletionTimestamp .IsZero () {
62
- loggerDefault .Info ("InferenceModel is marked for deletion. Removing from datastore" , "name" , req . NamespacedName )
59
+ logger .Info ("InferenceModel is marked for deletion. Removing from datastore" )
63
60
c .Datastore .ModelDelete (infModel .Spec .ModelName )
64
61
return ctrl.Result {}, nil
65
62
}
@@ -69,21 +66,30 @@ func (c *InferenceModelReconciler) Reconcile(ctx context.Context, req ctrl.Reque
69
66
}
70
67
71
68
func (c * InferenceModelReconciler ) updateDatastore (logger logr.Logger , infModel * v1alpha1.InferenceModel ) {
72
- loggerDefault := logger .V (logutil .DEFAULT )
73
-
74
69
if infModel .Spec .PoolRef .Name == c .PoolNamespacedName .Name {
75
- loggerDefault .Info ("Updating datastore" , "poolRef" , infModel .Spec .PoolRef , "serverPoolName" , c .PoolNamespacedName )
76
- loggerDefault .Info ("Adding/Updating InferenceModel" , "modelName" , infModel .Spec .ModelName )
70
+ logger .Info ("Adding/Updating InferenceModel" , "modelName" , infModel .Spec .ModelName )
77
71
c .Datastore .ModelSet (infModel )
78
72
return
79
73
}
80
- loggerDefault .Info ("Removing/Not adding InferenceModel" , "modelName" , infModel .Spec .ModelName )
81
74
// If we get here. The model is not relevant to this pool, remove.
75
+ logger .Info ("Removing/Not adding InferenceModel" , "modelName" , infModel .Spec .ModelName , "poolRef" , infModel .Spec .PoolRef )
82
76
c .Datastore .ModelDelete (infModel .Spec .ModelName )
83
77
}
84
78
85
79
func (c * InferenceModelReconciler ) SetupWithManager (mgr ctrl.Manager ) error {
86
80
return ctrl .NewControllerManagedBy (mgr ).
87
81
For (& v1alpha1.InferenceModel {}).
82
+ WithEventFilter (predicate.Funcs {
83
+ CreateFunc : func (e event.CreateEvent ) bool { return c .eventPredicate (e .Object .(* v1alpha1.InferenceModel )) },
84
+ UpdateFunc : func (e event.UpdateEvent ) bool {
85
+ return c .eventPredicate (e .ObjectOld .(* v1alpha1.InferenceModel )) || c .eventPredicate (e .ObjectNew .(* v1alpha1.InferenceModel ))
86
+ },
87
+ DeleteFunc : func (e event.DeleteEvent ) bool { return c .eventPredicate (e .Object .(* v1alpha1.InferenceModel )) },
88
+ GenericFunc : func (e event.GenericEvent ) bool { return c .eventPredicate (e .Object .(* v1alpha1.InferenceModel )) },
89
+ }).
88
90
Complete (c )
89
91
}
92
+
93
+ func (c * InferenceModelReconciler ) eventPredicate (infModel * v1alpha1.InferenceModel ) bool {
94
+ return (infModel .Spec .PoolRef .Name == c .PoolNamespacedName .Name ) && (infModel .GetNamespace () == c .PoolNamespacedName .Namespace )
95
+ }
0 commit comments