Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
5deb5f49
Commit
5deb5f49
authored
Jan 11, 2018
by
junxu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rename func name according TODO
parent
5911f87d
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
30 additions
and
33 deletions
+30
-33
metadata.go
pkg/scheduler/algorithm/priorities/metadata.go
+2
-2
types.go
pkg/scheduler/algorithm/types.go
+4
-5
types_test.go
pkg/scheduler/algorithm/types_test.go
+4
-4
defaults.go
pkg/scheduler/algorithmprovider/defaults/defaults.go
+1
-1
extender_test.go
pkg/scheduler/core/extender_test.go
+1
-1
generic_scheduler.go
pkg/scheduler/core/generic_scheduler.go
+5
-6
generic_scheduler_test.go
pkg/scheduler/core/generic_scheduler_test.go
+2
-2
factory.go
pkg/scheduler/factory/factory.go
+1
-1
plugins.go
pkg/scheduler/factory/plugins.go
+6
-7
scheduler.go
pkg/scheduler/scheduler.go
+1
-1
scheduler_test.go
pkg/scheduler/scheduler_test.go
+2
-2
testutil.go
pkg/scheduler/testutil.go
+1
-1
No files found.
pkg/scheduler/algorithm/priorities/metadata.go
View file @
5deb5f49
...
...
@@ -32,7 +32,7 @@ type PriorityMetadataFactory struct {
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
.
Priority
MetadataProducer
{
factory
:=
&
PriorityMetadataFactory
{
serviceLister
:
serviceLister
,
controllerLister
:
controllerLister
,
...
...
@@ -52,7 +52,7 @@ type priorityMetadata struct {
podFirstServiceSelector
labels
.
Selector
}
// PriorityMetadata is a MetadataProducer. Node info can be nil.
// PriorityMetadata is a
Priority
MetadataProducer. Node info can be nil.
func
(
pmf
*
PriorityMetadataFactory
)
PriorityMetadata
(
pod
*
v1
.
Pod
,
nodeNameToInfo
map
[
string
]
*
schedulercache
.
NodeInfo
)
interface
{}
{
// If we cannot compute metadata, just return nil
if
pod
==
nil
{
...
...
pkg/scheduler/algorithm/types.go
View file @
5deb5f49
...
...
@@ -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.
type
PredicateMetadataProducer
func
(
pod
*
v1
.
Pod
,
nodeNameToInfo
map
[
string
]
*
schedulercache
.
NodeInfo
)
PredicateMetadata
// MetadataProducer is a function that computes metadata for a given pod. This
//
Priority
MetadataProducer is a function that computes metadata for a given pod. This
// 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
MetadataProducer
func
(
pod
*
v1
.
Pod
,
nodeNameToInfo
map
[
string
]
*
schedulercache
.
NodeInfo
)
interface
{}
type
PriorityMetadataProducer
func
(
pod
*
v1
.
Pod
,
nodeNameToInfo
map
[
string
]
*
schedulercache
.
NodeInfo
)
interface
{}
// DEPRECATED
// Use Map-Reduce pattern for priority functions.
...
...
@@ -67,8 +66,8 @@ func EmptyPredicateMetadataProducer(pod *v1.Pod, nodeNameToInfo map[string]*sche
return
nil
}
// Empty
MetadataProducer returns a no-op
MetadataProducer type.
func
EmptyMetadataProducer
(
pod
*
v1
.
Pod
,
nodeNameToInfo
map
[
string
]
*
schedulercache
.
NodeInfo
)
interface
{}
{
// Empty
PriorityMetadataProducer returns a no-op Priority
MetadataProducer type.
func
Empty
Priority
MetadataProducer
(
pod
*
v1
.
Pod
,
nodeNameToInfo
map
[
string
]
*
schedulercache
.
NodeInfo
)
interface
{}
{
return
nil
}
...
...
pkg/scheduler/algorithm/types_test.go
View file @
5deb5f49
...
...
@@ -24,8 +24,8 @@ import (
"k8s.io/kubernetes/pkg/scheduler/schedulercache"
)
// Empty
MetadataProducer should returns a no-op
MetadataProducer type.
func
TestEmptyMetadataProducer
(
t
*
testing
.
T
)
{
// Empty
PriorityMetadataProducer should returns a no-op Priority
MetadataProducer type.
func
TestEmpty
Priority
MetadataProducer
(
t
*
testing
.
T
)
{
fakePod
:=
new
(
v1
.
Pod
)
fakeLabelSelector
:=
labels
.
SelectorFromSet
(
labels
.
Set
{
"foo"
:
"bar"
})
...
...
@@ -33,8 +33,8 @@ func TestEmptyMetadataProducer(t *testing.T) {
"2"
:
schedulercache
.
NewNodeInfo
(
fakePod
),
"1"
:
schedulercache
.
NewNodeInfo
(),
}
// Test EmptyMetadataProducer
metadata
:=
EmptyMetadataProducer
(
fakePod
,
nodeNameToInfo
)
// Test Empty
Priority
MetadataProducer
metadata
:=
Empty
Priority
MetadataProducer
(
fakePod
,
nodeNameToInfo
)
if
metadata
!=
nil
{
t
.
Errorf
(
"failed to produce empty metadata: got %v, expected nil"
,
metadata
)
}
...
...
pkg/scheduler/algorithmprovider/defaults/defaults.go
View file @
5deb5f49
...
...
@@ -42,7 +42,7 @@ func init() {
return
predicates
.
NewPredicateMetadataFactory
(
args
.
PodLister
)
})
factory
.
RegisterPriorityMetadataProducerFactory
(
func
(
args
factory
.
PluginFactoryArgs
)
algorithm
.
MetadataProducer
{
func
(
args
factory
.
PluginFactoryArgs
)
algorithm
.
Priority
MetadataProducer
{
return
priorities
.
NewPriorityMetadataFactory
(
args
.
ServiceLister
,
args
.
ControllerLister
,
args
.
ReplicaSetLister
,
args
.
StatefulSetLister
)
})
...
...
pkg/scheduler/core/extender_test.go
View file @
5deb5f49
...
...
@@ -317,7 +317,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
}
queue
:=
NewSchedulingQueue
()
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
.
Empty
Priority
MetadataProducer
,
extenders
,
nil
,
schedulertesting
.
FakePersistentVolumeClaimLister
{},
false
)
podIgnored
:=
&
v1
.
Pod
{}
machine
,
err
:=
scheduler
.
Schedule
(
podIgnored
,
schedulertesting
.
FakeNodeLister
(
makeNodeList
(
test
.
nodes
)))
if
test
.
expectsErr
{
...
...
pkg/scheduler/core/generic_scheduler.go
View file @
5deb5f49
...
...
@@ -94,17 +94,16 @@ type genericScheduler struct {
equivalenceCache
*
EquivalenceCache
schedulingQueue
SchedulingQueue
predicates
map
[
string
]
algorithm
.
FitPredicate
priorityMetaProducer
algorithm
.
MetadataProducer
priorityMetaProducer
algorithm
.
Priority
MetadataProducer
predicateMetaProducer
algorithm
.
PredicateMetadataProducer
prioritizers
[]
algorithm
.
PriorityConfig
extenders
[]
algorithm
.
SchedulerExtender
lastNodeIndexLock
sync
.
Mutex
lastNodeIndex
uint64
alwaysCheckAllPredicates
bool
cachedNodeInfoMap
map
[
string
]
*
schedulercache
.
NodeInfo
volumeBinder
*
volumebinder
.
VolumeBinder
pvcLister
corelisters
.
PersistentVolumeClaimLister
cachedNodeInfoMap
map
[
string
]
*
schedulercache
.
NodeInfo
volumeBinder
*
volumebinder
.
VolumeBinder
pvcLister
corelisters
.
PersistentVolumeClaimLister
}
// 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
,
predicateMetaProducer
algorithm
.
PredicateMetadataProducer
,
prioritizers
[]
algorithm
.
PriorityConfig
,
priorityMetaProducer
algorithm
.
MetadataProducer
,
priorityMetaProducer
algorithm
.
Priority
MetadataProducer
,
extenders
[]
algorithm
.
SchedulerExtender
,
volumeBinder
*
volumebinder
.
VolumeBinder
,
pvcLister
corelisters
.
PersistentVolumeClaimLister
,
...
...
pkg/scheduler/core/generic_scheduler_test.go
View file @
5deb5f49
...
...
@@ -410,7 +410,7 @@ func TestGenericScheduler(t *testing.T) {
pvcLister
:=
schedulertesting
.
FakePersistentVolumeClaimLister
(
pvcs
)
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
.
Empty
Priority
MetadataProducer
,
[]
algorithm
.
SchedulerExtender
{},
nil
,
pvcLister
,
test
.
alwaysCheckAllPredicates
)
machine
,
err
:=
scheduler
.
Schedule
(
test
.
pod
,
schedulertesting
.
FakeNodeLister
(
makeNodeList
(
test
.
nodes
)))
if
!
reflect
.
DeepEqual
(
err
,
test
.
wErr
)
{
...
...
@@ -1293,7 +1293,7 @@ func TestPreempt(t *testing.T) {
extenders
=
append
(
extenders
,
extender
)
}
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
.
Empty
Priority
MetadataProducer
,
extenders
,
nil
,
schedulertesting
.
FakePersistentVolumeClaimLister
{},
false
)
// 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
}))
if
err
!=
nil
{
...
...
pkg/scheduler/factory/factory.go
View file @
5deb5f49
...
...
@@ -983,7 +983,7 @@ func (f *configFactory) GetPriorityFunctionConfigs(priorityKeys sets.String) ([]
return
getPriorityFunctionConfigs
(
priorityKeys
,
*
pluginArgs
)
}
func
(
f
*
configFactory
)
GetPriorityMetadataProducer
()
(
algorithm
.
MetadataProducer
,
error
)
{
func
(
f
*
configFactory
)
GetPriorityMetadataProducer
()
(
algorithm
.
Priority
MetadataProducer
,
error
)
{
pluginArgs
,
err
:=
f
.
getPluginArgs
()
if
err
!=
nil
{
return
nil
,
err
...
...
pkg/scheduler/factory/plugins.go
View file @
5deb5f49
...
...
@@ -49,9 +49,8 @@ type PluginFactoryArgs struct {
HardPodAffinitySymmetricWeight
int32
}
// MetadataProducerFactory produces MetadataProducer from the given args.
// TODO: Rename this to PriorityMetadataProducerFactory.
type
MetadataProducerFactory
func
(
PluginFactoryArgs
)
algorithm
.
MetadataProducer
// PriorityMetadataProducerFactory produces PriorityMetadataProducer from the given args.
type
PriorityMetadataProducerFactory
func
(
PluginFactoryArgs
)
algorithm
.
PriorityMetadataProducer
// PredicateMetadataProducerFactory produces PredicateMetadataProducer from the given args.
type
PredicateMetadataProducerFactory
func
(
PluginFactoryArgs
)
algorithm
.
PredicateMetadataProducer
...
...
@@ -89,7 +88,7 @@ var (
algorithmProviderMap
=
make
(
map
[
string
]
AlgorithmProviderConfig
)
// Registered metadata producers
priorityMetadataProducer
MetadataProducerFactory
priorityMetadataProducer
Priority
MetadataProducerFactory
predicateMetadataProducer
PredicateMetadataProducerFactory
// get equivalence pod function
...
...
@@ -245,7 +244,7 @@ func IsFitPredicateRegistered(name string) bool {
return
ok
}
func
RegisterPriorityMetadataProducerFactory
(
factory
MetadataProducerFactory
)
{
func
RegisterPriorityMetadataProducerFactory
(
factory
Priority
MetadataProducerFactory
)
{
schedulerFactoryMutex
.
Lock
()
defer
schedulerFactoryMutex
.
Unlock
()
priorityMetadataProducer
=
factory
...
...
@@ -404,12 +403,12 @@ func getFitPredicateFunctions(names sets.String, args PluginFactoryArgs) (map[st
return
predicates
,
nil
}
func
getPriorityMetadataProducer
(
args
PluginFactoryArgs
)
(
algorithm
.
MetadataProducer
,
error
)
{
func
getPriorityMetadataProducer
(
args
PluginFactoryArgs
)
(
algorithm
.
Priority
MetadataProducer
,
error
)
{
schedulerFactoryMutex
.
Lock
()
defer
schedulerFactoryMutex
.
Unlock
()
if
priorityMetadataProducer
==
nil
{
return
algorithm
.
EmptyMetadataProducer
,
nil
return
algorithm
.
Empty
Priority
MetadataProducer
,
nil
}
return
priorityMetadataProducer
(
args
),
nil
}
...
...
pkg/scheduler/scheduler.go
View file @
5deb5f49
...
...
@@ -78,7 +78,7 @@ func (sched *Scheduler) StopEverything() {
// factory.go.
type
Configurator
interface
{
GetPriorityFunctionConfigs
(
priorityKeys
sets
.
String
)
([]
algorithm
.
PriorityConfig
,
error
)
GetPriorityMetadataProducer
()
(
algorithm
.
MetadataProducer
,
error
)
GetPriorityMetadataProducer
()
(
algorithm
.
Priority
MetadataProducer
,
error
)
GetPredicateMetadataProducer
()
(
algorithm
.
PredicateMetadataProducer
,
error
)
GetPredicates
(
predicateKeys
sets
.
String
)
(
map
[
string
]
algorithm
.
FitPredicate
,
error
)
GetHardPodAffinitySymmetricWeight
()
int32
...
...
pkg/scheduler/scheduler_test.go
View file @
5deb5f49
...
...
@@ -530,7 +530,7 @@ func setupTestScheduler(queuedPodStore *clientcache.FIFO, scache schedulercache.
predicateMap
,
algorithm
.
EmptyPredicateMetadataProducer
,
[]
algorithm
.
PriorityConfig
{},
algorithm
.
EmptyMetadataProducer
,
algorithm
.
Empty
Priority
MetadataProducer
,
[]
algorithm
.
SchedulerExtender
{},
nil
,
schedulertesting
.
FakePersistentVolumeClaimLister
{},
...
...
@@ -575,7 +575,7 @@ func setupTestSchedulerLongBindingWithRetry(queuedPodStore *clientcache.FIFO, sc
predicateMap
,
algorithm
.
EmptyPredicateMetadataProducer
,
[]
algorithm
.
PriorityConfig
{},
algorithm
.
EmptyMetadataProducer
,
algorithm
.
Empty
Priority
MetadataProducer
,
[]
algorithm
.
SchedulerExtender
{},
nil
,
schedulertesting
.
FakePersistentVolumeClaimLister
{},
...
...
pkg/scheduler/testutil.go
View file @
5deb5f49
...
...
@@ -40,7 +40,7 @@ func (fc *FakeConfigurator) GetPriorityFunctionConfigs(priorityKeys sets.String)
}
// GetPriorityMetadataProducer is not implemented yet.
func
(
fc
*
FakeConfigurator
)
GetPriorityMetadataProducer
()
(
algorithm
.
MetadataProducer
,
error
)
{
func
(
fc
*
FakeConfigurator
)
GetPriorityMetadataProducer
()
(
algorithm
.
Priority
MetadataProducer
,
error
)
{
return
nil
,
fmt
.
Errorf
(
"not implemented"
)
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment