| @@ -854,7 +854,10 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||
| }, reqRepoReader(models.UnitTypeCloudBrain)) | }, reqRepoReader(models.UnitTypeCloudBrain)) | ||||
| m.Group("/modelarts", func() { | m.Group("/modelarts", func() { | ||||
| m.Group("/notebook", func() { | m.Group("/notebook", func() { | ||||
| m.Get("/:jobid", repo.GetModelArtsTask) | |||||
| m.Get("/:jobid", repo.GetModelArtsNotebook) | |||||
| }) | |||||
| m.Group("/train-job", func() { | |||||
| m.Get("/:jobid", repo.GetModelArtsTrainJob) | |||||
| }) | }) | ||||
| }, reqRepoReader(models.UnitTypeCloudBrain)) | }, reqRepoReader(models.UnitTypeCloudBrain)) | ||||
| }, repoAssignment()) | }, repoAssignment()) | ||||
| @@ -11,9 +11,10 @@ import ( | |||||
| "code.gitea.io/gitea/modules/log" | "code.gitea.io/gitea/modules/log" | ||||
| "code.gitea.io/gitea/modules/modelarts" | "code.gitea.io/gitea/modules/modelarts" | ||||
| "net/http" | "net/http" | ||||
| "strconv" | |||||
| ) | ) | ||||
| func GetModelArtsTask(ctx *context.APIContext) { | |||||
| func GetModelArtsNotebook(ctx *context.APIContext) { | |||||
| var ( | var ( | ||||
| err error | err error | ||||
| ) | ) | ||||
| @@ -43,3 +44,34 @@ func GetModelArtsTask(ctx *context.APIContext) { | |||||
| }) | }) | ||||
| } | } | ||||
| func GetModelArtsTrainJob(ctx *context.APIContext) { | |||||
| var ( | |||||
| err error | |||||
| ) | |||||
| jobID := ctx.Params(":jobid") | |||||
| repoID := ctx.Repo.Repository.ID | |||||
| job, err := models.GetRepoCloudBrainByJobID(repoID, jobID) | |||||
| if err != nil { | |||||
| ctx.NotFound(err) | |||||
| return | |||||
| } | |||||
| result, err := modelarts.GetTrainJob(jobID, strconv.FormatInt(job.VersionID, 10)) | |||||
| if err != nil { | |||||
| ctx.NotFound(err) | |||||
| return | |||||
| } | |||||
| job.Status = modelarts.TransTrainJobStatus(result.IntStatus) | |||||
| err = models.UpdateJob(job) | |||||
| if err != nil { | |||||
| log.Error("UpdateJob failed:", err) | |||||
| } | |||||
| ctx.JSON(http.StatusOK, map[string]interface{}{ | |||||
| "JobID": jobID, | |||||
| "JobStatus": job.Status, | |||||
| }) | |||||
| } | |||||
| @@ -92,9 +92,9 @@ | |||||
| </div> | </div> | ||||
| <!-- 任务创建时间 --> | <!-- 任务创建时间 --> | ||||
| <div class="three wide column"> | |||||
| <!--<div class="three wide column"> | |||||
| <span class="ui text center">{{svg "octicon-flame" 16}} {{TimeSinceUnix .CreatedUnix $.Lang}}</span> | <span class="ui text center">{{svg "octicon-flame" 16}} {{TimeSinceUnix .CreatedUnix $.Lang}}</span> | ||||
| </div> | |||||
| </div>--> | |||||
| <!-- 删除 --> | <!-- 删除 --> | ||||
| <div class="two wide column"> | <div class="two wide column"> | ||||
| @@ -181,4 +181,24 @@ | |||||
| .modal('show') | .modal('show') | ||||
| } | } | ||||
| } | } | ||||
| // 加载任务状态 | |||||
| $(document).ready(function() { | |||||
| $(".job-status").each((index, job) => { | |||||
| const jobID = job.dataset.jobid; | |||||
| const repoPath = job.dataset.repopath; | |||||
| if (job.textContent.trim() == 'STOPPED') { | |||||
| return | |||||
| } | |||||
| $.get(`/api/v1/repos/${repoPath}/modelarts/train-job/${jobID}`, (data) => { | |||||
| const jobID = data.JobID | |||||
| const status = data.JobStatus | |||||
| $('#' + jobID).text(status) | |||||
| // console.log(data) | |||||
| }).fail(function(err) { | |||||
| console.log(err); | |||||
| }); | |||||
| }); | |||||
| }); | |||||
| </script> | </script> | ||||