func convertMasterStartContainerRequest2JobContext()

in internal/actor/container_actor.go [312:361]


func convertMasterStartContainerRequest2JobContext(req *schedulerx.MasterStartContainerRequest) (*jobcontext.JobContext, error) {
	jobCtx := new(jobcontext.JobContext)
	jobCtx.SetJobId(req.GetJobId())
	jobCtx.SetJobInstanceId(req.GetJobInstanceId())
	jobCtx.SetTaskId(req.GetTaskId())
	jobCtx.SetScheduleTime(time.UnixMilli(req.GetScheduleTime()))
	jobCtx.SetDataTime(time.UnixMilli(req.GetDataTime()))
	jobCtx.SetExecuteMode(req.GetExecuteMode())
	jobCtx.SetJobType(req.GetJobType())
	jobCtx.SetContent(req.GetContent())
	jobCtx.SetJobParameters(req.GetParameters())
	jobCtx.SetInstanceParameters(req.GetInstanceParameters())
	jobCtx.SetUser(req.GetUser())
	jobCtx.SetInstanceMasterActorPath(req.GetInstanceMasterAkkaPath())
	jobCtx.SetGroupId(req.GetGroupId())
	jobCtx.SetMaxAttempt(req.GetMaxAttempt())
	jobCtx.SetAttempt(req.GetAttempt())
	jobCtx.SetTaskName(req.GetTaskName())
	if req.GetTask() != nil {
		jobCtx.SetTask(req.GetTask())

		// If it's a sharding task, set the sharding id and sharding parameters.
		shardingTask := new(common.ShardingTask)
		if err := json.Unmarshal(req.GetTask(), shardingTask); err == nil {
			jobCtx.SetShardingId(shardingTask.GetId())
			jobCtx.SetShardingParameter(shardingTask.GetParameter())
		}
	} else {
		jobCtx.SetShardingId(req.GetTaskId())
	}
	jobCtx.SetTaskMaxAttempt(req.GetTaskMaxAttempt())
	jobCtx.SetTaskAttemptInterval(req.GetTaskAttemptInterval())

	upstreamData := make([]*common.JobInstanceData, 0, len(req.GetUpstreamData()))
	for _, data := range req.GetUpstreamData() {
		jobInstanceData := new(common.JobInstanceData)
		jobInstanceData.SetJobName(data.GetJobName())
		jobInstanceData.SetData(data.GetData())
		upstreamData = append(upstreamData, jobInstanceData)
	}
	jobCtx.SetUpstreamData(upstreamData)
	jobCtx.SetWfInstanceId(req.GetWfInstanceId())
	jobCtx.SetSerialNum(req.GetSerialNum())
	jobCtx.SetJobName(req.GetJobName())
	jobCtx.SetShardingNum(req.GetShardingNum())
	jobCtx.SetTimeType(req.GetTimeType())
	jobCtx.SetTimeExpression(req.GetTimeExpression())
	jobCtx.Context = context.Background()
	return jobCtx, nil
}