Skip to content

Commit

Permalink
Merge pull request #91547 from Huang-Wei/postfilter-api
Browse files Browse the repository at this point in the history
Scheduler PostFilter API
  • Loading branch information
k8s-ci-robot committed May 30, 2020
2 parents 99df02c + 8478c19 commit 6a526e8
Show file tree
Hide file tree
Showing 7 changed files with 83 additions and 41 deletions.
5 changes: 5 additions & 0 deletions pkg/scheduler/apis/config/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,9 @@ type Plugins struct {
// Filter is a list of plugins that should be invoked when filtering out nodes that cannot run the Pod.
Filter *PluginSet

// PostFilter is a list of plugins that are invoked after filtering phase, no matter whether filtering succeeds or not.
PostFilter *PluginSet

// PreScore is a list of plugins that are invoked before scoring.
PreScore *PluginSet

Expand Down Expand Up @@ -284,6 +287,7 @@ func (p *Plugins) Append(src *Plugins) {
p.QueueSort = appendPluginSet(p.QueueSort, src.QueueSort)
p.PreFilter = appendPluginSet(p.PreFilter, src.PreFilter)
p.Filter = appendPluginSet(p.Filter, src.Filter)
p.PostFilter = appendPluginSet(p.PostFilter, src.PostFilter)
p.PreScore = appendPluginSet(p.PreScore, src.PreScore)
p.Score = appendPluginSet(p.Score, src.Score)
p.Reserve = appendPluginSet(p.Reserve, src.Reserve)
Expand All @@ -303,6 +307,7 @@ func (p *Plugins) Apply(customPlugins *Plugins) {
p.QueueSort = mergePluginSets(p.QueueSort, customPlugins.QueueSort)
p.PreFilter = mergePluginSets(p.PreFilter, customPlugins.PreFilter)
p.Filter = mergePluginSets(p.Filter, customPlugins.Filter)
p.PostFilter = mergePluginSets(p.PostFilter, customPlugins.PostFilter)
p.PreScore = mergePluginSets(p.PreScore, customPlugins.PreScore)
p.Score = mergePluginSets(p.Score, customPlugins.Score)
p.Reserve = mergePluginSets(p.Reserve, customPlugins.Reserve)
Expand Down
85 changes: 45 additions & 40 deletions pkg/scheduler/apis/config/types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,15 @@ func TestPluginsAppend(t *testing.T) {
{Name: "CustomPlugin"},
},
},
PreScore: &PluginSet{},
Score: &PluginSet{},
Reserve: &PluginSet{},
Permit: &PluginSet{},
PreBind: &PluginSet{},
Bind: &PluginSet{},
PostBind: &PluginSet{},
Unreserve: &PluginSet{},
PostFilter: &PluginSet{},
PreScore: &PluginSet{},
Score: &PluginSet{},
Reserve: &PluginSet{},
Permit: &PluginSet{},
PreBind: &PluginSet{},
Bind: &PluginSet{},
PostBind: &PluginSet{},
Unreserve: &PluginSet{},
},
},
{
Expand Down Expand Up @@ -117,14 +118,15 @@ func TestPluginsApply(t *testing.T) {
{Name: "CustomPlugin"},
},
},
PreScore: &PluginSet{Enabled: []Plugin{}},
Score: &PluginSet{Enabled: []Plugin{}},
Reserve: &PluginSet{Enabled: []Plugin{}},
Permit: &PluginSet{Enabled: []Plugin{}},
PreBind: &PluginSet{Enabled: []Plugin{}},
Bind: &PluginSet{Enabled: []Plugin{}},
PostBind: &PluginSet{Enabled: []Plugin{}},
Unreserve: &PluginSet{Enabled: []Plugin{}},
PostFilter: &PluginSet{Enabled: []Plugin{}},
PreScore: &PluginSet{Enabled: []Plugin{}},
Score: &PluginSet{Enabled: []Plugin{}},
Reserve: &PluginSet{Enabled: []Plugin{}},
Permit: &PluginSet{Enabled: []Plugin{}},
PreBind: &PluginSet{Enabled: []Plugin{}},
Bind: &PluginSet{Enabled: []Plugin{}},
PostBind: &PluginSet{Enabled: []Plugin{}},
Unreserve: &PluginSet{Enabled: []Plugin{}},
},
},
{
Expand Down Expand Up @@ -158,14 +160,15 @@ func TestPluginsApply(t *testing.T) {
{Name: "DefaultPlugin2"},
},
},
PreScore: &PluginSet{Enabled: []Plugin{}},
Score: &PluginSet{Enabled: []Plugin{}},
Reserve: &PluginSet{Enabled: []Plugin{}},
Permit: &PluginSet{Enabled: []Plugin{}},
PreBind: &PluginSet{Enabled: []Plugin{}},
Bind: &PluginSet{Enabled: []Plugin{}},
PostBind: &PluginSet{Enabled: []Plugin{}},
Unreserve: &PluginSet{Enabled: []Plugin{}},
PostFilter: &PluginSet{Enabled: []Plugin{}},
PreScore: &PluginSet{Enabled: []Plugin{}},
Score: &PluginSet{Enabled: []Plugin{}},
Reserve: &PluginSet{Enabled: []Plugin{}},
Permit: &PluginSet{Enabled: []Plugin{}},
PreBind: &PluginSet{Enabled: []Plugin{}},
Bind: &PluginSet{Enabled: []Plugin{}},
PostBind: &PluginSet{Enabled: []Plugin{}},
Unreserve: &PluginSet{Enabled: []Plugin{}},
},
},
{
Expand Down Expand Up @@ -200,14 +203,15 @@ func TestPluginsApply(t *testing.T) {
{Name: "DefaultPlugin2"},
},
},
PreScore: &PluginSet{Enabled: []Plugin{}},
Score: &PluginSet{Enabled: []Plugin{}},
Reserve: &PluginSet{Enabled: []Plugin{}},
Permit: &PluginSet{Enabled: []Plugin{}},
PreBind: &PluginSet{Enabled: []Plugin{}},
Bind: &PluginSet{Enabled: []Plugin{}},
PostBind: &PluginSet{Enabled: []Plugin{}},
Unreserve: &PluginSet{Enabled: []Plugin{}},
PostFilter: &PluginSet{Enabled: []Plugin{}},
PreScore: &PluginSet{Enabled: []Plugin{}},
Score: &PluginSet{Enabled: []Plugin{}},
Reserve: &PluginSet{Enabled: []Plugin{}},
Permit: &PluginSet{Enabled: []Plugin{}},
PreBind: &PluginSet{Enabled: []Plugin{}},
Bind: &PluginSet{Enabled: []Plugin{}},
PostBind: &PluginSet{Enabled: []Plugin{}},
Unreserve: &PluginSet{Enabled: []Plugin{}},
},
},
{
Expand Down Expand Up @@ -240,14 +244,15 @@ func TestPluginsApply(t *testing.T) {
{Name: "DefaultPlugin1"},
},
},
PreScore: &PluginSet{Enabled: []Plugin{}},
Score: &PluginSet{Enabled: []Plugin{}},
Reserve: &PluginSet{Enabled: []Plugin{}},
Permit: &PluginSet{Enabled: []Plugin{}},
PreBind: &PluginSet{Enabled: []Plugin{}},
Bind: &PluginSet{Enabled: []Plugin{}},
PostBind: &PluginSet{Enabled: []Plugin{}},
Unreserve: &PluginSet{Enabled: []Plugin{}},
PostFilter: &PluginSet{Enabled: []Plugin{}},
PreScore: &PluginSet{Enabled: []Plugin{}},
Score: &PluginSet{Enabled: []Plugin{}},
Reserve: &PluginSet{Enabled: []Plugin{}},
Permit: &PluginSet{Enabled: []Plugin{}},
PreBind: &PluginSet{Enabled: []Plugin{}},
Bind: &PluginSet{Enabled: []Plugin{}},
PostBind: &PluginSet{Enabled: []Plugin{}},
Unreserve: &PluginSet{Enabled: []Plugin{}},
},
},
{
Expand Down
18 changes: 18 additions & 0 deletions pkg/scheduler/apis/config/v1beta1/zz_generated.conversion.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions pkg/scheduler/apis/config/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion pkg/scheduler/framework/plugins/legacy_registry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,8 @@ func TestRegisterConfigProducers(t *testing.T) {
{Name: testFilterName2},
},
},
PreScore: &config.PluginSet{},
PostFilter: &config.PluginSet{},
PreScore: &config.PluginSet{},
Score: &config.PluginSet{
Enabled: []config.Plugin{
{Name: testScoreName1, Weight: 1},
Expand Down
3 changes: 3 additions & 0 deletions staging/src/k8s.io/kube-scheduler/config/v1beta1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,9 @@ type Plugins struct {
// Filter is a list of plugins that should be invoked when filtering out nodes that cannot run the Pod.
Filter *PluginSet `json:"filter,omitempty"`

// PostFilter is a list of plugins that are invoked after filtering phase, no matter whether filtering succeeds or not.
PostFilter *PluginSet `json:"postFilter,omitempty"`

// PreScore is a list of plugins that are invoked before scoring.
PreScore *PluginSet `json:"preScore,omitempty"`

Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 6a526e8

Please sign in to comment.