in pkg/common/utils/utils.go [392:423]
func GetTaskGroupsFromAnnotation(pod *v1.Pod) ([]interfaces.TaskGroup, error) {
taskGroupInfo := GetPodAnnotationValue(pod, constants.AnnotationTaskGroups)
if taskGroupInfo == "" {
return nil, nil
}
taskGroups := []interfaces.TaskGroup{}
err := json.Unmarshal([]byte(taskGroupInfo), &taskGroups)
if err != nil {
return nil, err
}
// json.Unmarchal won't return error if name or MinMember is empty, but will return error if MinResource is empty or error format.
for _, taskGroup := range taskGroups {
if taskGroup.Name == "" {
return nil, fmt.Errorf("can't get taskGroup Name from pod annotation, %s",
taskGroupInfo)
}
if taskGroup.MinResource == nil {
return nil, fmt.Errorf("can't get taskGroup MinResource from pod annotation, %s",
taskGroupInfo)
}
if taskGroup.MinMember == int32(0) {
return nil, fmt.Errorf("can't get taskGroup MinMember from pod annotation, %s",
taskGroupInfo)
}
if taskGroup.MinMember < int32(0) {
return nil, fmt.Errorf("minMember cannot be negative, %s",
taskGroupInfo)
}
}
return taskGroups, nil
}