@@ -44,9 +44,16 @@ import (
4444 "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datastore"
4545 "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/metrics"
4646 "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/metrics/collectors"
47+ "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/plugins"
4748 "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/requestcontrol"
4849 "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/saturationdetector"
4950 "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling"
51+ "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework/plugins/filter"
52+ "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework/plugins/multi/prefix"
53+ "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework/plugins/picker"
54+ "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework/plugins/profile"
55+ "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework/plugins/scorer"
56+ testfilter "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework/plugins/test/filter"
5057 runserver "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/server"
5158 "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging"
5259 "sigs.k8s.io/gateway-api-inference-extension/version"
@@ -335,6 +342,23 @@ func (r *Runner) Run(ctx context.Context) error {
335342 return nil
336343}
337344
345+ // registerInTreePlugins registers the factory functions of all known plugins
346+ func (r * Runner ) registerInTreePlugins () {
347+ plugins .Register (filter .DecisionTreeFilterType , filter .DecisionTreeFilterFactory )
348+ plugins .Register (filter .LeastKVCacheFilterType , filter .LeastKVCacheFilterFactory )
349+ plugins .Register (filter .LeastQueueFilterType , filter .LeastQueueFilterFactory )
350+ plugins .Register (filter .LoraAffinityFilterType , filter .LoraAffinityFilterFactory )
351+ plugins .Register (filter .LowQueueFilterType , filter .LowQueueFilterFactory )
352+ plugins .Register (prefix .PrefixCachePluginType , prefix .PrefixCachePluginFactory )
353+ plugins .Register (picker .MaxScorePickerType , picker .MaxScorePickerFactory )
354+ plugins .Register (picker .RandomPickerType , picker .RandomPickerFactory )
355+ plugins .Register (profile .SingleProfileHandlerType , profile .SingleProfileHandlerFactory )
356+ plugins .Register (scorer .KvCacheScorerType , scorer .KvCacheScorerFactory )
357+ plugins .Register (scorer .QueueScorerType , scorer .QueueScorerFactory )
358+ // register filter for test purpose only (used in conformance tests)
359+ plugins .Register (testfilter .HeaderBasedTestingFilterType , testfilter .HeaderBasedTestingFilterFactory )
360+ }
361+
338362func (r * Runner ) parsePluginsConfiguration (ctx context.Context ) error {
339363 if * configText == "" && * configFile == "" {
340364 return nil // configuring through code, not through file
@@ -351,7 +375,8 @@ func (r *Runner) parsePluginsConfiguration(ctx context.Context) error {
351375 }
352376 }
353377
354- handle := newEppHandle (ctx )
378+ r .registerInTreePlugins ()
379+ handle := plugins .NewEppHandle (ctx )
355380 config , err := loader .LoadConfig (configBytes , handle )
356381 if err != nil {
357382 return fmt .Errorf ("failed to load the configuration - %w" , err )
0 commit comments