Expose filteredNodes to func PriorityMetadataProducer

This commit is contained in:
Wei Huang 2019-10-29 14:43:51 -07:00
parent a8727f0f04
commit a4305a356c
No known key found for this signature in database
GPG Key ID: BE5E9752F8B6E005
8 changed files with 19 additions and 15 deletions

View File

@ -62,7 +62,7 @@ type priorityMetadata struct {
}
// PriorityMetadata is a PriorityMetadataProducer. Node info can be nil.
func (pmf *PriorityMetadataFactory) PriorityMetadata(pod *v1.Pod, sharedLister schedulerlisters.SharedLister) interface{} {
func (pmf *PriorityMetadataFactory) PriorityMetadata(pod *v1.Pod, _ []*v1.Node, sharedLister schedulerlisters.SharedLister) interface{} {
// If we cannot compute metadata, just return nil
if pod == nil {
return nil

View File

@ -173,7 +173,7 @@ func TestPriorityMetadata(t *testing.T) {
)
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
ptData := metaDataProducer(test.pod, nil)
ptData := metaDataProducer(test.pod, nil, nil)
if !reflect.DeepEqual(test.expected, ptData) {
t.Errorf("expected %#v, got %#v", test.expected, ptData)
}

View File

@ -337,7 +337,8 @@ func TestSelectorSpreadPriority(t *testing.T) {
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
snapshot := nodeinfosnapshot.NewSnapshot(test.pods, makeNodeList(test.nodes))
nodes := makeNodeList(test.nodes)
snapshot := nodeinfosnapshot.NewSnapshot(test.pods, nodes)
selectorSpread := SelectorSpread{
serviceLister: fakelisters.ServiceLister(test.services),
controllerLister: fakelisters.ControllerLister(test.rcs),
@ -350,7 +351,7 @@ func TestSelectorSpreadPriority(t *testing.T) {
fakelisters.ControllerLister(test.rcs),
fakelisters.ReplicaSetLister(test.rss),
fakelisters.StatefulSetLister(test.sss))
metaData := metaDataProducer(test.pod, snapshot)
metaData := metaDataProducer(test.pod, nodes, snapshot)
ttp := priorityFunction(selectorSpread.CalculateSpreadPriorityMap, selectorSpread.CalculateSpreadPriorityReduce, metaData)
list, err := ttp(test.pod, snapshot, makeNodeList(test.nodes))
@ -573,7 +574,8 @@ func TestZoneSelectorSpreadPriority(t *testing.T) {
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
snapshot := nodeinfosnapshot.NewSnapshot(test.pods, makeLabeledNodeList(labeledNodes))
nodes := makeLabeledNodeList(labeledNodes)
snapshot := nodeinfosnapshot.NewSnapshot(test.pods, nodes)
selectorSpread := SelectorSpread{
serviceLister: fakelisters.ServiceLister(test.services),
controllerLister: fakelisters.ControllerLister(test.rcs),
@ -586,7 +588,7 @@ func TestZoneSelectorSpreadPriority(t *testing.T) {
fakelisters.ControllerLister(test.rcs),
fakelisters.ReplicaSetLister(test.rss),
fakelisters.StatefulSetLister(test.sss))
metaData := metaDataProducer(test.pod, snapshot)
metaData := metaDataProducer(test.pod, nodes, snapshot)
ttp := priorityFunction(selectorSpread.CalculateSpreadPriorityMap, selectorSpread.CalculateSpreadPriorityReduce, metaData)
list, err := ttp(test.pod, snapshot, makeLabeledNodeList(labeledNodes))
if err != nil {
@ -765,7 +767,8 @@ func TestZoneSpreadPriority(t *testing.T) {
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
snapshot := nodeinfosnapshot.NewSnapshot(test.pods, makeLabeledNodeList(test.nodes))
nodes := makeLabeledNodeList(labeledNodes)
snapshot := nodeinfosnapshot.NewSnapshot(test.pods, nodes)
zoneSpread := ServiceAntiAffinity{podLister: snapshot.Pods(), serviceLister: fakelisters.ServiceLister(test.services), label: "zone"}
metaDataProducer := NewPriorityMetadataFactory(
@ -773,7 +776,7 @@ func TestZoneSpreadPriority(t *testing.T) {
fakelisters.ControllerLister(rcs),
fakelisters.ReplicaSetLister(rss),
fakelisters.StatefulSetLister(sss))
metaData := metaDataProducer(test.pod, snapshot)
metaData := metaDataProducer(test.pod, nodes, snapshot)
ttp := priorityFunction(zoneSpread.CalculateAntiAffinityPriorityMap, zoneSpread.CalculateAntiAffinityPriorityReduce, metaData)
list, err := ttp(test.pod, snapshot, makeLabeledNodeList(test.nodes))
if err != nil {

View File

@ -36,7 +36,7 @@ type PriorityReduceFunction func(pod *v1.Pod, meta interface{}, sharedLister sch
// 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.
type PriorityMetadataProducer func(pod *v1.Pod, sharedLister schedulerlisters.SharedLister) interface{}
type PriorityMetadataProducer func(pod *v1.Pod, filteredNodes []*v1.Node, sharedLister schedulerlisters.SharedLister) interface{}
// PriorityFunction is a function that computes scores for all nodes.
// DEPRECATED
@ -55,6 +55,6 @@ type PriorityConfig struct {
}
// EmptyPriorityMetadataProducer returns a no-op PriorityMetadataProducer type.
func EmptyPriorityMetadataProducer(pod *v1.Pod, sharedLister schedulerlisters.SharedLister) interface{} {
func EmptyPriorityMetadataProducer(pod *v1.Pod, filteredNodes []*v1.Node, sharedLister schedulerlisters.SharedLister) interface{} {
return nil
}

View File

@ -30,10 +30,11 @@ import (
func TestEmptyPriorityMetadataProducer(t *testing.T) {
fakePod := st.MakePod().Name("p1").Node("node2").Obj()
fakeLabelSelector := labels.SelectorFromSet(labels.Set{"foo": "bar"})
fakeNodes := []*v1.Node{st.MakeNode().Name("node1").Obj(), st.MakeNode().Name("node-a").Obj()}
snapshot := nodeinfosnapshot.NewSnapshot([]*v1.Pod{fakePod}, []*v1.Node{st.MakeNode().Name("node1").Obj(), st.MakeNode().Name("node-a").Obj()})
snapshot := nodeinfosnapshot.NewSnapshot([]*v1.Pod{fakePod}, fakeNodes)
// Test EmptyPriorityMetadataProducer
metadata := EmptyPriorityMetadataProducer(fakePod, snapshot)
metadata := EmptyPriorityMetadataProducer(fakePod, fakeNodes, snapshot)
if metadata != nil {
t.Errorf("failed to produce empty metadata: got %v, expected nil", metadata)
}

View File

@ -238,7 +238,7 @@ func (g *genericScheduler) Schedule(ctx context.Context, state *framework.CycleS
}, nil
}
metaPrioritiesInterface := g.priorityMetaProducer(pod, g.nodeInfoSnapshot)
metaPrioritiesInterface := g.priorityMetaProducer(pod, filteredNodes, g.nodeInfoSnapshot)
priorityList, err := PrioritizeNodes(ctx, pod, g.nodeInfoSnapshot, metaPrioritiesInterface, g.prioritizers, filteredNodes, g.extenders, g.framework, state)
if err != nil {
return result, err

View File

@ -1008,7 +1008,7 @@ func TestZeroRequest(t *testing.T) {
informerFactory.Apps().V1().StatefulSets().Lister(),
)
metaData := metaDataProducer(test.pod, snapshot)
metaData := metaDataProducer(test.pod, test.nodes, snapshot)
list, err := PrioritizeNodes(
context.Background(),

View File

@ -201,7 +201,7 @@ func TestImageLocalityPriority(t *testing.T) {
)
snapshot := nodeinfosnapshot.NewSnapshot(nil, test.nodes)
meta := metaDataProducer(test.pod, snapshot)
meta := metaDataProducer(test.pod, test.nodes, snapshot)
state := framework.NewCycleState()
state.Write(migration.PrioritiesStateKey, &migration.PrioritiesStateData{Reference: meta})