package task import ( "fmt" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/common" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/strategy" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/storeLink" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types" ) func ValidateJobResources(resources types.JobResources, taskType string) error { switch taskType { case "training": if resources.ScheduleStrategy == "" { return fmt.Errorf("must specify ScheduleStrategy") } } if len(resources.Clusters) == 0 { return fmt.Errorf("must specify at least one cluster") } for _, c := range resources.Clusters { if c.ClusterID == "" { return fmt.Errorf("must specify clusterID") } if len(c.Resources) == 0 { return fmt.Errorf("cluster: %s must specify at least one compute resource", c.ClusterID) //return errors.Wrapf(xerr.NewErrCodeMsg(1234, fmt.Sprintf("cluster: %s must specify at least one compute resource", c.ClusterID)), "") } } return nil } func CopyParams(clusters []*strategy.AssignedCluster, clusterInfos []*types.JobClusterInfo, taskType string) []*strategy.AssignedCluster { var result []*strategy.AssignedCluster for _, c := range clusters { for _, info := range clusterInfos { if c.ClusterId == info.ClusterID { var envs []string var params []string for k, v := range info.Runtime.Envs { val := common.ConvertTypeToString(v) if val != "" { env := k + storeLink.COMMA + val envs = append(envs, env) } } for k, v := range info.Runtime.Params { val := common.ConvertTypeToString(v) if val != "" { p := k + storeLink.COMMA + val params = append(params, p) } } cluster := &strategy.AssignedCluster{ ClusterId: c.ClusterId, ClusterName: c.ClusterName, Replicas: c.Replicas, ResourcesRequired: info.Resources, Cmd: info.Runtime.Command, Envs: envs, Params: params, } result = append(result, cluster) } } } if taskType == "inference" { for _, c := range clusters { for _, r := range result { if c.ClusterId == r.ClusterId { r.ModelId = c.ModelId r.ModelName = c.ModelName r.ImageId = c.ImageId r.CodeId = c.CodeId } } } } return result }