diff --git a/pkg/scheduler/factory/factory.go b/pkg/scheduler/factory/factory.go index 49179251e8..7b2bb85678 100644 --- a/pkg/scheduler/factory/factory.go +++ b/pkg/scheduler/factory/factory.go @@ -821,24 +821,6 @@ func (c *configFactory) CreateFromConfig(policy schedulerapi.Policy) (*Config, e return c.CreateFromKeys(predicateKeys, priorityKeys, extenders) } -// getBinderFunc returns an func which returns an extender that supports bind or a default binder based on the given pod. -func (c *configFactory) getBinderFunc(extenders []algorithm.SchedulerExtender) func(pod *v1.Pod) Binder { - var extenderBinder algorithm.SchedulerExtender - for i := range extenders { - if extenders[i].IsBinder() { - extenderBinder = extenders[i] - break - } - } - defaultBinder := &binder{c.client} - return func(pod *v1.Pod) Binder { - if extenderBinder != nil && extenderBinder.IsInterested(pod) { - return extenderBinder - } - return defaultBinder - } -} - // Creates a scheduler from a set of registered fit predicate keys and priority keys. func (c *configFactory) CreateFromKeys(predicateKeys, priorityKeys sets.String, extenders []algorithm.SchedulerExtender) (*Config, error) { klog.V(2).Infof("Creating scheduler with fit predicates '%v' and priority functions '%v'", predicateKeys, priorityKeys) @@ -893,7 +875,7 @@ func (c *configFactory) CreateFromKeys(predicateKeys, priorityKeys sets.String, // The scheduler only needs to consider schedulable nodes. NodeLister: &nodeLister{c.nodeLister}, Algorithm: algo, - GetBinder: c.getBinderFunc(extenders), + GetBinder: getBinderFunc(c.client, extenders), PodConditionUpdater: &podConditionUpdater{c.client}, PodPreemptor: &podPreemptor{c.client}, PluginSet: c.pluginSet, @@ -908,6 +890,24 @@ func (c *configFactory) CreateFromKeys(predicateKeys, priorityKeys sets.String, }, nil } +// getBinderFunc returns a func which returns an extender that supports bind or a default binder based on the given pod. +func getBinderFunc(client clientset.Interface, extenders []algorithm.SchedulerExtender) func(pod *v1.Pod) Binder { + var extenderBinder algorithm.SchedulerExtender + for i := range extenders { + if extenders[i].IsBinder() { + extenderBinder = extenders[i] + break + } + } + defaultBinder := &binder{client} + return func(pod *v1.Pod) Binder { + if extenderBinder != nil && extenderBinder.IsInterested(pod) { + return extenderBinder + } + return defaultBinder + } +} + type nodeLister struct { corelisters.NodeLister } diff --git a/pkg/scheduler/factory/factory_test.go b/pkg/scheduler/factory/factory_test.go index a85c81f896..bed89bed7d 100644 --- a/pkg/scheduler/factory/factory_test.go +++ b/pkg/scheduler/factory/factory_test.go @@ -645,7 +645,7 @@ func testGetBinderFunc(expectedBinderType, podName string, extenders []algorithm } f := &configFactory{} - binderFunc := f.getBinderFunc(extenders) + binderFunc := getBinderFunc(f.client, extenders) binder := binderFunc(pod) binderType := fmt.Sprintf("%s", reflect.TypeOf(binder))