diff --git a/pkg/scheduler/algorithm/predicates/metadata.go b/pkg/scheduler/algorithm/predicates/metadata.go index 3e317f946c8..971db1bf6c3 100644 --- a/pkg/scheduler/algorithm/predicates/metadata.go +++ b/pkg/scheduler/algorithm/predicates/metadata.go @@ -29,7 +29,6 @@ import ( "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/client-go/util/workqueue" - "k8s.io/kubernetes/pkg/scheduler/algorithm" priorityutil "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util" schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo" schedutil "k8s.io/kubernetes/pkg/scheduler/util" @@ -45,11 +44,6 @@ type PredicateMetadata interface { // PredicateMetadataProducer is a function that computes predicate metadata for a given pod. type PredicateMetadataProducer func(pod *v1.Pod, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo) PredicateMetadata -// PredicateMetadataFactory defines a factory of predicate metadata. -type PredicateMetadataFactory struct { - podLister algorithm.PodLister -} - // AntiAffinityTerm's topology key value used in predicate metadata type topologyPair struct { key string @@ -190,16 +184,8 @@ func RegisterPredicateMetadataProducerWithExtendedResourceOptions(ignoredExtende }) } -// NewPredicateMetadataFactory creates a PredicateMetadataFactory. -func NewPredicateMetadataFactory(podLister algorithm.PodLister) PredicateMetadataProducer { - factory := &PredicateMetadataFactory{ - podLister, - } - return factory.GetMetadata -} - -// GetMetadata returns the predicateMetadata used which will be used by various predicates. -func (pfactory *PredicateMetadataFactory) GetMetadata(pod *v1.Pod, nodeNameToInfoMap map[string]*schedulernodeinfo.NodeInfo) PredicateMetadata { +// GetPredicateMetadata returns the predicateMetadata which will be used by various predicates. +func GetPredicateMetadata(pod *v1.Pod, nodeNameToInfoMap map[string]*schedulernodeinfo.NodeInfo) PredicateMetadata { // If we cannot compute metadata, just return nil if pod == nil { return nil diff --git a/pkg/scheduler/algorithm/predicates/metadata_test.go b/pkg/scheduler/algorithm/predicates/metadata_test.go index d7e4ea8b686..7c036ab3fe3 100644 --- a/pkg/scheduler/algorithm/predicates/metadata_test.go +++ b/pkg/scheduler/algorithm/predicates/metadata_test.go @@ -364,8 +364,7 @@ func TestPredicateMetadata_AddRemovePod(t *testing.T) { } _, precompute := NewServiceAffinityPredicate(lister, st.FakeServiceLister(test.services), FakeNodeListInfo(nodeList), nil) RegisterPredicateMetadataProducer("ServiceAffinityMetaProducer", precompute) - pmf := PredicateMetadataFactory{lister} - meta := pmf.GetMetadata(test.pendingPod, nodeInfoMap) + meta := GetPredicateMetadata(test.pendingPod, nodeInfoMap) return meta.(*predicateMetadata), nodeInfoMap } diff --git a/pkg/scheduler/algorithm/predicates/predicates_test.go b/pkg/scheduler/algorithm/predicates/predicates_test.go index a48484ead18..236d3174ded 100644 --- a/pkg/scheduler/algorithm/predicates/predicates_test.go +++ b/pkg/scheduler/algorithm/predicates/predicates_test.go @@ -93,12 +93,6 @@ func newResourceOverheadPod(pod *v1.Pod, overhead v1.ResourceList) *v1.Pod { pod.Spec.Overhead = overhead return pod } - -func GetPredicateMetadata(p *v1.Pod, nodeInfo map[string]*schedulernodeinfo.NodeInfo) PredicateMetadata { - pm := PredicateMetadataFactory{st.FakePodLister{p}} - return pm.GetMetadata(p, nodeInfo) -} - func TestPodFitsResources(t *testing.T) { defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PodOverhead, true)() diff --git a/pkg/scheduler/algorithmprovider/defaults/register_predicates.go b/pkg/scheduler/algorithmprovider/defaults/register_predicates.go index eb6bd09618a..7f16c65060b 100644 --- a/pkg/scheduler/algorithmprovider/defaults/register_predicates.go +++ b/pkg/scheduler/algorithmprovider/defaults/register_predicates.go @@ -23,10 +23,7 @@ import ( func init() { // Register functions that extract metadata used by predicates computations. - factory.RegisterPredicateMetadataProducerFactory( - func(args factory.PluginFactoryArgs) predicates.PredicateMetadataProducer { - return predicates.NewPredicateMetadataFactory(args.PodLister) - }) + factory.RegisterPredicateMetadataProducer(predicates.GetPredicateMetadata) // IMPORTANT NOTES for predicate developers: // Registers predicates and priorities that are not enabled by default, but user can pick when creating their diff --git a/pkg/scheduler/core/generic_scheduler_test.go b/pkg/scheduler/core/generic_scheduler_test.go index d5af700ec87..424073417ca 100644 --- a/pkg/scheduler/core/generic_scheduler_test.go +++ b/pkg/scheduler/core/generic_scheduler_test.go @@ -653,7 +653,7 @@ func TestGenericScheduler(t *testing.T) { predMetaProducer := algorithmpredicates.EmptyPredicateMetadataProducer if test.buildPredMeta { - predMetaProducer = algorithmpredicates.NewPredicateMetadataFactory(schedulertesting.FakePodLister(test.pods)) + predMetaProducer = algorithmpredicates.GetPredicateMetadata } scheduler := NewGenericScheduler( cache, @@ -1054,7 +1054,7 @@ func (n FakeNodeInfo) GetNodeInfo(nodeName string) (*v1.Node, error) { } func PredicateMetadata(p *v1.Pod, nodeInfo map[string]*schedulernodeinfo.NodeInfo) algorithmpredicates.PredicateMetadata { - return algorithmpredicates.NewPredicateMetadataFactory(schedulertesting.FakePodLister{p})(p, nodeInfo) + return algorithmpredicates.GetPredicateMetadata(p, nodeInfo) } var smallContainers = []v1.Container{ @@ -2109,7 +2109,7 @@ func TestPreempt(t *testing.T) { } predMetaProducer := algorithmpredicates.EmptyPredicateMetadataProducer if test.buildPredMeta { - predMetaProducer = algorithmpredicates.NewPredicateMetadataFactory(schedulertesting.FakePodLister(test.pods)) + predMetaProducer = algorithmpredicates.GetPredicateMetadata } scheduler := NewGenericScheduler( cache, diff --git a/pkg/scheduler/factory/factory.go b/pkg/scheduler/factory/factory.go index 399a6bdf66c..06fd30f726f 100644 --- a/pkg/scheduler/factory/factory.go +++ b/pkg/scheduler/factory/factory.go @@ -475,11 +475,7 @@ func (c *Configurator) getPriorityMetadataProducer() (priorities.PriorityMetadat // GetPredicateMetadataProducer returns a function to build Predicate Metadata. // It is used by the scheduler and other components, such as k8s.io/autoscaler/cluster-autoscaler. func (c *Configurator) GetPredicateMetadataProducer() (predicates.PredicateMetadataProducer, error) { - pluginArgs, err := c.getPluginArgs() - if err != nil { - return nil, err - } - return getPredicateMetadataProducer(*pluginArgs) + return getPredicateMetadataProducer() } // GetPredicates returns the predicate functions. diff --git a/pkg/scheduler/factory/plugins.go b/pkg/scheduler/factory/plugins.go index d07c747ae2c..e7f2e7be1cf 100644 --- a/pkg/scheduler/factory/plugins.go +++ b/pkg/scheduler/factory/plugins.go @@ -88,7 +88,7 @@ var ( // Registered metadata producers priorityMetadataProducer PriorityMetadataProducerFactory - predicateMetadataProducer PredicateMetadataProducerFactory + predicateMetadataProducer predicates.PredicateMetadataProducer ) const ( @@ -313,11 +313,11 @@ func RegisterPriorityMetadataProducerFactory(factory PriorityMetadataProducerFac priorityMetadataProducer = factory } -// RegisterPredicateMetadataProducerFactory registers a PredicateMetadataProducerFactory. -func RegisterPredicateMetadataProducerFactory(factory PredicateMetadataProducerFactory) { +// RegisterPredicateMetadataProducer registers a PredicateMetadataProducer. +func RegisterPredicateMetadataProducer(producer predicates.PredicateMetadataProducer) { schedulerFactoryMutex.Lock() defer schedulerFactoryMutex.Unlock() - predicateMetadataProducer = factory + predicateMetadataProducer = producer } // RegisterPriorityFunction registers a priority function with the algorithm registry. Returns the name, @@ -505,14 +505,14 @@ func getPriorityMetadataProducer(args PluginFactoryArgs) (priorities.PriorityMet return priorityMetadataProducer(args), nil } -func getPredicateMetadataProducer(args PluginFactoryArgs) (predicates.PredicateMetadataProducer, error) { +func getPredicateMetadataProducer() (predicates.PredicateMetadataProducer, error) { schedulerFactoryMutex.Lock() defer schedulerFactoryMutex.Unlock() if predicateMetadataProducer == nil { return predicates.EmptyPredicateMetadataProducer, nil } - return predicateMetadataProducer(args), nil + return predicateMetadataProducer, nil } func getPriorityFunctionConfigs(names sets.String, args PluginFactoryArgs) ([]priorities.PriorityConfig, error) {