Merge pull request #81777 from mrkm4ntr/remove-pod-lister

Remove unnecessary factory layer
This commit is contained in:
Kubernetes Prow Robot 2019-09-10 14:32:15 -07:00 committed by GitHub
commit 7351f1acd7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 14 additions and 42 deletions

View File

@ -29,7 +29,6 @@ import (
"k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/util/workqueue" "k8s.io/client-go/util/workqueue"
"k8s.io/kubernetes/pkg/scheduler/algorithm"
priorityutil "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util" priorityutil "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util"
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo" schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
schedutil "k8s.io/kubernetes/pkg/scheduler/util" 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. // PredicateMetadataProducer is a function that computes predicate metadata for a given pod.
type PredicateMetadataProducer func(pod *v1.Pod, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo) PredicateMetadata 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 // AntiAffinityTerm's topology key value used in predicate metadata
type topologyPair struct { type topologyPair struct {
key string key string
@ -190,16 +184,8 @@ func RegisterPredicateMetadataProducerWithExtendedResourceOptions(ignoredExtende
}) })
} }
// NewPredicateMetadataFactory creates a PredicateMetadataFactory. // GetPredicateMetadata returns the predicateMetadata which will be used by various predicates.
func NewPredicateMetadataFactory(podLister algorithm.PodLister) PredicateMetadataProducer { func GetPredicateMetadata(pod *v1.Pod, nodeNameToInfoMap map[string]*schedulernodeinfo.NodeInfo) PredicateMetadata {
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 {
// If we cannot compute metadata, just return nil // If we cannot compute metadata, just return nil
if pod == nil { if pod == nil {
return nil return nil

View File

@ -364,8 +364,7 @@ func TestPredicateMetadata_AddRemovePod(t *testing.T) {
} }
_, precompute := NewServiceAffinityPredicate(lister, st.FakeServiceLister(test.services), FakeNodeListInfo(nodeList), nil) _, precompute := NewServiceAffinityPredicate(lister, st.FakeServiceLister(test.services), FakeNodeListInfo(nodeList), nil)
RegisterPredicateMetadataProducer("ServiceAffinityMetaProducer", precompute) RegisterPredicateMetadataProducer("ServiceAffinityMetaProducer", precompute)
pmf := PredicateMetadataFactory{lister} meta := GetPredicateMetadata(test.pendingPod, nodeInfoMap)
meta := pmf.GetMetadata(test.pendingPod, nodeInfoMap)
return meta.(*predicateMetadata), nodeInfoMap return meta.(*predicateMetadata), nodeInfoMap
} }

View File

@ -93,12 +93,6 @@ func newResourceOverheadPod(pod *v1.Pod, overhead v1.ResourceList) *v1.Pod {
pod.Spec.Overhead = overhead pod.Spec.Overhead = overhead
return pod 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) { func TestPodFitsResources(t *testing.T) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PodOverhead, true)() defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PodOverhead, true)()

View File

@ -23,10 +23,7 @@ import (
func init() { func init() {
// Register functions that extract metadata used by predicates computations. // Register functions that extract metadata used by predicates computations.
factory.RegisterPredicateMetadataProducerFactory( factory.RegisterPredicateMetadataProducer(predicates.GetPredicateMetadata)
func(args factory.PluginFactoryArgs) predicates.PredicateMetadataProducer {
return predicates.NewPredicateMetadataFactory(args.PodLister)
})
// IMPORTANT NOTES for predicate developers: // IMPORTANT NOTES for predicate developers:
// Registers predicates and priorities that are not enabled by default, but user can pick when creating their // Registers predicates and priorities that are not enabled by default, but user can pick when creating their

View File

@ -653,7 +653,7 @@ func TestGenericScheduler(t *testing.T) {
predMetaProducer := algorithmpredicates.EmptyPredicateMetadataProducer predMetaProducer := algorithmpredicates.EmptyPredicateMetadataProducer
if test.buildPredMeta { if test.buildPredMeta {
predMetaProducer = algorithmpredicates.NewPredicateMetadataFactory(schedulertesting.FakePodLister(test.pods)) predMetaProducer = algorithmpredicates.GetPredicateMetadata
} }
scheduler := NewGenericScheduler( scheduler := NewGenericScheduler(
cache, 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 { 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{ var smallContainers = []v1.Container{
@ -2109,7 +2109,7 @@ func TestPreempt(t *testing.T) {
} }
predMetaProducer := algorithmpredicates.EmptyPredicateMetadataProducer predMetaProducer := algorithmpredicates.EmptyPredicateMetadataProducer
if test.buildPredMeta { if test.buildPredMeta {
predMetaProducer = algorithmpredicates.NewPredicateMetadataFactory(schedulertesting.FakePodLister(test.pods)) predMetaProducer = algorithmpredicates.GetPredicateMetadata
} }
scheduler := NewGenericScheduler( scheduler := NewGenericScheduler(
cache, cache,

View File

@ -475,11 +475,7 @@ func (c *Configurator) getPriorityMetadataProducer() (priorities.PriorityMetadat
// GetPredicateMetadataProducer returns a function to build Predicate Metadata. // GetPredicateMetadataProducer returns a function to build Predicate Metadata.
// It is used by the scheduler and other components, such as k8s.io/autoscaler/cluster-autoscaler. // It is used by the scheduler and other components, such as k8s.io/autoscaler/cluster-autoscaler.
func (c *Configurator) GetPredicateMetadataProducer() (predicates.PredicateMetadataProducer, error) { func (c *Configurator) GetPredicateMetadataProducer() (predicates.PredicateMetadataProducer, error) {
pluginArgs, err := c.getPluginArgs() return getPredicateMetadataProducer()
if err != nil {
return nil, err
}
return getPredicateMetadataProducer(*pluginArgs)
} }
// GetPredicates returns the predicate functions. // GetPredicates returns the predicate functions.

View File

@ -88,7 +88,7 @@ var (
// Registered metadata producers // Registered metadata producers
priorityMetadataProducer PriorityMetadataProducerFactory priorityMetadataProducer PriorityMetadataProducerFactory
predicateMetadataProducer PredicateMetadataProducerFactory predicateMetadataProducer predicates.PredicateMetadataProducer
) )
const ( const (
@ -313,11 +313,11 @@ func RegisterPriorityMetadataProducerFactory(factory PriorityMetadataProducerFac
priorityMetadataProducer = factory priorityMetadataProducer = factory
} }
// RegisterPredicateMetadataProducerFactory registers a PredicateMetadataProducerFactory. // RegisterPredicateMetadataProducer registers a PredicateMetadataProducer.
func RegisterPredicateMetadataProducerFactory(factory PredicateMetadataProducerFactory) { func RegisterPredicateMetadataProducer(producer predicates.PredicateMetadataProducer) {
schedulerFactoryMutex.Lock() schedulerFactoryMutex.Lock()
defer schedulerFactoryMutex.Unlock() defer schedulerFactoryMutex.Unlock()
predicateMetadataProducer = factory predicateMetadataProducer = producer
} }
// RegisterPriorityFunction registers a priority function with the algorithm registry. Returns the name, // 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 return priorityMetadataProducer(args), nil
} }
func getPredicateMetadataProducer(args PluginFactoryArgs) (predicates.PredicateMetadataProducer, error) { func getPredicateMetadataProducer() (predicates.PredicateMetadataProducer, error) {
schedulerFactoryMutex.Lock() schedulerFactoryMutex.Lock()
defer schedulerFactoryMutex.Unlock() defer schedulerFactoryMutex.Unlock()
if predicateMetadataProducer == nil { if predicateMetadataProducer == nil {
return predicates.EmptyPredicateMetadataProducer, nil return predicates.EmptyPredicateMetadataProducer, nil
} }
return predicateMetadataProducer(args), nil return predicateMetadataProducer, nil
} }
func getPriorityFunctionConfigs(names sets.String, args PluginFactoryArgs) ([]priorities.PriorityConfig, error) { func getPriorityFunctionConfigs(names sets.String, args PluginFactoryArgs) ([]priorities.PriorityConfig, error) {