in pkg/scheduler/util.go [46:86]
func unmarshalSchedulerConf(confStr string) ([]framework.Action, []conf.Tier, []conf.Configuration, error) {
var actions []framework.Action
schedulerConf := &conf.SchedulerConfiguration{}
if err := yaml.Unmarshal([]byte(confStr), schedulerConf); err != nil {
return nil, nil, nil, err
}
// Set default settings for each plugin if not set
for i, tier := range schedulerConf.Tiers {
// drf with hierarchy enabled
hdrf := false
// proportion enabled
proportion := false
for j := range tier.Plugins {
if tier.Plugins[j].Name == "drf" &&
tier.Plugins[j].EnabledHierarchy != nil &&
*tier.Plugins[j].EnabledHierarchy {
hdrf = true
}
if tier.Plugins[j].Name == "proportion" {
proportion = true
}
plugins.ApplyPluginConfDefaults(&schedulerConf.Tiers[i].Plugins[j])
}
if hdrf && proportion {
return nil, nil, nil, fmt.Errorf("proportion and drf with hierarchy enabled conflicts")
}
}
actionNames := strings.Split(schedulerConf.Actions, ",")
for _, actionName := range actionNames {
if action, found := framework.GetAction(strings.TrimSpace(actionName)); found {
actions = append(actions, action)
} else {
return nil, nil, nil, fmt.Errorf("failed to find Action %s, ignore it", actionName)
}
}
return actions, schedulerConf.Tiers, schedulerConf.Configurations, nil
}