Skip to content

Commit f3816fb

Browse files
author
draveness
committed
feat: use PreFilter instead of Prefilter in the scheduling framework
1 parent 2af52db commit f3816fb

File tree

5 files changed

+40
-40
lines changed

5 files changed

+40
-40
lines changed

pkg/scheduler/core/generic_scheduler.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,9 +195,9 @@ func (g *genericScheduler) Schedule(pod *v1.Pod, pluginContext *framework.Plugin
195195
}
196196

197197
// Run "prefilter" plugins.
198-
prefilterStatus := g.framework.RunPrefilterPlugins(pluginContext, pod)
199-
if !prefilterStatus.IsSuccess() {
200-
return result, prefilterStatus.AsError()
198+
preFilterStatus := g.framework.RunPreFilterPlugins(pluginContext, pod)
199+
if !preFilterStatus.IsSuccess() {
200+
return result, preFilterStatus.AsError()
201201
}
202202

203203
numNodes := g.cache.NodeTree().NumNodes()

pkg/scheduler/framework/v1alpha1/framework.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ type framework struct {
3939
waitingPods *waitingPodsMap
4040
pluginNameToWeightMap map[string]int
4141
queueSortPlugins []QueueSortPlugin
42-
prefilterPlugins []PrefilterPlugin
42+
preFilterPlugins []PreFilterPlugin
4343
filterPlugins []FilterPlugin
4444
postFilterPlugins []PostFilterPlugin
4545
scorePlugins []ScorePlugin
@@ -105,11 +105,11 @@ func NewFramework(r Registry, plugins *config.Plugins, args []config.PluginConfi
105105
if plugins.PreFilter != nil {
106106
for _, pf := range plugins.PreFilter.Enabled {
107107
if pg, ok := pluginsMap[pf.Name]; ok {
108-
p, ok := pg.(PrefilterPlugin)
108+
p, ok := pg.(PreFilterPlugin)
109109
if !ok {
110110
return nil, fmt.Errorf("plugin %q does not extend prefilter plugin", pf.Name)
111111
}
112-
f.prefilterPlugins = append(f.prefilterPlugins, p)
112+
f.preFilterPlugins = append(f.preFilterPlugins, p)
113113
} else {
114114
return nil, fmt.Errorf("prefilter plugin %q does not exist", pf.Name)
115115
}
@@ -283,14 +283,14 @@ func (f *framework) QueueSortFunc() LessFunc {
283283
return f.queueSortPlugins[0].Less
284284
}
285285

286-
// RunPrefilterPlugins runs the set of configured prefilter plugins. It returns
286+
// RunPreFilterPlugins runs the set of configured PreFilter plugins. It returns
287287
// *Status and its code is set to non-success if any of the plugins returns
288288
// anything but Success. If a non-success status is returned, then the scheduling
289289
// cycle is aborted.
290-
func (f *framework) RunPrefilterPlugins(
290+
func (f *framework) RunPreFilterPlugins(
291291
pc *PluginContext, pod *v1.Pod) *Status {
292-
for _, pl := range f.prefilterPlugins {
293-
status := pl.Prefilter(pc, pod)
292+
for _, pl := range f.preFilterPlugins {
293+
status := pl.PreFilter(pc, pod)
294294
if !status.IsSuccess() {
295295
if status.Code() == Unschedulable {
296296
msg := fmt.Sprintf("rejected by %q at prefilter: %v", pl.Name(), status.Message())

pkg/scheduler/framework/v1alpha1/interface.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -152,13 +152,13 @@ type QueueSortPlugin interface {
152152
Less(*PodInfo, *PodInfo) bool
153153
}
154154

155-
// PrefilterPlugin is an interface that must be implemented by "prefilter" plugins.
155+
// PreFilterPlugin is an interface that must be implemented by "prefilter" plugins.
156156
// These plugins are called at the beginning of the scheduling cycle.
157-
type PrefilterPlugin interface {
157+
type PreFilterPlugin interface {
158158
Plugin
159-
// Prefilter is called at the beginning of the scheduling cycle. All prefilter
159+
// PreFilter is called at the beginning of the scheduling cycle. All PreFilter
160160
// plugins must return success or the pod will be rejected.
161-
Prefilter(pc *PluginContext, p *v1.Pod) *Status
161+
PreFilter(pc *PluginContext, p *v1.Pod) *Status
162162
}
163163

164164
// FilterPlugin is an interface for Filter plugins. These plugins are called at the
@@ -289,11 +289,11 @@ type Framework interface {
289289
// QueueSortFunc returns the function to sort pods in scheduling queue
290290
QueueSortFunc() LessFunc
291291

292-
// RunPrefilterPlugins runs the set of configured prefilter plugins. It returns
292+
// RunPreFilterPlugins runs the set of configured prefilter plugins. It returns
293293
// *Status and its code is set to non-success if any of the plugins returns
294294
// anything but Success. If a non-success status is returned, then the scheduling
295295
// cycle is aborted.
296-
RunPrefilterPlugins(pc *PluginContext, pod *v1.Pod) *Status
296+
RunPreFilterPlugins(pc *PluginContext, pod *v1.Pod) *Status
297297

298298
// RunFilterPlugins runs the set of configured filter plugins for pod on the
299299
// given host. If any of these plugins returns any status other than "Success",

pkg/scheduler/internal/queue/scheduling_queue_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ func (*fakeFramework) NodeInfoSnapshot() *internalcache.NodeInfoSnapshot {
167167
return nil
168168
}
169169

170-
func (*fakeFramework) RunPrefilterPlugins(pc *framework.PluginContext, pod *v1.Pod) *framework.Status {
170+
func (*fakeFramework) RunPreFilterPlugins(pc *framework.PluginContext, pod *v1.Pod) *framework.Status {
171171
return nil
172172
}
173173

test/integration/scheduler/framework_test.go

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ import (
3131
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
3232
)
3333

34-
type PrefilterPlugin struct {
35-
numPrefilterCalled int
36-
failPrefilter bool
37-
rejectPrefilter bool
34+
type PreFilterPlugin struct {
35+
numPreFilterCalled int
36+
failPreFilter bool
37+
rejectPreFilter bool
3838
}
3939

4040
type ScorePlugin struct {
@@ -113,7 +113,7 @@ const (
113113
permitPluginName = "permit-plugin"
114114
)
115115

116-
var _ = framework.PrefilterPlugin(&PrefilterPlugin{})
116+
var _ = framework.PreFilterPlugin(&PreFilterPlugin{})
117117
var _ = framework.ScorePlugin(&ScorePlugin{})
118118
var _ = framework.FilterPlugin(&FilterPlugin{})
119119
var _ = framework.ScorePlugin(&ScorePlugin{})
@@ -321,27 +321,27 @@ func (pp *PostbindPlugin) reset() {
321321
}
322322

323323
// Name returns name of the plugin.
324-
func (pp *PrefilterPlugin) Name() string {
324+
func (pp *PreFilterPlugin) Name() string {
325325
return prefilterPluginName
326326
}
327327

328-
// Prefilter is a test function that returns (true, nil) or errors for testing.
329-
func (pp *PrefilterPlugin) Prefilter(pc *framework.PluginContext, pod *v1.Pod) *framework.Status {
330-
pp.numPrefilterCalled++
331-
if pp.failPrefilter {
328+
// PreFilter is a test function that returns (true, nil) or errors for testing.
329+
func (pp *PreFilterPlugin) PreFilter(pc *framework.PluginContext, pod *v1.Pod) *framework.Status {
330+
pp.numPreFilterCalled++
331+
if pp.failPreFilter {
332332
return framework.NewStatus(framework.Error, fmt.Sprintf("injecting failure for pod %v", pod.Name))
333333
}
334-
if pp.rejectPrefilter {
334+
if pp.rejectPreFilter {
335335
return framework.NewStatus(framework.Unschedulable, fmt.Sprintf("reject pod %v", pod.Name))
336336
}
337337
return nil
338338
}
339339

340340
// reset used to reset prefilter plugin.
341-
func (pp *PrefilterPlugin) reset() {
342-
pp.numPrefilterCalled = 0
343-
pp.failPrefilter = false
344-
pp.rejectPrefilter = false
341+
func (pp *PreFilterPlugin) reset() {
342+
pp.numPreFilterCalled = 0
343+
pp.failPreFilter = false
344+
pp.rejectPreFilter = false
345345
}
346346

347347
// Name returns name of the plugin.
@@ -426,11 +426,11 @@ func newPermitPlugin(permitPlugin *PermitPlugin) framework.PluginFactory {
426426
}
427427
}
428428

429-
// TestPrefilterPlugin tests invocation of prefilter plugins.
430-
func TestPrefilterPlugin(t *testing.T) {
429+
// TestPreFilterPlugin tests invocation of prefilter plugins.
430+
func TestPreFilterPlugin(t *testing.T) {
431431
// Create a plugin registry for testing. Register only a pre-filter plugin.
432-
prefilterPlugin := &PrefilterPlugin{}
433-
registry := framework.Registry{prefilterPluginName: newPlugin(prefilterPlugin)}
432+
preFilterPlugin := &PreFilterPlugin{}
433+
registry := framework.Registry{prefilterPluginName: newPlugin(preFilterPlugin)}
434434

435435
// Setup initial prefilter plugin for testing.
436436
plugins := &schedulerconfig.Plugins{
@@ -478,8 +478,8 @@ func TestPrefilterPlugin(t *testing.T) {
478478
}
479479

480480
for i, test := range tests {
481-
prefilterPlugin.failPrefilter = test.fail
482-
prefilterPlugin.rejectPrefilter = test.reject
481+
preFilterPlugin.failPreFilter = test.fail
482+
preFilterPlugin.rejectPreFilter = test.reject
483483
// Create a best effort pod.
484484
pod, err := createPausePod(cs,
485485
initPausePod(cs, &pausePodConfig{Name: "test-pod", Namespace: context.ns.Name}))
@@ -497,11 +497,11 @@ func TestPrefilterPlugin(t *testing.T) {
497497
}
498498
}
499499

500-
if prefilterPlugin.numPrefilterCalled == 0 {
500+
if preFilterPlugin.numPreFilterCalled == 0 {
501501
t.Errorf("Expected the prefilter plugin to be called.")
502502
}
503503

504-
prefilterPlugin.reset()
504+
preFilterPlugin.reset()
505505
cleanupPods(cs, t, []*v1.Pod{pod})
506506
}
507507
}

0 commit comments

Comments
 (0)