package schedule import ( "context" "errors" "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/constants" "strconv" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types" "github.com/zeromicro/go-zero/core/logx" ) type ScheduleGetAiJobLogLogLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewScheduleGetAiJobLogLogLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ScheduleGetAiJobLogLogLogic { return &ScheduleGetAiJobLogLogLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *ScheduleGetAiJobLogLogLogic) ScheduleGetAiJobLogLog(req *types.AiJobLogReq) (resp *types.AiJobLogResp, err error) { resp = &types.AiJobLogResp{} taskId, err := strconv.ParseInt(req.TaskId, 10, 64) if err != nil { return nil, err } task, err := l.svcCtx.Scheduler.AiStorages.GetTaskById(taskId) if err != nil { return nil, err } aiTasks, err := l.svcCtx.Scheduler.AiStorages.GetAiTasksByTaskId(req.TaskId) if err != nil { return nil, err } if len(aiTasks) == 0 && task.Status == constants.Failed { return nil, errors.New("submit failed, no log available") } else if len(aiTasks) > 1 { return nil, errors.New("multiple ai task found") } aiTask := aiTasks[0] adapterId := strconv.FormatInt(aiTask.AdapterId, 10) clusterId := strconv.FormatInt(aiTask.ClusterId, 10) jobId := aiTask.JobId log, err := l.svcCtx.Scheduler.AiService.AiCollectorAdapterMap[adapterId][clusterId].GetTrainingTaskLog(l.ctx, jobId, req.InstanceNum) if err != nil { return nil, err } resp.Log = log return resp, nil }