| @@ -16,6 +16,7 @@ import ( | |||||
| "code.gitea.io/gitea/modules/cloudbrain" | "code.gitea.io/gitea/modules/cloudbrain" | ||||
| "code.gitea.io/gitea/modules/context" | "code.gitea.io/gitea/modules/context" | ||||
| "code.gitea.io/gitea/modules/log" | "code.gitea.io/gitea/modules/log" | ||||
| "code.gitea.io/gitea/modules/modelarts" | |||||
| "code.gitea.io/gitea/modules/storage" | "code.gitea.io/gitea/modules/storage" | ||||
| routerRepo "code.gitea.io/gitea/routers/repo" | routerRepo "code.gitea.io/gitea/routers/repo" | ||||
| ) | ) | ||||
| @@ -112,44 +113,65 @@ func GetCloudbrainModelConvertTask(ctx *context.APIContext) { | |||||
| log.Error("GetCloudbrainByID failed:", err) | log.Error("GetCloudbrainByID failed:", err) | ||||
| return | return | ||||
| } | } | ||||
| jobResult, err := cloudbrain.GetJob(job.CloudBrainTaskId) | |||||
| if err != nil { | |||||
| ctx.NotFound(err) | |||||
| log.Error("GetJob failed:", err) | |||||
| return | |||||
| } | |||||
| result, _ := models.ConvertToJobResultPayload(jobResult.Payload) | |||||
| if err != nil { | |||||
| ctx.NotFound(err) | |||||
| log.Error("ConvertToJobResultPayload failed:", err) | |||||
| return | |||||
| } | |||||
| if job.SrcEngine == 0 { | |||||
| jobResult, err := cloudbrain.GetJob(job.CloudBrainTaskId) | |||||
| if err != nil { | |||||
| ctx.NotFound(err) | |||||
| log.Error("GetJob failed:", err) | |||||
| return | |||||
| } | |||||
| result, _ := models.ConvertToJobResultPayload(jobResult.Payload) | |||||
| if err != nil { | |||||
| ctx.NotFound(err) | |||||
| log.Error("ConvertToJobResultPayload failed:", err) | |||||
| return | |||||
| } | |||||
| job.Status = result.JobStatus.State | |||||
| taskRoles := result.TaskRoles | |||||
| taskRes, _ := models.ConvertToTaskPod(taskRoles[cloudbrain.SubTaskName].(map[string]interface{})) | |||||
| if result.JobStatus.State != string(models.JobWaiting) && result.JobStatus.State != string(models.JobFailed) { | |||||
| job.ContainerIp = taskRes.TaskStatuses[0].ContainerIP | |||||
| job.ContainerID = taskRes.TaskStatuses[0].ContainerID | |||||
| job.Status = taskRes.TaskStatuses[0].State | |||||
| } | |||||
| job.Status = result.JobStatus.State | |||||
| taskRoles := result.TaskRoles | |||||
| taskRes, _ := models.ConvertToTaskPod(taskRoles[cloudbrain.SubTaskName].(map[string]interface{})) | |||||
| if result.JobStatus.State != string(models.JobWaiting) && result.JobStatus.State != string(models.JobFailed) { | |||||
| job.ContainerIp = taskRes.TaskStatuses[0].ContainerIP | |||||
| job.ContainerID = taskRes.TaskStatuses[0].ContainerID | |||||
| job.Status = taskRes.TaskStatuses[0].State | |||||
| } | |||||
| if result.JobStatus.State != string(models.JobWaiting) { | |||||
| models.ModelComputeAndSetDuration(job, result) | |||||
| if result.JobStatus.State != string(models.JobWaiting) { | |||||
| models.ModelComputeAndSetDuration(job, result) | |||||
| err = models.UpdateModelConvert(job) | |||||
| if err != nil { | |||||
| log.Error("UpdateJob failed:", err) | |||||
| } | |||||
| } | |||||
| ctx.JSON(http.StatusOK, map[string]interface{}{ | |||||
| "ID": ID, | |||||
| "JobName": result.Config.JobName, | |||||
| "JobStatus": result.JobStatus.State, | |||||
| "SubState": result.JobStatus.SubState, | |||||
| "CreatedTime": time.Unix(result.JobStatus.CreatedTime/1000, 0).Format("2006-01-02 15:04:05"), | |||||
| "CompletedTime": time.Unix(result.JobStatus.CompletedTime/1000, 0).Format("2006-01-02 15:04:05"), | |||||
| }) | |||||
| } else { | |||||
| result, err := modelarts.GetTrainJob(job.CloudBrainTaskId, job.ModelArtsVersionId) | |||||
| if err != nil { | |||||
| log.Error("get modelart job failed:", err) | |||||
| } | |||||
| job.Status = modelarts.TransTrainJobStatus(result.IntStatus) | |||||
| job.RunTime = result.Duration | |||||
| job.TrainJobDuration = result.TrainJobDuration | |||||
| err = models.UpdateModelConvert(job) | err = models.UpdateModelConvert(job) | ||||
| if err != nil { | if err != nil { | ||||
| log.Error("UpdateJob failed:", err) | log.Error("UpdateJob failed:", err) | ||||
| } | } | ||||
| } | |||||
| ctx.JSON(http.StatusOK, map[string]interface{}{ | |||||
| "ID": ID, | |||||
| "JobName": result.Config.JobName, | |||||
| "JobStatus": result.JobStatus.State, | |||||
| "SubState": result.JobStatus.SubState, | |||||
| "CreatedTime": time.Unix(result.JobStatus.CreatedTime/1000, 0).Format("2006-01-02 15:04:05"), | |||||
| "CompletedTime": time.Unix(result.JobStatus.CompletedTime/1000, 0).Format("2006-01-02 15:04:05"), | |||||
| }) | |||||
| ctx.JSON(http.StatusOK, map[string]interface{}{ | |||||
| "ID": ID, | |||||
| "JobStatus": job.Status, | |||||
| }) | |||||
| } | |||||
| } | } | ||||