in pkg/plugin/predicates/predicate_manager.go [370:415]
func newPredicateManagerInternal(
handle framework.Handle,
reservationPreFilters map[string]bool,
allocationPreFilters map[string]bool,
reservationFilters map[string]bool,
allocationFilters map[string]bool) *predicateManagerImpl {
// ensure K8s scheduler metrics have been initialized in YK standalone mode to avoid SIGSEGV
if metrics.Goroutines == nil {
metrics.InitMetrics()
}
pluginRegistry := plugins.NewInTreeRegistry()
cfg, err := defaultConfig() // latest.Default()
if err != nil {
log.Log(log.ShimPredicates).Fatal("Unable to get default predicate config", zap.Error(err))
}
profile := cfg.Profiles[0] // first profile is default
registeredPlugins := profile.Plugins
createdPlugins := make([]framework.Plugin, 0)
// As of SchedulerConfiguration v1, all plugins implement MultiPoint, therefore we need to instantiate each one and
// check to see what interfaces it implements dynamically
createPlugins(handle, pluginRegistry, ®isteredPlugins.MultiPoint, &createdPlugins)
resPre := make([]framework.Plugin, 0)
allocPre := make([]framework.Plugin, 0)
resFilt := make([]framework.Plugin, 0)
allocFilt := make([]framework.Plugin, 0)
addPlugins("PreFilter", createdPlugins, &resPre, reservationPreFilters)
addPlugins("PreFilter", createdPlugins, &allocPre, allocationPreFilters)
addPlugins("Filter", createdPlugins, &resFilt, reservationFilters)
addPlugins("Filter", createdPlugins, &allocFilt, allocationFilters)
pm := &predicateManagerImpl{
reservationPreFilters: preFilterPlugins(resPre),
allocationPreFilters: preFilterPlugins(allocPre),
reservationFilters: filterPlugins(resFilt),
allocationFilters: filterPlugins(allocFilt),
klogger: klog.NewKlogr(),
}
return pm
}