mirror of https://github.com/k3s-io/k3s
Rename func name according TODO
parent
5911f87dad
commit
5deb5f4913
|
@ -32,7 +32,7 @@ type PriorityMetadataFactory struct {
|
||||||
statefulSetLister algorithm.StatefulSetLister
|
statefulSetLister algorithm.StatefulSetLister
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPriorityMetadataFactory(serviceLister algorithm.ServiceLister, controllerLister algorithm.ControllerLister, replicaSetLister algorithm.ReplicaSetLister, statefulSetLister algorithm.StatefulSetLister) algorithm.MetadataProducer {
|
func NewPriorityMetadataFactory(serviceLister algorithm.ServiceLister, controllerLister algorithm.ControllerLister, replicaSetLister algorithm.ReplicaSetLister, statefulSetLister algorithm.StatefulSetLister) algorithm.PriorityMetadataProducer {
|
||||||
factory := &PriorityMetadataFactory{
|
factory := &PriorityMetadataFactory{
|
||||||
serviceLister: serviceLister,
|
serviceLister: serviceLister,
|
||||||
controllerLister: controllerLister,
|
controllerLister: controllerLister,
|
||||||
|
@ -52,7 +52,7 @@ type priorityMetadata struct {
|
||||||
podFirstServiceSelector labels.Selector
|
podFirstServiceSelector labels.Selector
|
||||||
}
|
}
|
||||||
|
|
||||||
// PriorityMetadata is a MetadataProducer. Node info can be nil.
|
// PriorityMetadata is a PriorityMetadataProducer. Node info can be nil.
|
||||||
func (pmf *PriorityMetadataFactory) PriorityMetadata(pod *v1.Pod, nodeNameToInfo map[string]*schedulercache.NodeInfo) interface{} {
|
func (pmf *PriorityMetadataFactory) PriorityMetadata(pod *v1.Pod, nodeNameToInfo map[string]*schedulercache.NodeInfo) interface{} {
|
||||||
// If we cannot compute metadata, just return nil
|
// If we cannot compute metadata, just return nil
|
||||||
if pod == nil {
|
if pod == nil {
|
||||||
|
|
|
@ -43,10 +43,9 @@ type PriorityReduceFunction func(pod *v1.Pod, meta interface{}, nodeNameToInfo m
|
||||||
// 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]*schedulercache.NodeInfo) PredicateMetadata
|
type PredicateMetadataProducer func(pod *v1.Pod, nodeNameToInfo map[string]*schedulercache.NodeInfo) PredicateMetadata
|
||||||
|
|
||||||
// MetadataProducer is a function that computes metadata for a given pod. This
|
// PriorityMetadataProducer is a function that computes metadata for a given pod. This
|
||||||
// is now used for only for priority functions. For predicates please use PredicateMetadataProducer.
|
// is now used for only for priority functions. For predicates please use PredicateMetadataProducer.
|
||||||
// TODO: Rename this once we have a specific type for priority metadata producer.
|
type PriorityMetadataProducer func(pod *v1.Pod, nodeNameToInfo map[string]*schedulercache.NodeInfo) interface{}
|
||||||
type MetadataProducer func(pod *v1.Pod, nodeNameToInfo map[string]*schedulercache.NodeInfo) interface{}
|
|
||||||
|
|
||||||
// DEPRECATED
|
// DEPRECATED
|
||||||
// Use Map-Reduce pattern for priority functions.
|
// Use Map-Reduce pattern for priority functions.
|
||||||
|
@ -67,8 +66,8 @@ func EmptyPredicateMetadataProducer(pod *v1.Pod, nodeNameToInfo map[string]*sche
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// EmptyMetadataProducer returns a no-op MetadataProducer type.
|
// EmptyPriorityMetadataProducer returns a no-op PriorityMetadataProducer type.
|
||||||
func EmptyMetadataProducer(pod *v1.Pod, nodeNameToInfo map[string]*schedulercache.NodeInfo) interface{} {
|
func EmptyPriorityMetadataProducer(pod *v1.Pod, nodeNameToInfo map[string]*schedulercache.NodeInfo) interface{} {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,8 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/scheduler/schedulercache"
|
"k8s.io/kubernetes/pkg/scheduler/schedulercache"
|
||||||
)
|
)
|
||||||
|
|
||||||
// EmptyMetadataProducer should returns a no-op MetadataProducer type.
|
// EmptyPriorityMetadataProducer should returns a no-op PriorityMetadataProducer type.
|
||||||
func TestEmptyMetadataProducer(t *testing.T) {
|
func TestEmptyPriorityMetadataProducer(t *testing.T) {
|
||||||
fakePod := new(v1.Pod)
|
fakePod := new(v1.Pod)
|
||||||
fakeLabelSelector := labels.SelectorFromSet(labels.Set{"foo": "bar"})
|
fakeLabelSelector := labels.SelectorFromSet(labels.Set{"foo": "bar"})
|
||||||
|
|
||||||
|
@ -33,8 +33,8 @@ func TestEmptyMetadataProducer(t *testing.T) {
|
||||||
"2": schedulercache.NewNodeInfo(fakePod),
|
"2": schedulercache.NewNodeInfo(fakePod),
|
||||||
"1": schedulercache.NewNodeInfo(),
|
"1": schedulercache.NewNodeInfo(),
|
||||||
}
|
}
|
||||||
// Test EmptyMetadataProducer
|
// Test EmptyPriorityMetadataProducer
|
||||||
metadata := EmptyMetadataProducer(fakePod, nodeNameToInfo)
|
metadata := EmptyPriorityMetadataProducer(fakePod, nodeNameToInfo)
|
||||||
if metadata != nil {
|
if metadata != nil {
|
||||||
t.Errorf("failed to produce empty metadata: got %v, expected nil", metadata)
|
t.Errorf("failed to produce empty metadata: got %v, expected nil", metadata)
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ func init() {
|
||||||
return predicates.NewPredicateMetadataFactory(args.PodLister)
|
return predicates.NewPredicateMetadataFactory(args.PodLister)
|
||||||
})
|
})
|
||||||
factory.RegisterPriorityMetadataProducerFactory(
|
factory.RegisterPriorityMetadataProducerFactory(
|
||||||
func(args factory.PluginFactoryArgs) algorithm.MetadataProducer {
|
func(args factory.PluginFactoryArgs) algorithm.PriorityMetadataProducer {
|
||||||
return priorities.NewPriorityMetadataFactory(args.ServiceLister, args.ControllerLister, args.ReplicaSetLister, args.StatefulSetLister)
|
return priorities.NewPriorityMetadataFactory(args.ServiceLister, args.ControllerLister, args.ReplicaSetLister, args.StatefulSetLister)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -317,7 +317,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
|
||||||
}
|
}
|
||||||
queue := NewSchedulingQueue()
|
queue := NewSchedulingQueue()
|
||||||
scheduler := NewGenericScheduler(
|
scheduler := NewGenericScheduler(
|
||||||
cache, nil, queue, test.predicates, algorithm.EmptyPredicateMetadataProducer, test.prioritizers, algorithm.EmptyMetadataProducer, extenders, nil, schedulertesting.FakePersistentVolumeClaimLister{}, false)
|
cache, nil, queue, test.predicates, algorithm.EmptyPredicateMetadataProducer, test.prioritizers, algorithm.EmptyPriorityMetadataProducer, extenders, nil, schedulertesting.FakePersistentVolumeClaimLister{}, false)
|
||||||
podIgnored := &v1.Pod{}
|
podIgnored := &v1.Pod{}
|
||||||
machine, err := scheduler.Schedule(podIgnored, schedulertesting.FakeNodeLister(makeNodeList(test.nodes)))
|
machine, err := scheduler.Schedule(podIgnored, schedulertesting.FakeNodeLister(makeNodeList(test.nodes)))
|
||||||
if test.expectsErr {
|
if test.expectsErr {
|
||||||
|
|
|
@ -94,17 +94,16 @@ type genericScheduler struct {
|
||||||
equivalenceCache *EquivalenceCache
|
equivalenceCache *EquivalenceCache
|
||||||
schedulingQueue SchedulingQueue
|
schedulingQueue SchedulingQueue
|
||||||
predicates map[string]algorithm.FitPredicate
|
predicates map[string]algorithm.FitPredicate
|
||||||
priorityMetaProducer algorithm.MetadataProducer
|
priorityMetaProducer algorithm.PriorityMetadataProducer
|
||||||
predicateMetaProducer algorithm.PredicateMetadataProducer
|
predicateMetaProducer algorithm.PredicateMetadataProducer
|
||||||
prioritizers []algorithm.PriorityConfig
|
prioritizers []algorithm.PriorityConfig
|
||||||
extenders []algorithm.SchedulerExtender
|
extenders []algorithm.SchedulerExtender
|
||||||
lastNodeIndexLock sync.Mutex
|
lastNodeIndexLock sync.Mutex
|
||||||
lastNodeIndex uint64
|
lastNodeIndex uint64
|
||||||
alwaysCheckAllPredicates bool
|
alwaysCheckAllPredicates bool
|
||||||
|
cachedNodeInfoMap map[string]*schedulercache.NodeInfo
|
||||||
cachedNodeInfoMap map[string]*schedulercache.NodeInfo
|
volumeBinder *volumebinder.VolumeBinder
|
||||||
volumeBinder *volumebinder.VolumeBinder
|
pvcLister corelisters.PersistentVolumeClaimLister
|
||||||
pvcLister corelisters.PersistentVolumeClaimLister
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Schedule tries to schedule the given pod to one of node in the node list.
|
// Schedule tries to schedule the given pod to one of node in the node list.
|
||||||
|
@ -1048,7 +1047,7 @@ func NewGenericScheduler(
|
||||||
predicates map[string]algorithm.FitPredicate,
|
predicates map[string]algorithm.FitPredicate,
|
||||||
predicateMetaProducer algorithm.PredicateMetadataProducer,
|
predicateMetaProducer algorithm.PredicateMetadataProducer,
|
||||||
prioritizers []algorithm.PriorityConfig,
|
prioritizers []algorithm.PriorityConfig,
|
||||||
priorityMetaProducer algorithm.MetadataProducer,
|
priorityMetaProducer algorithm.PriorityMetadataProducer,
|
||||||
extenders []algorithm.SchedulerExtender,
|
extenders []algorithm.SchedulerExtender,
|
||||||
volumeBinder *volumebinder.VolumeBinder,
|
volumeBinder *volumebinder.VolumeBinder,
|
||||||
pvcLister corelisters.PersistentVolumeClaimLister,
|
pvcLister corelisters.PersistentVolumeClaimLister,
|
||||||
|
|
|
@ -410,7 +410,7 @@ func TestGenericScheduler(t *testing.T) {
|
||||||
pvcLister := schedulertesting.FakePersistentVolumeClaimLister(pvcs)
|
pvcLister := schedulertesting.FakePersistentVolumeClaimLister(pvcs)
|
||||||
|
|
||||||
scheduler := NewGenericScheduler(
|
scheduler := NewGenericScheduler(
|
||||||
cache, nil, NewSchedulingQueue(), test.predicates, algorithm.EmptyPredicateMetadataProducer, test.prioritizers, algorithm.EmptyMetadataProducer, []algorithm.SchedulerExtender{}, nil, pvcLister, test.alwaysCheckAllPredicates)
|
cache, nil, NewSchedulingQueue(), test.predicates, algorithm.EmptyPredicateMetadataProducer, test.prioritizers, algorithm.EmptyPriorityMetadataProducer, []algorithm.SchedulerExtender{}, nil, pvcLister, test.alwaysCheckAllPredicates)
|
||||||
machine, err := scheduler.Schedule(test.pod, schedulertesting.FakeNodeLister(makeNodeList(test.nodes)))
|
machine, err := scheduler.Schedule(test.pod, schedulertesting.FakeNodeLister(makeNodeList(test.nodes)))
|
||||||
|
|
||||||
if !reflect.DeepEqual(err, test.wErr) {
|
if !reflect.DeepEqual(err, test.wErr) {
|
||||||
|
@ -1293,7 +1293,7 @@ func TestPreempt(t *testing.T) {
|
||||||
extenders = append(extenders, extender)
|
extenders = append(extenders, extender)
|
||||||
}
|
}
|
||||||
scheduler := NewGenericScheduler(
|
scheduler := NewGenericScheduler(
|
||||||
cache, nil, NewSchedulingQueue(), map[string]algorithm.FitPredicate{"matches": algorithmpredicates.PodFitsResources}, algorithm.EmptyPredicateMetadataProducer, []algorithm.PriorityConfig{{Function: numericPriority, Weight: 1}}, algorithm.EmptyMetadataProducer, extenders, nil, schedulertesting.FakePersistentVolumeClaimLister{}, false)
|
cache, nil, NewSchedulingQueue(), map[string]algorithm.FitPredicate{"matches": algorithmpredicates.PodFitsResources}, algorithm.EmptyPredicateMetadataProducer, []algorithm.PriorityConfig{{Function: numericPriority, Weight: 1}}, algorithm.EmptyPriorityMetadataProducer, extenders, nil, schedulertesting.FakePersistentVolumeClaimLister{}, false)
|
||||||
// Call Preempt and check the expected results.
|
// Call Preempt and check the expected results.
|
||||||
node, victims, _, err := scheduler.Preempt(test.pod, schedulertesting.FakeNodeLister(makeNodeList(nodeNames)), error(&FitError{Pod: test.pod, FailedPredicates: failedPredMap}))
|
node, victims, _, err := scheduler.Preempt(test.pod, schedulertesting.FakeNodeLister(makeNodeList(nodeNames)), error(&FitError{Pod: test.pod, FailedPredicates: failedPredMap}))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -983,7 +983,7 @@ func (f *configFactory) GetPriorityFunctionConfigs(priorityKeys sets.String) ([]
|
||||||
return getPriorityFunctionConfigs(priorityKeys, *pluginArgs)
|
return getPriorityFunctionConfigs(priorityKeys, *pluginArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *configFactory) GetPriorityMetadataProducer() (algorithm.MetadataProducer, error) {
|
func (f *configFactory) GetPriorityMetadataProducer() (algorithm.PriorityMetadataProducer, error) {
|
||||||
pluginArgs, err := f.getPluginArgs()
|
pluginArgs, err := f.getPluginArgs()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
@ -49,9 +49,8 @@ type PluginFactoryArgs struct {
|
||||||
HardPodAffinitySymmetricWeight int32
|
HardPodAffinitySymmetricWeight int32
|
||||||
}
|
}
|
||||||
|
|
||||||
// MetadataProducerFactory produces MetadataProducer from the given args.
|
// PriorityMetadataProducerFactory produces PriorityMetadataProducer from the given args.
|
||||||
// TODO: Rename this to PriorityMetadataProducerFactory.
|
type PriorityMetadataProducerFactory func(PluginFactoryArgs) algorithm.PriorityMetadataProducer
|
||||||
type MetadataProducerFactory func(PluginFactoryArgs) algorithm.MetadataProducer
|
|
||||||
|
|
||||||
// PredicateMetadataProducerFactory produces PredicateMetadataProducer from the given args.
|
// PredicateMetadataProducerFactory produces PredicateMetadataProducer from the given args.
|
||||||
type PredicateMetadataProducerFactory func(PluginFactoryArgs) algorithm.PredicateMetadataProducer
|
type PredicateMetadataProducerFactory func(PluginFactoryArgs) algorithm.PredicateMetadataProducer
|
||||||
|
@ -89,7 +88,7 @@ var (
|
||||||
algorithmProviderMap = make(map[string]AlgorithmProviderConfig)
|
algorithmProviderMap = make(map[string]AlgorithmProviderConfig)
|
||||||
|
|
||||||
// Registered metadata producers
|
// Registered metadata producers
|
||||||
priorityMetadataProducer MetadataProducerFactory
|
priorityMetadataProducer PriorityMetadataProducerFactory
|
||||||
predicateMetadataProducer PredicateMetadataProducerFactory
|
predicateMetadataProducer PredicateMetadataProducerFactory
|
||||||
|
|
||||||
// get equivalence pod function
|
// get equivalence pod function
|
||||||
|
@ -245,7 +244,7 @@ func IsFitPredicateRegistered(name string) bool {
|
||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
func RegisterPriorityMetadataProducerFactory(factory MetadataProducerFactory) {
|
func RegisterPriorityMetadataProducerFactory(factory PriorityMetadataProducerFactory) {
|
||||||
schedulerFactoryMutex.Lock()
|
schedulerFactoryMutex.Lock()
|
||||||
defer schedulerFactoryMutex.Unlock()
|
defer schedulerFactoryMutex.Unlock()
|
||||||
priorityMetadataProducer = factory
|
priorityMetadataProducer = factory
|
||||||
|
@ -404,12 +403,12 @@ func getFitPredicateFunctions(names sets.String, args PluginFactoryArgs) (map[st
|
||||||
return predicates, nil
|
return predicates, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getPriorityMetadataProducer(args PluginFactoryArgs) (algorithm.MetadataProducer, error) {
|
func getPriorityMetadataProducer(args PluginFactoryArgs) (algorithm.PriorityMetadataProducer, error) {
|
||||||
schedulerFactoryMutex.Lock()
|
schedulerFactoryMutex.Lock()
|
||||||
defer schedulerFactoryMutex.Unlock()
|
defer schedulerFactoryMutex.Unlock()
|
||||||
|
|
||||||
if priorityMetadataProducer == nil {
|
if priorityMetadataProducer == nil {
|
||||||
return algorithm.EmptyMetadataProducer, nil
|
return algorithm.EmptyPriorityMetadataProducer, nil
|
||||||
}
|
}
|
||||||
return priorityMetadataProducer(args), nil
|
return priorityMetadataProducer(args), nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,7 @@ func (sched *Scheduler) StopEverything() {
|
||||||
// factory.go.
|
// factory.go.
|
||||||
type Configurator interface {
|
type Configurator interface {
|
||||||
GetPriorityFunctionConfigs(priorityKeys sets.String) ([]algorithm.PriorityConfig, error)
|
GetPriorityFunctionConfigs(priorityKeys sets.String) ([]algorithm.PriorityConfig, error)
|
||||||
GetPriorityMetadataProducer() (algorithm.MetadataProducer, error)
|
GetPriorityMetadataProducer() (algorithm.PriorityMetadataProducer, error)
|
||||||
GetPredicateMetadataProducer() (algorithm.PredicateMetadataProducer, error)
|
GetPredicateMetadataProducer() (algorithm.PredicateMetadataProducer, error)
|
||||||
GetPredicates(predicateKeys sets.String) (map[string]algorithm.FitPredicate, error)
|
GetPredicates(predicateKeys sets.String) (map[string]algorithm.FitPredicate, error)
|
||||||
GetHardPodAffinitySymmetricWeight() int32
|
GetHardPodAffinitySymmetricWeight() int32
|
||||||
|
|
|
@ -530,7 +530,7 @@ func setupTestScheduler(queuedPodStore *clientcache.FIFO, scache schedulercache.
|
||||||
predicateMap,
|
predicateMap,
|
||||||
algorithm.EmptyPredicateMetadataProducer,
|
algorithm.EmptyPredicateMetadataProducer,
|
||||||
[]algorithm.PriorityConfig{},
|
[]algorithm.PriorityConfig{},
|
||||||
algorithm.EmptyMetadataProducer,
|
algorithm.EmptyPriorityMetadataProducer,
|
||||||
[]algorithm.SchedulerExtender{},
|
[]algorithm.SchedulerExtender{},
|
||||||
nil,
|
nil,
|
||||||
schedulertesting.FakePersistentVolumeClaimLister{},
|
schedulertesting.FakePersistentVolumeClaimLister{},
|
||||||
|
@ -575,7 +575,7 @@ func setupTestSchedulerLongBindingWithRetry(queuedPodStore *clientcache.FIFO, sc
|
||||||
predicateMap,
|
predicateMap,
|
||||||
algorithm.EmptyPredicateMetadataProducer,
|
algorithm.EmptyPredicateMetadataProducer,
|
||||||
[]algorithm.PriorityConfig{},
|
[]algorithm.PriorityConfig{},
|
||||||
algorithm.EmptyMetadataProducer,
|
algorithm.EmptyPriorityMetadataProducer,
|
||||||
[]algorithm.SchedulerExtender{},
|
[]algorithm.SchedulerExtender{},
|
||||||
nil,
|
nil,
|
||||||
schedulertesting.FakePersistentVolumeClaimLister{},
|
schedulertesting.FakePersistentVolumeClaimLister{},
|
||||||
|
|
|
@ -40,7 +40,7 @@ func (fc *FakeConfigurator) GetPriorityFunctionConfigs(priorityKeys sets.String)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPriorityMetadataProducer is not implemented yet.
|
// GetPriorityMetadataProducer is not implemented yet.
|
||||||
func (fc *FakeConfigurator) GetPriorityMetadataProducer() (algorithm.MetadataProducer, error) {
|
func (fc *FakeConfigurator) GetPriorityMetadataProducer() (algorithm.PriorityMetadataProducer, error) {
|
||||||
return nil, fmt.Errorf("not implemented")
|
return nil, fmt.Errorf("not implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue