Merge pull request #85689 from ahg-g/ahg-export-snapshot

Export scheduler.Snapshot function
This commit is contained in:
Kubernetes Prow Robot 2019-11-27 14:23:03 -08:00 committed by GitHub
commit 45f6270283
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 6 deletions

View File

@ -132,8 +132,12 @@ type ScheduleAlgorithm interface {
Extenders() []algorithm.SchedulerExtender Extenders() []algorithm.SchedulerExtender
// GetPredicateMetadataProducer returns the predicate metadata producer. This is needed // GetPredicateMetadataProducer returns the predicate metadata producer. This is needed
// for cluster autoscaler integration. // for cluster autoscaler integration.
// TODO(ahg-g): remove this once CA migrates to creating a Framework instead of a full scheduler. // TODO(#85691): remove this once CA migrates to creating a Framework instead of a full scheduler.
PredicateMetadataProducer() predicates.MetadataProducer PredicateMetadataProducer() predicates.MetadataProducer
// Snapshot snapshots scheduler cache and node infos. This is needed
// for cluster autoscaler integration.
// TODO(#85691): remove this once CA migrates to creating a Framework instead of a full scheduler.
Snapshot() error
} }
// ScheduleResult represents the result of one pod scheduled. It will contain // ScheduleResult represents the result of one pod scheduled. It will contain
@ -169,7 +173,7 @@ type genericScheduler struct {
// snapshot snapshots scheduler cache and node infos for all fit and priority // snapshot snapshots scheduler cache and node infos for all fit and priority
// functions. // functions.
func (g *genericScheduler) snapshot() error { func (g *genericScheduler) Snapshot() error {
// Used for all fit and priority funcs. // Used for all fit and priority funcs.
return g.cache.UpdateNodeInfoSnapshot(g.nodeInfoSnapshot) return g.cache.UpdateNodeInfoSnapshot(g.nodeInfoSnapshot)
} }
@ -192,7 +196,7 @@ func (g *genericScheduler) Schedule(ctx context.Context, state *framework.CycleS
} }
trace.Step("Basic checks done") trace.Step("Basic checks done")
if err := g.snapshot(); err != nil { if err := g.Snapshot(); err != nil {
return result, err return result, err
} }
trace.Step("Snapshoting scheduler cache and node infos done") trace.Step("Snapshoting scheduler cache and node infos done")

View File

@ -2176,7 +2176,7 @@ func TestPreempt(t *testing.T) {
schedulerapi.DefaultPercentageOfNodesToScore, schedulerapi.DefaultPercentageOfNodesToScore,
true) true)
state := framework.NewCycleState() state := framework.NewCycleState()
scheduler.(*genericScheduler).snapshot() scheduler.Snapshot()
// Call Preempt and check the expected results. // Call Preempt and check the expected results.
failedPredMap := defaultFailedPredMap failedPredMap := defaultFailedPredMap
if test.failedPredMap != nil { if test.failedPredMap != nil {

View File

@ -156,7 +156,6 @@ func (es mockScheduler) PredicateMetadataProducer() predicates.MetadataProducer
return nil return nil
} }
func (es mockScheduler) Schedule(ctx context.Context, state *framework.CycleState, pod *v1.Pod) (core.ScheduleResult, error) { func (es mockScheduler) Schedule(ctx context.Context, state *framework.CycleState, pod *v1.Pod) (core.ScheduleResult, error) {
return es.result, es.err return es.result, es.err
} }
@ -170,10 +169,13 @@ func (es mockScheduler) Prioritizers() []priorities.PriorityConfig {
func (es mockScheduler) Extenders() []algorithm.SchedulerExtender { func (es mockScheduler) Extenders() []algorithm.SchedulerExtender {
return nil return nil
} }
func (es mockScheduler) Preempt(ctx context.Context, state *framework.CycleState, pod *v1.Pod, scheduleErr error) (*v1.Node, []*v1.Pod, []*v1.Pod, error) { func (es mockScheduler) Preempt(ctx context.Context, state *framework.CycleState, pod *v1.Pod, scheduleErr error) (*v1.Node, []*v1.Pod, []*v1.Pod, error) {
return nil, nil, nil, nil return nil, nil, nil, nil
} }
func (es mockScheduler) Snapshot() error {
return nil
}
func TestSchedulerCreation(t *testing.T) { func TestSchedulerCreation(t *testing.T) {
client := clientsetfake.NewSimpleClientset() client := clientsetfake.NewSimpleClientset()