in pkg/common/configs/configvalidator.go [745:803]
func Validate(newConfig *SchedulerConfig) error {
if newConfig == nil {
return fmt.Errorf("scheduler config is not set")
}
// check uniqueness
partitionMap := make(map[string]bool)
for i := range newConfig.Partitions {
partition := newConfig.Partitions[i]
if partition.Name == "" || strings.ToLower(partition.Name) == DefaultPartition {
partition.Name = DefaultPartition
}
if partitionMap[strings.ToLower(partition.Name)] {
return fmt.Errorf("duplicate partition name found with name %s", partition.Name)
}
partitionMap[strings.ToLower(partition.Name)] = true
// check the queue structure
err := checkQueuesStructure(&partition)
if err != nil {
return err
}
err = checkLimitsStructure(&partition)
if err != nil {
return err
}
err = checkQueues(&partition.Queues[0], 1)
if err != nil {
return err
}
_, err = checkQueueResource(partition.Queues[0], nil)
if err != nil {
return err
}
err = checkPlacementRules(&partition)
if err != nil {
return err
}
err = checkNodeSortingPolicy(&partition)
if err != nil {
return err
}
err = checkQueueMaxApplications(partition.Queues[0])
if err != nil {
return err
}
if err = checkLimitResource(partition.Queues[0], make(map[string]map[string]*resources.Resource), make(map[string]map[string]*resources.Resource), common.Empty); err != nil {
return err
}
if err = checkLimitMaxApplications(partition.Queues[0], make(map[string]map[string]uint64), make(map[string]map[string]uint64), common.Empty); err != nil {
return err
}
// write back the partition to keep changes
newConfig.Partitions[i] = partition
}
return nil
}