30 lines
783 B
Go
30 lines
783 B
Go
package schedulers
|
|
|
|
import "github.com/mesos/mesos-go/scheduler"
|
|
|
|
// Names of different scheduling policies.
|
|
const (
|
|
ff = "first-fit"
|
|
bp = "bin-packing"
|
|
mgm = "max-greedymins"
|
|
mm = "max-min"
|
|
)
|
|
|
|
// Scheduler class factory
|
|
var Schedulers map[string]scheduler.Scheduler = map[string]scheduler.Scheduler{
|
|
ff: &FirstFit{base: base{}},
|
|
bp: &BinPacking{base: base{}},
|
|
mgm: &MaxGreedyMins{base: base{}},
|
|
mm: &MaxMin{base: base{}},
|
|
}
|
|
|
|
// build the scheduling policy with the options being applied
|
|
func BuildSchedPolicy(s scheduler.Scheduler, opts ...schedPolicyOption) {
|
|
s.(ElectronScheduler).init(opts...)
|
|
}
|
|
|
|
func SchedFactory(schedPolicyName string, opts ...schedPolicyOption) scheduler.Scheduler {
|
|
s := Schedulers[schedPolicyName]
|
|
BuildSchedPolicy(s, opts...)
|
|
return s
|
|
}
|