diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 0e461869f..51d8dd7e8 100755 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -854,7 +854,10 @@ func RegisterRoutes(m *macaron.Macaron) { }, reqRepoReader(models.UnitTypeCloudBrain)) m.Group("/modelarts", 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)) }, repoAssignment()) diff --git a/routers/api/v1/repo/modelarts.go b/routers/api/v1/repo/modelarts.go index 1b58a2fab..1687c479a 100755 --- a/routers/api/v1/repo/modelarts.go +++ b/routers/api/v1/repo/modelarts.go @@ -11,9 +11,10 @@ import ( "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/modelarts" "net/http" + "strconv" ) -func GetModelArtsTask(ctx *context.APIContext) { +func GetModelArtsNotebook(ctx *context.APIContext) { var ( 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, + }) + +} diff --git a/templates/repo/modelarts/trainjob/index.tmpl b/templates/repo/modelarts/trainjob/index.tmpl index 4b097dd9e..00c81517d 100755 --- a/templates/repo/modelarts/trainjob/index.tmpl +++ b/templates/repo/modelarts/trainjob/index.tmpl @@ -92,9 +92,9 @@ -
+
@@ -181,4 +181,24 @@ .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); + }); + }); + });