From 76f7f4487321ec8ff36c8e2771dc6c2ca0e2cca3 Mon Sep 17 00:00:00 2001 From: liuzx Date: Mon, 21 Feb 2022 11:45:09 +0800 Subject: [PATCH 01/46] update --- models/cloudbrain.go | 3 ++- modules/auth/modelarts.go | 1 + modules/modelarts/modelarts.go | 16 +++++++++------- modules/util/util.go | 15 +++++++++++++++ routers/repo/modelarts.go | 13 ++++++++----- templates/repo/modelarts/trainjob/new.tmpl | 6 +++--- 6 files changed, 38 insertions(+), 16 deletions(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 0a14ea7b4..b898a8532 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -91,7 +91,8 @@ type Cloudbrain struct { ID int64 `xorm:"pk autoincr"` JobID string `xorm:"INDEX NOT NULL"` JobType string `xorm:"INDEX NOT NULL DEFAULT 'DEBUG'"` - JobName string + JobName string `xorm:"INDEX NOT NULL"` + DisplayJobName string Status string UserID int64 RepoID int64 diff --git a/modules/auth/modelarts.go b/modules/auth/modelarts.go index 821cd72f8..74d9ea831 100755 --- a/modules/auth/modelarts.go +++ b/modules/auth/modelarts.go @@ -27,6 +27,7 @@ func (f *CreateModelArtsNotebookForm) Validate(ctx *macaron.Context, errs bindin } type CreateModelArtsTrainJobForm struct { + DisplayJobName string `form:"display_job_name" binding:"Required"` JobName string `form:"job_name" binding:"Required"` Attachment string `form:"attachment" binding:"Required"` BootFile string `form:"boot_file" binding:"Required"` diff --git a/modules/modelarts/modelarts.go b/modules/modelarts/modelarts.go index 301c4cb0e..da38a7079 100755 --- a/modules/modelarts/modelarts.go +++ b/modules/modelarts/modelarts.go @@ -15,8 +15,8 @@ import ( const ( //notebook - storageTypeOBS = "obs" - autoStopDuration = 4 * 60 * 60 + storageTypeOBS = "obs" + autoStopDuration = 4 * 60 * 60 autoStopDurationMs = 4 * 60 * 60 * 1000 DataSetMountPath = "/home/ma-user/work" @@ -67,6 +67,7 @@ var ( type GenerateTrainJobReq struct { JobName string + DisplayJobName string Uuid string Description string CodeObsPath string @@ -275,12 +276,12 @@ func GenerateNotebook2(ctx *context.Context, jobName, uuid, description, flavor ImageID: "59a6e9f5-93c0-44dd-85b0-82f390c5d53a", PoolID: poolInfos.PoolInfo[0].PoolId, Feature: models.NotebookFeature, - Volume: models.VolumeReq{ - Capacity: 100, - Category: models.EVSCategory, - Ownership: models.ManagedOwnership, + Volume: models.VolumeReq{ + Capacity: 100, + Category: models.EVSCategory, + Ownership: models.ManagedOwnership, }, - WorkspaceID: "0", + WorkspaceID: "0", }) if err != nil { log.Error("createNotebook2 failed: %v", err.Error()) @@ -342,6 +343,7 @@ func GenerateTrainJob(ctx *context.Context, req *GenerateTrainJobReq) (err error RepoID: ctx.Repo.Repository.ID, JobID: strconv.FormatInt(jobResult.JobID, 10), JobName: req.JobName, + DisplayJobName: req.DisplayJobName, JobType: string(models.JobTypeTrain), Type: models.TypeCloudBrainTwo, VersionID: jobResult.VersionID, diff --git a/modules/util/util.go b/modules/util/util.go index 017277281..bd0f98556 100755 --- a/modules/util/util.go +++ b/modules/util/util.go @@ -6,8 +6,10 @@ package util import ( "bytes" + "math/rand" "strconv" "strings" + "time" ) // OptionalBool a boolean that can be "null" @@ -110,3 +112,16 @@ func AddZero(t int64) (m string) { return strconv.FormatInt(t, 10) } } + +func ConvertDisplayJobNameToJobName(DisplayName string) (JobName string) { + t := time.Now() + JobName = "openi" + strings.ToLower(cutNameString(DisplayName, 15)) + "t" + t.Format("2006010215") + strconv.Itoa(int(rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(100000))) + return JobName +} + +func cutNameString(str string, lens int) string { + if len(str) < lens { + return str + } + return str[:lens] +} diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 647afb0d0..1b7470148 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -25,6 +25,7 @@ import ( "code.gitea.io/gitea/modules/obs" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/storage" + "code.gitea.io/gitea/modules/util" ) const ( @@ -516,8 +517,8 @@ func trainJobNewDataPrepare(ctx *context.Context) error { //} t := time.Now() - var jobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] - ctx.Data["job_name"] = jobName + var displayJobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] + ctx.Data["display_job_name"] = displayJobName attachs, err := models.GetModelArtsTrainAttachments(ctx.User.ID) if err != nil { @@ -554,8 +555,8 @@ func trainJobNewDataPrepare(ctx *context.Context) error { } ctx.Data["flavor_infos"] = flavorInfos.Info - outputObsPath := "/" + setting.Bucket + modelarts.JobPath + jobName + modelarts.OutputPath - ctx.Data["train_url"] = outputObsPath + // outputObsPath := "/" + setting.Bucket + modelarts.JobPath + jobName + modelarts.OutputPath + // ctx.Data["train_url"] = outputObsPath ctx.Data["params"] = "" ctx.Data["branchName"] = ctx.Repo.BranchName @@ -841,7 +842,8 @@ func versionErrorDataPrepare(ctx *context.Context, form auth.CreateModelArtsTrai func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) { ctx.Data["PageIsTrainJob"] = true VersionOutputPath := modelarts.GetOutputPathByCount(modelarts.TotalVersionCount) - jobName := form.JobName + displayJobName := form.DisplayJobName + jobName := util.ConvertDisplayJobNameToJobName(displayJobName) uuid := form.Attachment description := form.Description workServerNumber := form.WorkServerNumber @@ -993,6 +995,7 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) req := &modelarts.GenerateTrainJobReq{ JobName: jobName, + DisplayJobName: displayJobName, DataUrl: dataPath, Description: description, CodeObsPath: codeObsPath, diff --git a/templates/repo/modelarts/trainjob/new.tmpl b/templates/repo/modelarts/trainjob/new.tmpl index 02fe8f4fc..0198dd813 100755 --- a/templates/repo/modelarts/trainjob/new.tmpl +++ b/templates/repo/modelarts/trainjob/new.tmpl @@ -80,7 +80,7 @@

{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:

- + 请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。
@@ -391,8 +391,8 @@ } ] }, - job_name:{ - identifier : 'job_name', + display_job_name:{ + identifier : 'display_job_name', rules: [ { type: 'regExp[/^[a-zA-Z0-9-_]{1,64}[^-]$/]', From 282841c0d86ed2a6a4812a432d5f2cbc3985a31d Mon Sep 17 00:00:00 2001 From: liuzx Date: Mon, 21 Feb 2022 14:47:59 +0800 Subject: [PATCH 02/46] fix-jobname --- routers/repo/modelarts.go | 8 +++++++- templates/repo/modelarts/trainjob/index.tmpl | 4 ++-- templates/repo/modelarts/trainjob/show.tmpl | 4 ++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 1b7470148..5bad2fbe5 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -479,6 +479,9 @@ func TrainJobIndex(ctx *context.Context) { tasks[i].CanDel = cloudbrain.CanDeleteJob(ctx, &task.Cloudbrain) tasks[i].CanModify = cloudbrain.CanModifyJob(ctx, &task.Cloudbrain) tasks[i].ComputeResource = models.NPUResource + if tasks[i].DisplayJobName == "" { + tasks[i].DisplayJobName = tasks[i].JobName + } } pager := context.NewPagination(int(count), setting.UI.IssuePagingNum, page, 5) @@ -1447,13 +1450,16 @@ func TrainJobShow(ctx *context.Context) { VersionListTasks[i].CanDel = cloudbrain.CanDeleteJob(ctx, &task.Cloudbrain) VersionListTasks[i].CanModify = cloudbrain.CanModifyJob(ctx, &task.Cloudbrain) + if VersionListTasks[i].DisplayJobName == "" { + VersionListTasks[i].DisplayJobName = VersionListTasks[i].JobName + } } pager := context.NewPagination(VersionListCount, setting.UI.IssuePagingNum, page, 5) pager.SetDefaultParams(ctx) ctx.Data["Page"] = pager ctx.Data["jobID"] = jobID - ctx.Data["jobName"] = VersionListTasks[0].JobName + ctx.Data["displayJobName"] = VersionListTasks[0].DisplayJobName ctx.Data["version_list_task"] = VersionListTasks ctx.Data["version_list_count"] = VersionListCount ctx.HTML(http.StatusOK, tplModelArtsTrainJobShow) diff --git a/templates/repo/modelarts/trainjob/index.tmpl b/templates/repo/modelarts/trainjob/index.tmpl index 3818df67a..81252170f 100755 --- a/templates/repo/modelarts/trainjob/index.tmpl +++ b/templates/repo/modelarts/trainjob/index.tmpl @@ -102,9 +102,9 @@ diff --git a/templates/repo/modelarts/trainjob/show.tmpl b/templates/repo/modelarts/trainjob/show.tmpl index 81d36c1e9..ba07266c1 100755 --- a/templates/repo/modelarts/trainjob/show.tmpl +++ b/templates/repo/modelarts/trainjob/show.tmpl @@ -183,7 +183,7 @@ td, th { {{$.i18n.Tr "repo.modelarts.train_job"}}
/
-
{{.jobName}}
+
{{.displayJobName}}
{{range $k ,$v := .version_list_task}} @@ -260,7 +260,7 @@ td, th {
- {{.JobName}} + {{.DisplayJobName}}
From d6d976bed7008d79244d0cb73036ef30cf4938d7 Mon Sep 17 00:00:00 2001 From: liuzx Date: Mon, 21 Feb 2022 18:17:00 +0800 Subject: [PATCH 03/46] update --- models/cloudbrain.go | 11 +++++++ modules/modelarts/modelarts.go | 1 + routers/repo/modelarts.go | 33 ++++++++++++------- .../repo/modelarts/trainjob/version_new.tmpl | 23 +++++++++++-- 4 files changed, 55 insertions(+), 13 deletions(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index b898a8532..6115792ba 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -1315,6 +1315,17 @@ func updateJobTrainVersion(e Engine, job *Cloudbrain) error { return err } +func UpdateDisplayJobName(job *Cloudbrain) error { + return updateDisplayJobName(x, job) +} + +func updateDisplayJobName(e Engine, job *Cloudbrain) error { + var sess *xorm.Session + sess = e.Where("job_id = ?", job.JobID) + _, err := sess.Cols("display_job_name").Update(job) + return err +} + func DeleteJob(job *Cloudbrain) error { return deleteJob(x, job) } diff --git a/modules/modelarts/modelarts.go b/modules/modelarts/modelarts.go index da38a7079..03280d36f 100755 --- a/modules/modelarts/modelarts.go +++ b/modules/modelarts/modelarts.go @@ -428,6 +428,7 @@ func GenerateTrainJobVersion(ctx *context.Context, req *GenerateTrainJobReq, job RepoID: ctx.Repo.Repository.ID, JobID: strconv.FormatInt(jobResult.JobID, 10), JobName: req.JobName, + DisplayJobName: req.DisplayJobName, JobType: string(models.JobTypeTrain), Type: models.TypeCloudBrainTwo, VersionID: jobResult.VersionID, diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 5bad2fbe5..b983a4e17 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -46,6 +46,22 @@ const ( ) func DebugJobIndex(ctx *context.Context) { + //到任务首页时将DisplayJobName更新, + allTasks, count, err := models.Cloudbrains(&models.CloudbrainsOptions{}) + if err != nil { + ctx.ServerError("Get allTasks faild:", err) + return + } + for i, task := range allTasks { + if task.Cloudbrain.DisplayJobName == "" { + task.Cloudbrain.DisplayJobName = allTasks[i].Cloudbrain.JobName + err = models.UpdateDisplayJobName(&allTasks[i].Cloudbrain) + if err != nil { + log.Error("Update DisplayJobName failed:", err) + } + } + } + debugListType := ctx.Query("debugListType") ctx.Data["ListType"] = debugListType MustEnableCloudbrain(ctx) @@ -479,9 +495,6 @@ func TrainJobIndex(ctx *context.Context) { tasks[i].CanDel = cloudbrain.CanDeleteJob(ctx, &task.Cloudbrain) tasks[i].CanModify = cloudbrain.CanModifyJob(ctx, &task.Cloudbrain) tasks[i].ComputeResource = models.NPUResource - if tasks[i].DisplayJobName == "" { - tasks[i].DisplayJobName = tasks[i].JobName - } } pager := context.NewPagination(int(count), setting.UI.IssuePagingNum, page, 5) @@ -676,8 +689,7 @@ func trainJobNewVersionDataPrepare(ctx *context.Context) error { return err } - t := time.Now() - var jobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] + ctx.Data["display_job_name"] = task.DisplayJobName ctx.Data["job_name"] = task.JobName attachs, err := models.GetModelArtsTrainAttachments(ctx.User.ID) @@ -722,8 +734,8 @@ func trainJobNewVersionDataPrepare(ctx *context.Context) error { } ctx.Data["params"] = Parameters.Parameter - outputObsPath := "/" + setting.Bucket + modelarts.JobPath + jobName + modelarts.OutputPath - ctx.Data["train_url"] = outputObsPath + // outputObsPath := "/" + setting.Bucket + modelarts.JobPath + jobName + modelarts.OutputPath + // ctx.Data["train_url"] = outputObsPath branches, _, err := ctx.Repo.GitRepo.GetBranches(0, 0) if err != nil { @@ -1065,6 +1077,7 @@ func TrainJobCreateVersion(ctx *context.Context, form auth.CreateModelArtsTrainJ } VersionOutputPath := modelarts.GetOutputPathByCount(latestTask.TotalVersionCount + 1) + displayJobName := form.DisplayJobName jobName := form.JobName uuid := form.Attachment description := form.Description @@ -1226,7 +1239,8 @@ func TrainJobCreateVersion(ctx *context.Context, form auth.CreateModelArtsTrainJ return } req := &modelarts.GenerateTrainJobReq{ - JobName: task.JobName, + JobName: jobName, + DisplayJobName: displayJobName, DataUrl: dataPath, Description: description, CodeObsPath: codeObsPath, @@ -1450,9 +1464,6 @@ func TrainJobShow(ctx *context.Context) { VersionListTasks[i].CanDel = cloudbrain.CanDeleteJob(ctx, &task.Cloudbrain) VersionListTasks[i].CanModify = cloudbrain.CanModifyJob(ctx, &task.Cloudbrain) - if VersionListTasks[i].DisplayJobName == "" { - VersionListTasks[i].DisplayJobName = VersionListTasks[i].JobName - } } pager := context.NewPagination(VersionListCount, setting.UI.IssuePagingNum, page, 5) diff --git a/templates/repo/modelarts/trainjob/version_new.tmpl b/templates/repo/modelarts/trainjob/version_new.tmpl index 8b0159bbe..0af0778ba 100644 --- a/templates/repo/modelarts/trainjob/version_new.tmpl +++ b/templates/repo/modelarts/trainjob/version_new.tmpl @@ -82,11 +82,12 @@ {{end}} +

{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:

- - + +
@@ -426,6 +427,15 @@ } ] }, + display_job_name:{ + identifier : 'display_job_name', + rules: [ + { + type: 'regExp[/^[a-zA-Z0-9-_]{1,36}$/]', + prompt : '只包含大小写字母、数字、_和-,最长36个字符。' + } + ] + }, attachment:{ identifier : 'attachment', rules: [ @@ -483,6 +493,15 @@ } ] }, + display_job_name:{ + identifier : 'display_job_name', + rules: [ + { + type: 'regExp[/^[a-zA-Z0-9-_]{1,36}$/]', + prompt : '只包含大小写字母、数字、_和-,最长36个字符。' + } + ] + }, attachment:{ identifier : 'attachment', rules: [ From bafe77ae7ce6d3da4634c013926aa515b72c5338 Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 23 Feb 2022 11:46:14 +0800 Subject: [PATCH 04/46] fix-bug --- modules/auth/modelarts.go | 1 + modules/modelarts/modelarts.go | 27 +---- routers/repo/modelarts.go | 104 +++++++++++++----- .../repo/modelarts/inferencejob/new.tmpl | 6 +- templates/repo/modelarts/trainjob/new.tmpl | 2 +- 5 files changed, 83 insertions(+), 57 deletions(-) diff --git a/modules/auth/modelarts.go b/modules/auth/modelarts.go index 00ee1d551..2a55178f3 100755 --- a/modules/auth/modelarts.go +++ b/modules/auth/modelarts.go @@ -48,6 +48,7 @@ type CreateModelArtsTrainJobForm struct { } type CreateModelArtsInferenceJobForm struct { + DisplayJobName string `form:"display_job_name" binding:"Required"` JobName string `form:"job_name" binding:"Required"` Attachment string `form:"attachment" binding:"Required"` BootFile string `form:"boot_file" binding:"Required"` diff --git a/modules/modelarts/modelarts.go b/modules/modelarts/modelarts.go index 06a145e13..08d9cd869 100755 --- a/modules/modelarts/modelarts.go +++ b/modules/modelarts/modelarts.go @@ -96,33 +96,9 @@ type GenerateTrainJobReq struct { TotalVersionCount int } -type GenerateTrainJobVersionReq struct { - JobName string - Uuid string - Description string - CodeObsPath string - BootFile string - BootFileUrl string - DataUrl string - TrainUrl string - FlavorCode string - LogUrl string - PoolID string - WorkServerNumber int - EngineID int64 - Parameters []models.Parameter - Params string - PreVersionId int64 - CommitID string - BranchName string - FlavorName string - EngineName string - PreVersionName string - TotalVersionCount int -} - type GenerateInferenceJobReq struct { JobName string + DisplayJobName string Uuid string Description string CodeObsPath string @@ -577,6 +553,7 @@ func GenerateInferenceJob(ctx *context.Context, req *GenerateInferenceJobReq) (e RepoID: ctx.Repo.Repository.ID, JobID: jobID, JobName: req.JobName, + DisplayJobName: req.DisplayJobName, JobType: string(models.JobTypeInference), Type: models.TypeCloudBrainTwo, VersionID: jobResult.VersionID, diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 64c8fab46..4503d9b65 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -46,22 +46,6 @@ const ( ) func DebugJobIndex(ctx *context.Context) { - //到任务首页时将DisplayJobName更新, - allTasks, count, err := models.Cloudbrains(&models.CloudbrainsOptions{}) - if err != nil { - ctx.ServerError("Get allTasks faild:", err) - return - } - for i, task := range allTasks { - if task.Cloudbrain.DisplayJobName == "" { - task.Cloudbrain.DisplayJobName = allTasks[i].Cloudbrain.JobName - err = models.UpdateDisplayJobName(&allTasks[i].Cloudbrain) - if err != nil { - log.Error("Update DisplayJobName failed:", err) - } - } - } - debugListType := ctx.Query("debugListType") ctx.Data["ListType"] = debugListType MustEnableCloudbrain(ctx) @@ -608,8 +592,8 @@ func trainJobErrorNewDataPrepare(ctx *context.Context, form auth.CreateModelArts //} t := time.Now() - var jobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] - ctx.Data["job_name"] = jobName + var displayJobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] + ctx.Data["display_job_name"] = displayJobName attachs, err := models.GetModelArtsTrainAttachments(ctx.User.ID) if err != nil { @@ -646,8 +630,8 @@ func trainJobErrorNewDataPrepare(ctx *context.Context, form auth.CreateModelArts } ctx.Data["flavor_infos"] = flavorInfos.Info - outputObsPath := "/" + setting.Bucket + modelarts.JobPath + jobName + modelarts.OutputPath - ctx.Data["train_url"] = outputObsPath + // outputObsPath := "/" + setting.Bucket + modelarts.JobPath + jobName + modelarts.OutputPath + // ctx.Data["train_url"] = outputObsPath configList, err := getConfigList(modelarts.PerPage, 1, modelarts.SortByCreateTime, "desc", "", modelarts.ConfigTypeCustom) if err != nil { @@ -886,6 +870,44 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) VersionCount := modelarts.VersionCount EngineName := form.EngineName + if err := paramCheckCreateTrainJob(form); err != nil { + log.Error("paramCheckCreateTrainJob failed:(%v)", err) + trainJobErrorNewDataPrepare(ctx, form) + ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobNew, &form) + return + } + + //判断项目内任务名称是否重复 + var jobTypes []string + jobTypes = append(jobTypes, string(models.JobTypeTrain)) + tasks, _, err := models.Cloudbrains(&models.CloudbrainsOptions{ + ListOptions: models.ListOptions{ + PageSize: setting.UI.IssuePagingNum, + }, + RepoID: repo.ID, + Type: models.TypeCloudBrainTwo, + JobTypeNot: false, + JobTypes: jobTypes, + IsLatestVersion: modelarts.IsLatestVersion, + }) + if err == nil { + for _, task := range tasks { + if strings.EqualFold(task.JobName, displayJobName) { + log.Error("the job name did already exist", ctx.Data["MsgID"]) + trainJobErrorNewDataPrepare(ctx, form) + ctx.RenderWithErr("任务名称已经被使用!", tplModelArtsTrainJobNew, &form) + return + } + } + } else { + if !models.IsErrJobNotExist(err) { + log.Error("system error, %v", err, ctx.Data["MsgID"]) + trainJobErrorNewDataPrepare(ctx, form) + ctx.RenderWithErr("system error", tplModelArtsTrainJobNew, &form) + return + } + } + count, err := models.GetCloudbrainTrainJobCountByUserID(ctx.User.ID) if err != nil { log.Error("GetCloudbrainTrainJobCountByUserID failed:%v", err, ctx.Data["MsgID"]) @@ -901,13 +923,6 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) } } - if err := paramCheckCreateTrainJob(form); err != nil { - log.Error("paramCheckCreateTrainJob failed:(%v)", err) - trainJobErrorNewDataPrepare(ctx, form) - ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobNew, &form) - return - } - //todo: del the codeLocalPath _, err = ioutil.ReadDir(codeLocalPath) if err == nil { @@ -1677,7 +1692,8 @@ func getConfigList(perPage, page int, sortBy, order, searchContent, configType s func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInferenceJobForm) { ctx.Data["PageIsTrainJob"] = true VersionOutputPath := modelarts.GetOutputPathByCount(modelarts.TotalVersionCount) - jobName := form.JobName + displayJobName := form.DisplayJobName + jobName := util.ConvertDisplayJobNameToJobName(displayJobName) uuid := form.Attachment description := form.Description workServerNumber := form.WorkServerNumber @@ -1712,6 +1728,37 @@ func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInference return } + //判断项目内任务名称是否重复 + var jobTypes []string + jobTypes = append(jobTypes, string(models.JobTypeTrain)) + tasks, _, err := models.Cloudbrains(&models.CloudbrainsOptions{ + ListOptions: models.ListOptions{ + PageSize: setting.UI.IssuePagingNum, + }, + RepoID: repo.ID, + Type: models.TypeCloudBrainTwo, + JobTypeNot: false, + JobTypes: jobTypes, + IsLatestVersion: modelarts.IsLatestVersion, + }) + if err == nil { + for _, task := range tasks { + if strings.EqualFold(task.JobName, displayJobName) { + log.Error("the job name did already exist", ctx.Data["MsgID"]) + inferenceJobErrorNewDataPrepare(ctx, form) + ctx.RenderWithErr("任务名称已经被使用!", tplModelArtsInferenceJobNew, &form) + return + } + } + } else { + if !models.IsErrJobNotExist(err) { + log.Error("system error, %v", err, ctx.Data["MsgID"]) + inferenceJobErrorNewDataPrepare(ctx, form) + ctx.RenderWithErr("system error", tplModelArtsInferenceJobNew, &form) + return + } + } + count, err := models.GetCloudbrainInferenceJobCountByUserID(ctx.User.ID) if err != nil { log.Error("GetCloudbrainInferenceJobCountByUserID failed:%v", err, ctx.Data["MsgID"]) @@ -1798,6 +1845,7 @@ func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInference req := &modelarts.GenerateInferenceJobReq{ JobName: jobName, + DisplayJobName: displayJobName, DataUrl: dataPath, Description: description, CodeObsPath: codeObsPath, diff --git a/templates/repo/modelarts/inferencejob/new.tmpl b/templates/repo/modelarts/inferencejob/new.tmpl index 504a85abf..2a2ccd209 100644 --- a/templates/repo/modelarts/inferencejob/new.tmpl +++ b/templates/repo/modelarts/inferencejob/new.tmpl @@ -67,7 +67,7 @@

{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:

- + 请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。
@@ -414,8 +414,8 @@ } ] }, - job_name:{ - identifier : 'job_name', + display_job_name:{ + identifier : 'display_job_name', rules: [ { type: 'regExp[/^[a-zA-Z0-9-_]{1,64}[^-]$/]', diff --git a/templates/repo/modelarts/trainjob/new.tmpl b/templates/repo/modelarts/trainjob/new.tmpl index 0198dd813..0854f487c 100755 --- a/templates/repo/modelarts/trainjob/new.tmpl +++ b/templates/repo/modelarts/trainjob/new.tmpl @@ -80,7 +80,7 @@

{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:

- + 请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。
From 87fc8dcebe2dfe432ec76eecccbd39c7d14f54e7 Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 23 Feb 2022 16:43:34 +0800 Subject: [PATCH 05/46] update --- routers/repo/modelarts.go | 5 +++-- templates/repo/modelarts/inferencejob/index.tmpl | 4 ++-- templates/repo/modelarts/inferencejob/show.tmpl | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 4503d9b65..820f4debe 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -1956,8 +1956,8 @@ func inferenceJobNewDataPrepare(ctx *context.Context) error { ctx.Data["PageIsCloudBrain"] = true t := time.Now() - var jobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] - ctx.Data["job_name"] = jobName + var displayJobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] + ctx.Data["display_job_name"] = displayJobName attachs, err := models.GetModelArtsTrainAttachments(ctx.User.ID) if err != nil { @@ -2131,6 +2131,7 @@ func InferenceJobShow(ctx *context.Context) { ctx.Data["labelName"] = LabelName ctx.Data["jobID"] = jobID ctx.Data["jobName"] = task.JobName + ctx.Data["displayJobName"] = task.DisplayJobName ctx.Data["task"] = task ctx.Data["canDownload"] = cloudbrain.CanDeleteJob(ctx, task) diff --git a/templates/repo/modelarts/inferencejob/index.tmpl b/templates/repo/modelarts/inferencejob/index.tmpl index 4a071e7dd..0e7755ff8 100644 --- a/templates/repo/modelarts/inferencejob/index.tmpl +++ b/templates/repo/modelarts/inferencejob/index.tmpl @@ -105,9 +105,9 @@ diff --git a/templates/repo/modelarts/inferencejob/show.tmpl b/templates/repo/modelarts/inferencejob/show.tmpl index 30f7d7a88..4e221acd4 100644 --- a/templates/repo/modelarts/inferencejob/show.tmpl +++ b/templates/repo/modelarts/inferencejob/show.tmpl @@ -174,7 +174,7 @@ td, th { {{$.i18n.Tr "repo.modelarts.infer_job"}}
/
-
{{.jobName}}
+
{{.displayJobName}}
{{with .task}} @@ -199,7 +199,7 @@ td, th {
- {{.JobName}} + {{.DisplayJobName}}
From 0d65992fcb6241fe02a62c1e8b5117f007d3ffaf Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 24 Feb 2022 15:16:26 +0800 Subject: [PATCH 06/46] fix-bug --- models/cloudbrain.go | 17 ++++----- modules/auth/modelarts.go | 11 +++--- modules/modelarts/modelarts.go | 6 ++-- routers/repo/cloudbrain.go | 4 +-- routers/repo/modelarts.go | 40 +++++++++++++++++++--- templates/repo/cloudbrain/new.tmpl | 6 ++-- templates/repo/modelarts/notebook/new.tmpl | 6 ++-- 7 files changed, 58 insertions(+), 32 deletions(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index d7a7b73e1..9f5d018dd 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -1327,6 +1327,12 @@ func GetCloudbrainsNeededStopByRepoID(repoID int64) ([]*Cloudbrain, error) { return cloudBrains, err } +func GetCloudbrainsByRepoIDAndJobName(repoID int64, jobType string, displayJobName string) ([]*Cloudbrain, error) { + cloudBrains := make([]*Cloudbrain, 0) + err := x.Cols("job_id", "status", "type", "version_id").Where("repo_id=? AND job_type =? AND display_job_name=?", repoID, jobType, displayJobName.Find(&cloudBrains) + return cloudBrains, err +} + func SetCloudbrainStatusByJobID(jobID string, status CloudbrainStatus) (err error) { cb := &Cloudbrain{JobID: jobID, Status: string(status)} _, err = x.Cols("status").Where("cloudbrain.job_id=?", jobID).Update(cb) @@ -1365,17 +1371,6 @@ func updateJobTrainVersion(e Engine, job *Cloudbrain) error { return err } -func UpdateDisplayJobName(job *Cloudbrain) error { - return updateDisplayJobName(x, job) -} - -func updateDisplayJobName(e Engine, job *Cloudbrain) error { - var sess *xorm.Session - sess = e.Where("job_id = ?", job.JobID) - _, err := sess.Cols("display_job_name").Update(job) - return err -} - func DeleteJob(job *Cloudbrain) error { return deleteJob(x, job) } diff --git a/modules/auth/modelarts.go b/modules/auth/modelarts.go index 2a55178f3..ce41f5d1e 100755 --- a/modules/auth/modelarts.go +++ b/modules/auth/modelarts.go @@ -16,11 +16,12 @@ func (f *CreateModelArtsForm) Validate(ctx *macaron.Context, errs binding.Errors } type CreateModelArtsNotebookForm struct { - JobName string `form:"job_name" binding:"Required"` - Attachment string `form:"attachment"` - Description string `form:"description"` - Flavor string `form:"flavor" binding:"Required"` - ImageId string `form:"image_id" binding:"Required"` + DisplayJobName string `form:"display_job_name" binding:"Required"` + JobName string `form:"job_name" binding:"Required"` + Attachment string `form:"attachment"` + Description string `form:"description"` + Flavor string `form:"flavor" binding:"Required"` + ImageId string `form:"image_id" binding:"Required"` } func (f *CreateModelArtsNotebookForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { diff --git a/modules/modelarts/modelarts.go b/modules/modelarts/modelarts.go index 08d9cd869..f71668f4d 100755 --- a/modules/modelarts/modelarts.go +++ b/modules/modelarts/modelarts.go @@ -243,7 +243,7 @@ func GenerateTask(ctx *context.Context, jobName, uuid, description, flavor strin return nil } -func GenerateNotebook2(ctx *context.Context, jobName, uuid, description, flavor, imageId string) error { +func GenerateNotebook2(ctx *context.Context, displayJobName, jobName, uuid, description, flavor, imageId string) error { if poolInfos == nil { json.Unmarshal([]byte(setting.PoolInfos), &poolInfos) } @@ -279,6 +279,7 @@ func GenerateNotebook2(ctx *context.Context, jobName, uuid, description, flavor, RepoID: ctx.Repo.Repository.ID, JobID: jobResult.ID, JobName: jobName, + DisplayJobName: displayJobName, JobType: string(models.JobTypeDebug), Type: models.TypeCloudBrainTwo, Uuid: uuid, @@ -331,7 +332,6 @@ func GenerateTrainJob(ctx *context.Context, req *GenerateTrainJobReq) (err error RepoID: ctx.Repo.Repository.ID, JobID: jobId, JobName: req.JobName, - DisplayJobName: req.DisplayJobName, JobType: string(models.JobTypeTrain), Type: models.TypeCloudBrainTwo, VersionID: jobResult.VersionID, @@ -416,7 +416,6 @@ func GenerateTrainJobVersion(ctx *context.Context, req *GenerateTrainJobReq, job RepoID: ctx.Repo.Repository.ID, JobID: strconv.FormatInt(jobResult.JobID, 10), JobName: req.JobName, - DisplayJobName: req.DisplayJobName, JobType: string(models.JobTypeTrain), Type: models.TypeCloudBrainTwo, VersionID: jobResult.VersionID, @@ -553,7 +552,6 @@ func GenerateInferenceJob(ctx *context.Context, req *GenerateInferenceJobReq) (e RepoID: ctx.Repo.Repository.ID, JobID: jobID, JobName: req.JobName, - DisplayJobName: req.DisplayJobName, JobType: string(models.JobTypeInference), Type: models.TypeCloudBrainTwo, VersionID: jobResult.VersionID, diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 880d28dcf..eafab4142 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -76,8 +76,8 @@ func jobNamePrefixValid(s string) string { func cloudBrainNewDataPrepare(ctx *context.Context) error { ctx.Data["PageIsCloudBrain"] = true t := time.Now() - var jobName = jobNamePrefixValid(cutString(ctx.User.Name, 5)) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] - ctx.Data["job_name"] = jobName + var displayJobName = jobNamePrefixValid(cutString(ctx.User.Name, 5)) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] + ctx.Data["display_job_name"] = displayJobName result, err := cloudbrain.GetImages() if err != nil { diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 820f4debe..3521880a4 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -112,8 +112,8 @@ func NotebookNew(ctx *context.Context) { func notebookNewDataPrepare(ctx *context.Context) error { ctx.Data["PageIsCloudBrain"] = true t := time.Now() - var jobName = jobNamePrefixValid(cutString(ctx.User.Name, 5)) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] - ctx.Data["job_name"] = jobName + var displayJobName = jobNamePrefixValid(cutString(ctx.User.Name, 5)) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] + ctx.Data["display_job_name"] = displayJobName attachs, err := models.GetModelArtsUserAttachments(ctx.User.ID) if err != nil { @@ -181,12 +181,44 @@ func NotebookCreate(ctx *context.Context, form auth.CreateModelArtsNotebookForm) func Notebook2Create(ctx *context.Context, form auth.CreateModelArtsNotebookForm) { ctx.Data["PageIsNotebook"] = true - jobName := form.JobName + displayJobName := form.DisplayJobName + jobName := util.ConvertDisplayJobNameToJobName(displayJobName) uuid := form.Attachment description := form.Description flavor := form.Flavor imageId := form.ImageId + //判断项目内任务名称是否重复 + // var jobTypes []string + // jobTypes = append(jobTypes, string(models.JobTypeTrain)) + // tasks, _, err := models.Cloudbrains(&models.CloudbrainsOptions{ + // ListOptions: models.ListOptions{ + // PageSize: setting.UI.IssuePagingNum, + // }, + // RepoID: repo.ID, + // Type: models.TypeCloudBrainTwo, + // JobTypeNot: false, + // JobTypes: jobTypes, + // IsLatestVersion: modelarts.IsLatestVersion, + // }) + // if err == nil { + // for _, task := range tasks { + // if strings.EqualFold(task.JobName, displayJobName) { + // log.Error("the job name did already exist", ctx.Data["MsgID"]) + // trainJobErrorNewDataPrepare(ctx, form) + // ctx.RenderWithErr("任务名称已经被使用!", tplModelArtsTrainJobNew, &form) + // return + // } + // } + // } else { + // if !models.IsErrJobNotExist(err) { + // log.Error("system error, %v", err, ctx.Data["MsgID"]) + // trainJobErrorNewDataPrepare(ctx, form) + // ctx.RenderWithErr("system error", tplModelArtsTrainJobNew, &form) + // return + // } + // } + count, err := models.GetCloudbrainNotebookCountByUserID(ctx.User.ID) if err != nil { log.Error("GetCloudbrainNotebookCountByUserID failed:%v", err, ctx.Data["MsgID"]) @@ -216,7 +248,7 @@ func Notebook2Create(ctx *context.Context, form auth.CreateModelArtsNotebookForm } } - err = modelarts.GenerateNotebook2(ctx, jobName, uuid, description, flavor, imageId) + err = modelarts.GenerateNotebook2(ctx, displayJobName, jobName, uuid, description, flavor, imageId) if err != nil { log.Error("GenerateNotebook2 failed, %v", err, ctx.Data["MsgID"]) notebookNewDataPrepare(ctx) diff --git a/templates/repo/cloudbrain/new.tmpl b/templates/repo/cloudbrain/new.tmpl index 0735c593b..e27de03f0 100755 --- a/templates/repo/cloudbrain/new.tmpl +++ b/templates/repo/cloudbrain/new.tmpl @@ -147,7 +147,7 @@
- +
@@ -279,7 +279,7 @@ $(".icon.icons").css("visibility","hidden") } form.onsubmit = function(e){ - let value_task = $("input[name='job_name']").val() + let value_task = $("input[name='display_job_name']").val() let value_image = $("input[name='image']").val() let value_data = $("input[name='attachment']").val() let re = /^[a-z0-9][a-z0-9-_]{1,34}[a-z0-9-]$/ @@ -291,7 +291,7 @@ return false } let min_value_task = value_task.toLowerCase() - $("input[name='job_name']").attr("value",min_value_task) + $("input[name='display_job_name']").attr("value",min_value_task) document.getElementById("mask").style.display = "block" } diff --git a/templates/repo/modelarts/notebook/new.tmpl b/templates/repo/modelarts/notebook/new.tmpl index fb6e3c9be..8e9352884 100755 --- a/templates/repo/modelarts/notebook/new.tmpl +++ b/templates/repo/modelarts/notebook/new.tmpl @@ -48,7 +48,7 @@
- +
@@ -117,7 +117,7 @@ $('#messageInfo').css('display','none') form.onsubmit = function(e){ - let value_task = $("input[name='job_name']").val() + let value_task = $("input[name='display_job_name']").val() let re = /^[a-z0-9][a-z0-9-_]{1,36}$/ @@ -131,7 +131,7 @@ let min_value_task = value_task.toLowerCase() - $("input[name='job_name']").attr("value",min_value_task) + $("input[name='display_job_name']").attr("value",min_value_task) document.getElementById("mask").style.display = "block" } From 220eaf2a16d2efd5deff1fadd75724b0c368c525 Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 24 Feb 2022 17:00:00 +0800 Subject: [PATCH 07/46] update --- models/cloudbrain.go | 4 ++-- routers/repo/modelarts.go | 47 +++++++++++++++++++++++++++------------ 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 9f5d018dd..4514ae43c 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -1327,9 +1327,9 @@ func GetCloudbrainsNeededStopByRepoID(repoID int64) ([]*Cloudbrain, error) { return cloudBrains, err } -func GetCloudbrainsByRepoIDAndJobName(repoID int64, jobType string, displayJobName string) ([]*Cloudbrain, error) { +func GetCloudbrainsByRepoIDAndDisplayName(repoID int64, jobType string, displayJobName string) ([]*Cloudbrain, error) { cloudBrains := make([]*Cloudbrain, 0) - err := x.Cols("job_id", "status", "type", "version_id").Where("repo_id=? AND job_type =? AND display_job_name=?", repoID, jobType, displayJobName.Find(&cloudBrains) + err := x.Cols("job_id", "job_name", "repo_id", "user_id", "job_type", "display_job_name").Where("repo_id=? AND job_type =? AND display_job_name LIKE ?", repoID, jobType, displayJobName+"%").Find(&cloudBrains) return cloudBrains, err } diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 3521880a4..67ea9be4f 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -908,23 +908,11 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobNew, &form) return } - //判断项目内任务名称是否重复 - var jobTypes []string - jobTypes = append(jobTypes, string(models.JobTypeTrain)) - tasks, _, err := models.Cloudbrains(&models.CloudbrainsOptions{ - ListOptions: models.ListOptions{ - PageSize: setting.UI.IssuePagingNum, - }, - RepoID: repo.ID, - Type: models.TypeCloudBrainTwo, - JobTypeNot: false, - JobTypes: jobTypes, - IsLatestVersion: modelarts.IsLatestVersion, - }) + tasks, err := models.GetCloudbrainsByRepoIDAndDisplayName(repo.ID, string(models.JobTypeTrain), displayJobName) if err == nil { for _, task := range tasks { - if strings.EqualFold(task.JobName, displayJobName) { + if strings.EqualFold(task.DisplayJobName, displayJobName) { log.Error("the job name did already exist", ctx.Data["MsgID"]) trainJobErrorNewDataPrepare(ctx, form) ctx.RenderWithErr("任务名称已经被使用!", tplModelArtsTrainJobNew, &form) @@ -940,6 +928,37 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) } } + // //判断项目内任务名称是否重复 + // var jobTypes []string + // jobTypes = append(jobTypes, string(models.JobTypeTrain)) + // tasks, _, err := models.Cloudbrains(&models.CloudbrainsOptions{ + // ListOptions: models.ListOptions{ + // PageSize: setting.UI.IssuePagingNum, + // }, + // RepoID: repo.ID, + // Type: models.TypeCloudBrainTwo, + // JobTypeNot: false, + // JobTypes: jobTypes, + // IsLatestVersion: modelarts.IsLatestVersion, + // }) + // if err == nil { + // for _, task := range tasks { + // if strings.EqualFold(task.JobName, displayJobName) { + // log.Error("the job name did already exist", ctx.Data["MsgID"]) + // trainJobErrorNewDataPrepare(ctx, form) + // ctx.RenderWithErr("任务名称已经被使用!", tplModelArtsTrainJobNew, &form) + // return + // } + // } + // } else { + // if !models.IsErrJobNotExist(err) { + // log.Error("system error, %v", err, ctx.Data["MsgID"]) + // trainJobErrorNewDataPrepare(ctx, form) + // ctx.RenderWithErr("system error", tplModelArtsTrainJobNew, &form) + // return + // } + // } + count, err := models.GetCloudbrainTrainJobCountByUserID(ctx.User.ID) if err != nil { log.Error("GetCloudbrainTrainJobCountByUserID failed:%v", err, ctx.Data["MsgID"]) From deb66c4af493137b58a635c29f95d7cc8776f7f4 Mon Sep 17 00:00:00 2001 From: liuzx Date: Fri, 25 Feb 2022 18:09:02 +0800 Subject: [PATCH 08/46] update --- models/cloudbrain.go | 4 +- modules/auth/cloudbrain.go | 1 + modules/modelarts/modelarts.go | 3 + routers/repo/cloudbrain.go | 24 ++- routers/repo/modelarts.go | 181 ++++++-------------- templates/repo/debugjob/index.tmpl | 2 +- templates/repo/modelarts/notebook/show.tmpl | 4 +- 7 files changed, 84 insertions(+), 135 deletions(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 4514ae43c..df681083d 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -1327,9 +1327,9 @@ func GetCloudbrainsNeededStopByRepoID(repoID int64) ([]*Cloudbrain, error) { return cloudBrains, err } -func GetCloudbrainsByRepoIDAndDisplayName(repoID int64, jobType string, displayJobName string) ([]*Cloudbrain, error) { +func GetCloudbrainsByRepoIDAndJobType(repoID int64, jobType string) ([]*Cloudbrain, error) { cloudBrains := make([]*Cloudbrain, 0) - err := x.Cols("job_id", "job_name", "repo_id", "user_id", "job_type", "display_job_name").Where("repo_id=? AND job_type =? AND display_job_name LIKE ?", repoID, jobType, displayJobName+"%").Find(&cloudBrains) + err := x.Cols("job_id", "job_name", "repo_id", "user_id", "job_type", "display_job_name").Where("repo_id=? AND job_type =?", repoID, jobType).Find(&cloudBrains) return cloudBrains, err } diff --git a/modules/auth/cloudbrain.go b/modules/auth/cloudbrain.go index 0d7ef1b02..9949feddc 100755 --- a/modules/auth/cloudbrain.go +++ b/modules/auth/cloudbrain.go @@ -7,6 +7,7 @@ import ( type CreateCloudBrainForm struct { JobName string `form:"job_name" binding:"Required"` + DisplayJobName string `form:"display_job_name" binding:"Required"` Image string `form:"image" binding:"Required"` Command string `form:"command" binding:"Required"` Attachment string `form:"attachment" binding:"Required"` diff --git a/modules/modelarts/modelarts.go b/modules/modelarts/modelarts.go index f71668f4d..56d32b71f 100755 --- a/modules/modelarts/modelarts.go +++ b/modules/modelarts/modelarts.go @@ -332,6 +332,7 @@ func GenerateTrainJob(ctx *context.Context, req *GenerateTrainJobReq) (err error RepoID: ctx.Repo.Repository.ID, JobID: jobId, JobName: req.JobName, + DisplayJobName: req.DisplayJobName, JobType: string(models.JobTypeTrain), Type: models.TypeCloudBrainTwo, VersionID: jobResult.VersionID, @@ -416,6 +417,7 @@ func GenerateTrainJobVersion(ctx *context.Context, req *GenerateTrainJobReq, job RepoID: ctx.Repo.Repository.ID, JobID: strconv.FormatInt(jobResult.JobID, 10), JobName: req.JobName, + DisplayJobName: req.DisplayJobName, JobType: string(models.JobTypeTrain), Type: models.TypeCloudBrainTwo, VersionID: jobResult.VersionID, @@ -552,6 +554,7 @@ func GenerateInferenceJob(ctx *context.Context, req *GenerateInferenceJobReq) (e RepoID: ctx.Repo.Repository.ID, JobID: jobID, JobName: req.JobName, + DisplayJobName: req.DisplayJobName, JobType: string(models.JobTypeInference), Type: models.TypeCloudBrainTwo, VersionID: jobResult.VersionID, diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index eafab4142..d97e32904 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -176,7 +176,8 @@ func CloudBrainNew(ctx *context.Context) { func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { ctx.Data["PageIsCloudBrain"] = true - jobName := form.JobName + displayJobName := form.DisplayJobName + jobName := util.ConvertDisplayJobNameToJobName(displayJobName) image := form.Image uuid := form.Attachment jobType := form.JobType @@ -184,6 +185,26 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { gpuQueue := form.GpuType codePath := setting.JobPath + jobName + cloudbrain.CodeMountPath resourceSpecId := form.ResourceSpecId + repo := ctx.Repo.Repository + + tasks, err := models.GetCloudbrainsByRepoIDAndJobType(repo.ID, string(models.JobTypeDebug)) + if err == nil { + for _, task := range tasks { + if strings.EqualFold(task.DisplayJobName, displayJobName) { + log.Error("the job name did already exist", ctx.Data["MsgID"]) + cloudBrainNewDataPrepare(ctx) + ctx.RenderWithErr("the job name did already exist", tplCloudBrainNew, &form) + return + } + } + } else { + if !models.IsErrJobNotExist(err) { + log.Error("system error, %v", err, ctx.Data["MsgID"]) + cloudBrainNewDataPrepare(ctx) + ctx.RenderWithErr("system error", tplCloudBrainNew, &form) + return + } + } if !jobNamePattern.MatchString(jobName) { ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tplCloudBrainNew, &form) @@ -226,7 +247,6 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { return } } - repo := ctx.Repo.Repository downloadCode(repo, codePath) uploadCodeToMinio(codePath+"/", jobName, cloudbrain.CodeMountPath+"/") diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 67ea9be4f..27ff09e21 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -187,37 +187,7 @@ func Notebook2Create(ctx *context.Context, form auth.CreateModelArtsNotebookForm description := form.Description flavor := form.Flavor imageId := form.ImageId - - //判断项目内任务名称是否重复 - // var jobTypes []string - // jobTypes = append(jobTypes, string(models.JobTypeTrain)) - // tasks, _, err := models.Cloudbrains(&models.CloudbrainsOptions{ - // ListOptions: models.ListOptions{ - // PageSize: setting.UI.IssuePagingNum, - // }, - // RepoID: repo.ID, - // Type: models.TypeCloudBrainTwo, - // JobTypeNot: false, - // JobTypes: jobTypes, - // IsLatestVersion: modelarts.IsLatestVersion, - // }) - // if err == nil { - // for _, task := range tasks { - // if strings.EqualFold(task.JobName, displayJobName) { - // log.Error("the job name did already exist", ctx.Data["MsgID"]) - // trainJobErrorNewDataPrepare(ctx, form) - // ctx.RenderWithErr("任务名称已经被使用!", tplModelArtsTrainJobNew, &form) - // return - // } - // } - // } else { - // if !models.IsErrJobNotExist(err) { - // log.Error("system error, %v", err, ctx.Data["MsgID"]) - // trainJobErrorNewDataPrepare(ctx, form) - // ctx.RenderWithErr("system error", tplModelArtsTrainJobNew, &form) - // return - // } - // } + repo := ctx.Repo.Repository count, err := models.GetCloudbrainNotebookCountByUserID(ctx.User.ID) if err != nil { @@ -233,12 +203,17 @@ func Notebook2Create(ctx *context.Context, form auth.CreateModelArtsNotebookForm return } } - _, err = models.GetCloudbrainByName(jobName) + + tasks, err := models.GetCloudbrainsByRepoIDAndJobType(repo.ID, string(models.JobTypeDebug)) if err == nil { - log.Error("the job name did already exist", ctx.Data["MsgID"]) - notebookNewDataPrepare(ctx) - ctx.RenderWithErr("the job name did already exist", tplModelArtsNotebookNew, &form) - return + for _, task := range tasks { + if strings.EqualFold(task.DisplayJobName, displayJobName) { + log.Error("the job name did already exist", ctx.Data["MsgID"]) + notebookNewDataPrepare(ctx) + ctx.RenderWithErr("the job name did already exist", tplModelArtsNotebookNew, &form) + return + } + } } else { if !models.IsErrJobNotExist(err) { log.Error("system error, %v", err, ctx.Data["MsgID"]) @@ -902,20 +877,35 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) VersionCount := modelarts.VersionCount EngineName := form.EngineName + count, err := models.GetCloudbrainTrainJobCountByUserID(ctx.User.ID) + if err != nil { + log.Error("GetCloudbrainTrainJobCountByUserID failed:%v", err, ctx.Data["MsgID"]) + trainJobErrorNewDataPrepare(ctx, form) + ctx.RenderWithErr("system error", tplModelArtsTrainJobNew, &form) + return + } else { + if count >= 1 { + log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) + trainJobErrorNewDataPrepare(ctx, form) + ctx.RenderWithErr("you have already a running or waiting task, can not create more", tplModelArtsTrainJobNew, &form) + return + } + } + if err := paramCheckCreateTrainJob(form); err != nil { log.Error("paramCheckCreateTrainJob failed:(%v)", err) trainJobErrorNewDataPrepare(ctx, form) ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobNew, &form) return } - //判断项目内任务名称是否重复 - tasks, err := models.GetCloudbrainsByRepoIDAndDisplayName(repo.ID, string(models.JobTypeTrain), displayJobName) + //Determine whether the task name of the task in the project is duplicated + tasks, err := models.GetCloudbrainsByRepoIDAndJobType(repo.ID, string(models.JobTypeTrain)) if err == nil { for _, task := range tasks { if strings.EqualFold(task.DisplayJobName, displayJobName) { log.Error("the job name did already exist", ctx.Data["MsgID"]) trainJobErrorNewDataPrepare(ctx, form) - ctx.RenderWithErr("任务名称已经被使用!", tplModelArtsTrainJobNew, &form) + ctx.RenderWithErr("the job name did already exist", tplModelArtsTrainJobNew, &form) return } } @@ -928,52 +918,6 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) } } - // //判断项目内任务名称是否重复 - // var jobTypes []string - // jobTypes = append(jobTypes, string(models.JobTypeTrain)) - // tasks, _, err := models.Cloudbrains(&models.CloudbrainsOptions{ - // ListOptions: models.ListOptions{ - // PageSize: setting.UI.IssuePagingNum, - // }, - // RepoID: repo.ID, - // Type: models.TypeCloudBrainTwo, - // JobTypeNot: false, - // JobTypes: jobTypes, - // IsLatestVersion: modelarts.IsLatestVersion, - // }) - // if err == nil { - // for _, task := range tasks { - // if strings.EqualFold(task.JobName, displayJobName) { - // log.Error("the job name did already exist", ctx.Data["MsgID"]) - // trainJobErrorNewDataPrepare(ctx, form) - // ctx.RenderWithErr("任务名称已经被使用!", tplModelArtsTrainJobNew, &form) - // return - // } - // } - // } else { - // if !models.IsErrJobNotExist(err) { - // log.Error("system error, %v", err, ctx.Data["MsgID"]) - // trainJobErrorNewDataPrepare(ctx, form) - // ctx.RenderWithErr("system error", tplModelArtsTrainJobNew, &form) - // return - // } - // } - - count, err := models.GetCloudbrainTrainJobCountByUserID(ctx.User.ID) - if err != nil { - log.Error("GetCloudbrainTrainJobCountByUserID failed:%v", err, ctx.Data["MsgID"]) - trainJobErrorNewDataPrepare(ctx, form) - ctx.RenderWithErr("system error", tplModelArtsTrainJobNew, &form) - return - } else { - if count >= 1 { - log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) - trainJobErrorNewDataPrepare(ctx, form) - ctx.RenderWithErr("you have already a running or waiting task, can not create more", tplModelArtsTrainJobNew, &form) - return - } - } - //todo: del the codeLocalPath _, err = ioutil.ReadDir(codeLocalPath) if err == nil { @@ -986,9 +930,9 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) if err := git.Clone(repo.RepoPath(), codeLocalPath, git.CloneRepoOptions{ Branch: branch_name, }); err != nil { - log.Error("创建任务失败,服务器超时!: %s (%v)", repo.FullName(), err) + log.Error("Create task failed, server timed out: %s (%v)", repo.FullName(), err) trainJobErrorNewDataPrepare(ctx, form) - ctx.RenderWithErr("创建任务失败,服务器超时!", tplModelArtsTrainJobNew, &form) + ctx.RenderWithErr("Create task failed, server timed out", tplModelArtsTrainJobNew, &form) return } @@ -1172,7 +1116,6 @@ func TrainJobCreateVersion(ctx *context.Context, form auth.CreateModelArtsTrainJ EngineName := form.EngineName isLatestVersion := modelarts.IsLatestVersion - //判断权限 canNewJob, _ := canUserCreateTrainJobVersion(ctx, latestTask.UserID) if !canNewJob { ctx.RenderWithErr("user cann't new trainjob", tplModelArtsTrainJobVersionNew, &form) @@ -1772,6 +1715,21 @@ func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInference ckptUrl := form.TrainUrl + form.CkptName + count, err := models.GetCloudbrainInferenceJobCountByUserID(ctx.User.ID) + if err != nil { + log.Error("GetCloudbrainInferenceJobCountByUserID failed:%v", err, ctx.Data["MsgID"]) + inferenceJobErrorNewDataPrepare(ctx, form) + ctx.RenderWithErr("system error", tplModelArtsInferenceJobNew, &form) + return + } else { + if count >= 1 { + log.Error("the user already has running or waiting inference task", ctx.Data["MsgID"]) + inferenceJobErrorNewDataPrepare(ctx, form) + ctx.RenderWithErr("you have already a running or waiting inference task, can not create more", tplModelArtsInferenceJobNew, &form) + return + } + } + if err := paramCheckCreateInferenceJob(form); err != nil { log.Error("paramCheckCreateInferenceJob failed:(%v)", err) inferenceJobErrorNewDataPrepare(ctx, form) @@ -1779,25 +1737,14 @@ func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInference return } - //判断项目内任务名称是否重复 - var jobTypes []string - jobTypes = append(jobTypes, string(models.JobTypeTrain)) - tasks, _, err := models.Cloudbrains(&models.CloudbrainsOptions{ - ListOptions: models.ListOptions{ - PageSize: setting.UI.IssuePagingNum, - }, - RepoID: repo.ID, - Type: models.TypeCloudBrainTwo, - JobTypeNot: false, - JobTypes: jobTypes, - IsLatestVersion: modelarts.IsLatestVersion, - }) + //Determine whether the task name of the task in the project is duplicated + tasks, err := models.GetCloudbrainsByRepoIDAndJobType(repo.ID, string(models.JobTypeInference)) if err == nil { for _, task := range tasks { - if strings.EqualFold(task.JobName, displayJobName) { + if strings.EqualFold(task.DisplayJobName, displayJobName) { log.Error("the job name did already exist", ctx.Data["MsgID"]) inferenceJobErrorNewDataPrepare(ctx, form) - ctx.RenderWithErr("任务名称已经被使用!", tplModelArtsInferenceJobNew, &form) + ctx.RenderWithErr("the job name did already exist", tplModelArtsInferenceJobNew, &form) return } } @@ -1810,21 +1757,6 @@ func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInference } } - count, err := models.GetCloudbrainInferenceJobCountByUserID(ctx.User.ID) - if err != nil { - log.Error("GetCloudbrainInferenceJobCountByUserID failed:%v", err, ctx.Data["MsgID"]) - inferenceJobErrorNewDataPrepare(ctx, form) - ctx.RenderWithErr("system error", tplModelArtsInferenceJobNew, &form) - return - } else { - if count >= 1 { - log.Error("the user already has running or waiting inference task", ctx.Data["MsgID"]) - inferenceJobErrorNewDataPrepare(ctx, form) - ctx.RenderWithErr("you have already a running or waiting inference task, can not create more", tplModelArtsInferenceJobNew, &form) - return - } - } - //todo: del the codeLocalPath _, err = ioutil.ReadDir(codeLocalPath) if err == nil { @@ -1837,9 +1769,9 @@ func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInference if err := git.Clone(repo.RepoPath(), codeLocalPath, git.CloneRepoOptions{ Branch: branch_name, }); err != nil { - log.Error("创建任务失败,服务器超时!: %s (%v)", repo.FullName(), err) + log.Error("Create task failed, server timed out: %s (%v)", repo.FullName(), err) inferenceJobErrorNewDataPrepare(ctx, form) - ctx.RenderWithErr("创建任务失败,服务器超时!", tplModelArtsInferenceJobNew, &form) + ctx.RenderWithErr("Create task failed, server timed out", tplModelArtsInferenceJobNew, &form) return } @@ -1909,7 +1841,7 @@ func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInference LogUrl: logObsPath, PoolID: poolID, Uuid: uuid, - Parameters: param, //modelarts训练时用到 + Parameters: param, //modelarts train parameters CommitID: commitID, BranchName: branch_name, Params: form.Params, @@ -1925,13 +1857,6 @@ func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInference ResultUrl: resultObsPath, } - //将params转换Parameters.Parameter,出错时返回给前端 - // var Parameters modelarts.Parameters - // if err := json.Unmarshal([]byte(params), &Parameters); err != nil { - // ctx.ServerError("json.Unmarshal failed:", err) - // return - // } - err = modelarts.GenerateInferenceJob(ctx, req) if err != nil { log.Error("GenerateTrainJob failed:%v", err.Error()) diff --git a/templates/repo/debugjob/index.tmpl b/templates/repo/debugjob/index.tmpl index c5a1b9ee6..75a53f5a8 100755 --- a/templates/repo/debugjob/index.tmpl +++ b/templates/repo/debugjob/index.tmpl @@ -288,7 +288,7 @@
diff --git a/templates/repo/modelarts/notebook/show.tmpl b/templates/repo/modelarts/notebook/show.tmpl index 787b20a99..b7c306e7a 100755 --- a/templates/repo/modelarts/notebook/show.tmpl +++ b/templates/repo/modelarts/notebook/show.tmpl @@ -16,14 +16,14 @@
/
{{with .task}} -
{{.JobName}}
+
{{.DisplayJobName}}
{{end}}
{{with .task}} -

任务名称: {{.JobName}}

+

任务名称: {{.DisplayJobName}}

{{end}}
From 2799c4cd6bf0103544504c46e5317fc495a1f647 Mon Sep 17 00:00:00 2001 From: liuzx Date: Mon, 28 Feb 2022 15:42:05 +0800 Subject: [PATCH 09/46] update --- modules/cloudbrain/cloudbrain.go | 3 +- routers/repo/cloudbrain.go | 74 ++++++++++--------- .../repo/cloudbrain/benchmark/index.tmpl | 2 +- templates/repo/cloudbrain/benchmark/new.tmpl | 2 +- templates/repo/cloudbrain/benchmark/show.tmpl | 4 +- templates/repo/cloudbrain/show.tmpl | 4 +- 6 files changed, 49 insertions(+), 40 deletions(-) diff --git a/modules/cloudbrain/cloudbrain.go b/modules/cloudbrain/cloudbrain.go index b86a2d3f4..21086a5e4 100755 --- a/modules/cloudbrain/cloudbrain.go +++ b/modules/cloudbrain/cloudbrain.go @@ -108,7 +108,7 @@ func AdminOrJobCreaterRight(ctx *context.Context) { } -func GenerateTask(ctx *context.Context, jobName, image, command, uuid, codePath, modelPath, benchmarkPath, snn4imagenetPath, brainScorePath, jobType, gpuQueue, description string, benchmarkTypeID, benchmarkChildTypeID, resourceSpecId int) error { +func GenerateTask(ctx *context.Context, displayJobName, jobName, image, command, uuid, codePath, modelPath, benchmarkPath, snn4imagenetPath, brainScorePath, jobType, gpuQueue, description string, benchmarkTypeID, benchmarkChildTypeID, resourceSpecId int) error { dataActualPath := setting.Attachment.Minio.RealPath + setting.Attachment.Minio.Bucket + "/" + setting.Attachment.Minio.BasePath + @@ -212,6 +212,7 @@ func GenerateTask(ctx *context.Context, jobName, image, command, uuid, codePath, RepoID: ctx.Repo.Repository.ID, JobID: jobID, JobName: jobName, + DisplayJobName: displayJobName, SubTaskName: SubTaskName, JobType: jobType, Type: models.TypeCloudBrainOne, diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index d97e32904..3d087435c 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -233,20 +233,6 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { } } - _, err = models.GetCloudbrainByName(jobName) - if err == nil { - log.Error("the job name did already exist", ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) - ctx.RenderWithErr("the job name did already exist", tplCloudBrainNew, &form) - return - } else { - if !models.IsErrJobNotExist(err) { - log.Error("system error, %v", err, ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) - ctx.RenderWithErr("system error", tplCloudBrainNew, &form) - return - } - } downloadCode(repo, codePath) uploadCodeToMinio(codePath+"/", jobName, cloudbrain.CodeMountPath+"/") @@ -278,7 +264,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { uploadCodeToMinio(brainScorePath+"/", jobName, cloudbrain.BrainScoreMountPath+"/") } - err = cloudbrain.GenerateTask(ctx, jobName, image, command, uuid, storage.GetMinioPath(jobName, cloudbrain.CodeMountPath+"/"), + err = cloudbrain.GenerateTask(ctx, displayJobName, jobName, image, command, uuid, storage.GetMinioPath(jobName, cloudbrain.CodeMountPath+"/"), storage.GetMinioPath(jobName, cloudbrain.ModelMountPath+"/"), storage.GetMinioPath(jobName, cloudbrain.BenchMarkMountPath+"/"), storage.GetMinioPath(jobName, cloudbrain.Snn4imagenetMountPath+"/"), storage.GetMinioPath(jobName, cloudbrain.BrainScoreMountPath+"/"), jobType, gpuQueue, form.Description, @@ -440,8 +426,8 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName) { ctx.Data["duration"] = util.AddZero(duration/3600000) + ":" + util.AddZero(duration%3600000/60000) + ":" + util.AddZero(duration%60000/1000) ctx.Data["task"] = task - // ctx.Data["jobID"] = task.JobID ctx.Data["jobName"] = task.JobName + ctx.Data["displayJobName"] = task.DisplayJobName version_list_task := make([]*models.Cloudbrain, 0) version_list_task = append(version_list_task, task) ctx.Data["version_list_task"] = version_list_task @@ -1219,7 +1205,8 @@ func getBenchmarkResourceSpec(resourceSpecID int) (int, error) { func CloudBrainBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { ctx.Data["PageIsCloudBrain"] = true - jobName := form.JobName + displayJobName := form.DisplayJobName + jobName := util.ConvertDisplayJobNameToJobName(displayJobName) image := form.Image gpuQueue := form.GpuType command := cloudbrain.CommandBenchmark @@ -1231,6 +1218,28 @@ func CloudBrainBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainF ctx.Data["description"] = form.Description ctx.Data["benchmarkTypeID"] = benchmarkTypeID ctx.Data["benchmark_child_types_id_hidden"] = benchmarkChildTypeID + + repo := ctx.Repo.Repository + + tasks, err := models.GetCloudbrainsByRepoIDAndJobType(repo.ID, string(models.JobTypeBenchmark)) + if err == nil { + for _, task := range tasks { + if strings.EqualFold(task.DisplayJobName, displayJobName) { + log.Error("the job name did already exist", ctx.Data["MsgID"]) + cloudBrainNewDataPrepare(ctx) + ctx.RenderWithErr("the job name did already exist", tplCloudBrainNew, &form) + return + } + } + } else { + if !models.IsErrJobNotExist(err) { + log.Error("system error, %v", err, ctx.Data["MsgID"]) + cloudBrainNewDataPrepare(ctx) + ctx.RenderWithErr("system error", tplCloudBrainNew, &form) + return + } + } + if !jobNamePattern.MatchString(jobName) { cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tplCloudBrainBenchmarkNew, &form) @@ -1276,21 +1285,20 @@ func CloudBrainBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainF } } - _, err = models.GetCloudbrainByName(jobName) - if err == nil { - log.Error("the job name did already exist", ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) - ctx.RenderWithErr("the job name did already exist", tplCloudBrainBenchmarkNew, &form) - return - } else { - if !models.IsErrJobNotExist(err) { - log.Error("GetCloudbrainByName failed, %v", err, ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) - ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) - return - } - } - repo := ctx.Repo.Repository + // _, err = models.GetCloudbrainByName(jobName) + // if err == nil { + // log.Error("the job name did already exist", ctx.Data["MsgID"]) + // cloudBrainNewDataPrepare(ctx) + // ctx.RenderWithErr("the job name did already exist", tplCloudBrainBenchmarkNew, &form) + // return + // } else { + // if !models.IsErrJobNotExist(err) { + // log.Error("GetCloudbrainByName failed, %v", err, ctx.Data["MsgID"]) + // cloudBrainNewDataPrepare(ctx) + // ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) + // return + // } + // } os.RemoveAll(codePath) if err := downloadCode(repo, codePath); err != nil { log.Error("downloadCode failed, %v", err, ctx.Data["MsgID"]) @@ -1354,7 +1362,7 @@ func CloudBrainBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainF //return } - err = cloudbrain.GenerateTask(ctx, jobName, image, command, childInfo.Attachment, storage.GetMinioPath(jobName, cloudbrain.CodeMountPath+"/"), + err = cloudbrain.GenerateTask(ctx, displayJobName, jobName, image, command, childInfo.Attachment, storage.GetMinioPath(jobName, cloudbrain.CodeMountPath+"/"), storage.GetMinioPath(jobName, cloudbrain.ModelMountPath+"/"), storage.GetMinioPath(jobName, cloudbrain.BenchMarkMountPath+"/"), storage.GetMinioPath(jobName, cloudbrain.Snn4imagenetMountPath+"/"), storage.GetMinioPath(jobName, cloudbrain.BrainScoreMountPath+"/"), string(models.JobTypeBenchmark), gpuQueue, form.Description, diff --git a/templates/repo/cloudbrain/benchmark/index.tmpl b/templates/repo/cloudbrain/benchmark/index.tmpl index e0eb0a6f3..70b55609d 100644 --- a/templates/repo/cloudbrain/benchmark/index.tmpl +++ b/templates/repo/cloudbrain/benchmark/index.tmpl @@ -100,7 +100,7 @@ diff --git a/templates/repo/cloudbrain/benchmark/new.tmpl b/templates/repo/cloudbrain/benchmark/new.tmpl index 5904ec094..d6367fdd8 100755 --- a/templates/repo/cloudbrain/benchmark/new.tmpl +++ b/templates/repo/cloudbrain/benchmark/new.tmpl @@ -79,7 +79,7 @@
- +
diff --git a/templates/repo/cloudbrain/benchmark/show.tmpl b/templates/repo/cloudbrain/benchmark/show.tmpl index cf18c4b8c..a6c529597 100755 --- a/templates/repo/cloudbrain/benchmark/show.tmpl +++ b/templates/repo/cloudbrain/benchmark/show.tmpl @@ -183,7 +183,7 @@ td, th { {{$.i18n.Tr "repo.modelarts.evaluate_job"}}
/
-
{{.jobName}}
+
{{.displayJobName}}
{{range $k ,$v := .version_list_task}} @@ -229,7 +229,7 @@ td, th {
- {{.JobName}} + {{.DisplayJobName}}
diff --git a/templates/repo/cloudbrain/show.tmpl b/templates/repo/cloudbrain/show.tmpl index 921ba179e..94c1d6dc7 100755 --- a/templates/repo/cloudbrain/show.tmpl +++ b/templates/repo/cloudbrain/show.tmpl @@ -16,14 +16,14 @@
/
{{with .task}} -
{{.JobName}}
+
{{.DisplayJobName}}
{{end}}
{{with .task}} -

任务名称: {{.JobName}}

+

任务名称: {{.DisplayJobName}}

{{end}}
From 87405f1c7178ee0a203a50eb272f23d599e6b28e Mon Sep 17 00:00:00 2001 From: liuzx Date: Mon, 28 Feb 2022 15:56:50 +0800 Subject: [PATCH 10/46] fix-bug --- routers/repo/cloudbrain.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 7f05f62e5..acbbdba35 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -1229,7 +1229,7 @@ func CloudBrainBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainF if strings.EqualFold(task.DisplayJobName, displayJobName) { log.Error("the job name did already exist", ctx.Data["MsgID"]) cloudBrainNewDataPrepare(ctx) - ctx.RenderWithErr("the job name did already exist", tplCloudBrainNew, &form) + ctx.RenderWithErr("the job name did already exist", tplCloudBrainBenchmarkNew, &form) return } } @@ -1237,7 +1237,7 @@ func CloudBrainBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainF if !models.IsErrJobNotExist(err) { log.Error("system error, %v", err, ctx.Data["MsgID"]) cloudBrainNewDataPrepare(ctx) - ctx.RenderWithErr("system error", tplCloudBrainNew, &form) + ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) return } } From 5392d9471f450bd0cf8c5e16db3304a686faf2fc Mon Sep 17 00:00:00 2001 From: liuzx Date: Mon, 28 Feb 2022 16:35:06 +0800 Subject: [PATCH 11/46] fix-bug --- routers/repo/modelarts.go | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 5cb1bc393..827d6cde9 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -1140,22 +1140,16 @@ func TrainJobCreateVersion(ctx *context.Context, form auth.CreateModelArtsTrainJ _, err = ioutil.ReadDir(codeLocalPath) if err == nil { os.RemoveAll(codeLocalPath) - } else { - log.Error("创建任务失败,原代码还未删除,请重试!: %s (%v)", repo.FullName(), err) - versionErrorDataPrepare(ctx, form) - ctx.RenderWithErr("创建任务失败,原代码还未删除,请重试!", tplModelArtsTrainJobVersionNew, &form) - return } - // os.RemoveAll(codeLocalPath) gitRepo, _ := git.OpenRepository(repo.RepoPath()) commitID, _ := gitRepo.GetBranchCommitID(branch_name) if err := git.Clone(repo.RepoPath(), codeLocalPath, git.CloneRepoOptions{ Branch: branch_name, }); err != nil { - log.Error("创建任务失败,任务名称已存在!: %s (%v)", repo.FullName(), err) + log.Error("Failed git clone repo to local(!: %s (%v)", repo.FullName(), err) versionErrorDataPrepare(ctx, form) - ctx.RenderWithErr("创建任务失败,任务名称已存在!", tplModelArtsTrainJobVersionNew, &form) + ctx.RenderWithErr("Failed git clone repo to local!", tplModelArtsTrainJobVersionNew, &form) return } From 341c5d717289d37cc7131e997f38d22523007591 Mon Sep 17 00:00:00 2001 From: liuzx Date: Tue, 1 Mar 2022 17:58:56 +0800 Subject: [PATCH 12/46] update --- models/cloudbrain.go | 1 + modules/cloudbrain/cloudbrain.go | 13 +++++++++---- modules/util/util.go | 8 +++++++- routers/api/v1/api.go | 2 +- routers/api/v1/repo/cloudbrain.go | 11 ++++++----- routers/repo/cloudbrain.go | 17 +++++++++-------- routers/routes/routes.go | 11 ++++------- templates/repo/cloudbrain/benchmark/index.tmpl | 2 +- templates/repo/debugjob/index.tmpl | 2 +- 9 files changed, 39 insertions(+), 28 deletions(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index df681083d..69469c51a 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -90,6 +90,7 @@ const ( type Cloudbrain struct { ID int64 `xorm:"pk autoincr"` JobID string `xorm:"INDEX NOT NULL"` + CloudBrainJobID string JobType string `xorm:"INDEX NOT NULL DEFAULT 'DEBUG'"` JobName string `xorm:"INDEX NOT NULL"` DisplayJobName string diff --git a/modules/cloudbrain/cloudbrain.go b/modules/cloudbrain/cloudbrain.go index 21086a5e4..82e32e5b1 100755 --- a/modules/cloudbrain/cloudbrain.go +++ b/modules/cloudbrain/cloudbrain.go @@ -6,6 +6,7 @@ import ( "strconv" "code.gitea.io/gitea/modules/storage" + "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" @@ -205,12 +206,14 @@ func GenerateTask(ctx *context.Context, displayJobName, jobName, image, command, return errors.New(jobResult.Msg) } - var jobID = jobResult.Payload["jobId"].(string) + var cloudBrainJobID = jobResult.Payload["jobId"].(string) + jobID := util.ConvertCloudBrainIdToJobId(cloudBrainJobID) err = models.CreateCloudbrain(&models.Cloudbrain{ Status: string(models.JobWaiting), UserID: ctx.User.ID, RepoID: ctx.Repo.Repository.ID, JobID: jobID, + CloudBrainJobID: cloudBrainJobID, JobName: jobName, DisplayJobName: displayJobName, SubTaskName: SubTaskName, @@ -337,13 +340,15 @@ func RestartTask(ctx *context.Context, task *models.Cloudbrain, newJobID *string return errors.New(jobResult.Msg) } - var jobID = jobResult.Payload["jobId"].(string) + var cloudBrainJobID = jobResult.Payload["jobId"].(string) newTask := &models.Cloudbrain{ Status: string(models.JobWaiting), UserID: task.UserID, RepoID: task.RepoID, - JobID: jobID, + JobID: task.JobID, + CloudBrainJobID: cloudBrainJobID, JobName: task.JobName, + DisplayJobName: task.DisplayJobName, SubTaskName: task.SubTaskName, JobType: task.JobType, Type: task.Type, @@ -360,7 +365,7 @@ func RestartTask(ctx *context.Context, task *models.Cloudbrain, newJobID *string return err } - *newJobID = jobID + *newJobID = task.JobID return nil } diff --git a/modules/util/util.go b/modules/util/util.go index bd0f98556..9d6cd7155 100755 --- a/modules/util/util.go +++ b/modules/util/util.go @@ -115,10 +115,16 @@ func AddZero(t int64) (m string) { func ConvertDisplayJobNameToJobName(DisplayName string) (JobName string) { t := time.Now() - JobName = "openi" + strings.ToLower(cutNameString(DisplayName, 15)) + "t" + t.Format("2006010215") + strconv.Itoa(int(rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(100000))) + JobName = "jobname" + strings.ToLower(cutNameString(DisplayName, 15)) + "t" + t.Format("2006010215") + strconv.Itoa(int(rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(100000))) return JobName } +func ConvertCloudBrainIdToJobId(CloudBrainJobID string) (JobID string) { + t := time.Now() + JobID = "jobid" + strings.ToLower(cutNameString(CloudBrainJobID, 15)) + "t" + t.Format("2006010215") + strconv.Itoa(int(rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(100000))) + return JobID +} + func cutNameString(str string, lens int) string { if len(str) < lens { return str diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index ef5ee6699..c6213c0cc 100755 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -881,7 +881,7 @@ func RegisterRoutes(m *macaron.Macaron) { }, reqAnyRepoReader()) m.Group("/cloudbrain", func() { m.Get("/:jobid", repo.GetCloudbrainTask) - m.Get("/:jobname/log", repo.CloudbrainGetLog) + m.Get("/:jobid/log", repo.CloudbrainGetLog) }, reqRepoReader(models.UnitTypeCloudBrain)) m.Group("/modelarts", func() { m.Group("/notebook", func() { diff --git a/routers/api/v1/repo/cloudbrain.go b/routers/api/v1/repo/cloudbrain.go index cea8d18f2..4deb15b0d 100755 --- a/routers/api/v1/repo/cloudbrain.go +++ b/routers/api/v1/repo/cloudbrain.go @@ -57,7 +57,8 @@ func GetCloudbrainTask(ctx *context.APIContext) { if err != nil { ctx.Data["error"] = err.Error() } - jobResult, err := cloudbrain.GetJob(job.JobID) + // jobResult, err := cloudbrain.GetJob(job.JobID) + jobResult, err := cloudbrain.GetJob(job.CloudBrainJobID) if err != nil { ctx.NotFound(err) return @@ -97,8 +98,8 @@ func GetCloudbrainTask(ctx *context.APIContext) { } func CloudbrainGetLog(ctx *context.Context) { - jobName := ctx.Params(":jobname") - job, err := models.GetCloudbrainByName(jobName) + jobID := ctx.Params(":jobid") + job, err := models.GetCloudbrainByJobID(jobID) if err != nil { log.Error("GetCloudbrainByJobName failed: %v", err, ctx.Data["MsgID"]) ctx.ServerError(err.Error(), err) @@ -106,7 +107,7 @@ func CloudbrainGetLog(ctx *context.Context) { } var hits []models.Hits - result, err := cloudbrain.GetJobLog(job.JobID) + result, err := cloudbrain.GetJobLog(job.CloudBrainJobID) if err != nil { log.Error("GetJobLog failed: %v", err, ctx.Data["MsgID"]) ctx.ServerError(err.Error(), err) @@ -145,7 +146,7 @@ func CloudbrainGetLog(ctx *context.Context) { } ctx.JSON(http.StatusOK, map[string]interface{}{ - "JobName": jobName, + "JobName": job.JobName, "Content": content, }) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index acbbdba35..e6f06d1c1 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -322,7 +322,7 @@ func CloudBrainRestart(ctx *context.Context) { } } - err = cloudbrain.RestartTask(ctx, task, &jobID) + err = cloudbrain.RestartTask(ctx, task, &task.CloudBrainJobID) if err != nil { log.Error("RestartTask failed:%v", err.Error(), ctx.Data["MsgID"]) resultCode = "-1" @@ -356,13 +356,13 @@ func CloudBrainShow(ctx *context.Context) { func cloudBrainShow(ctx *context.Context, tpName base.TplName) { ctx.Data["PageIsCloudBrain"] = true - var jobName = ctx.Params(":jobname") + var jobID = ctx.Params(":jobid") debugListType := ctx.Query("debugListType") - task, err := models.GetCloudbrainByName(jobName) + task, err := models.GetCloudbrainByJobID(jobID) if err != nil { ctx.Data["error"] = err.Error() } - result, err := cloudbrain.GetJob(task.JobID) + result, err := cloudbrain.GetJob(task.CloudBrainJobID) if err != nil { ctx.Data["error"] = err.Error() } @@ -437,12 +437,13 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName) { } func CloudBrainDebug(ctx *context.Context) { - debugUrl := setting.DebugServerHost + "jpylab_" + ctx.Cloudbrain.JobID + "_" + ctx.Cloudbrain.SubTaskName + // debugUrl := setting.DebugServerHost + "jpylab_" + ctx.Cloudbrain.JobID + "_" + ctx.Cloudbrain.SubTaskName + debugUrl := setting.DebugServerHost + "jpylab_" + ctx.Cloudbrain.CloudBrainJobID + "_" + ctx.Cloudbrain.SubTaskName ctx.Redirect(debugUrl) } func CloudBrainCommitImage(ctx *context.Context, form auth.CommitImageCloudBrainForm) { - err := cloudbrain.CommitImage(ctx.Cloudbrain.JobID, models.CommitImageParams{ + err := cloudbrain.CommitImage(ctx.Cloudbrain.CloudBrainJobID, models.CommitImageParams{ Ip: ctx.Cloudbrain.ContainerIp, TaskContainerId: ctx.Cloudbrain.ContainerID, ImageDescription: form.Description, @@ -478,7 +479,7 @@ func CloudBrainStop(ctx *context.Context) { break } - err := cloudbrain.StopJob(jobID) + err := cloudbrain.StopJob(task.CloudBrainJobID) if err != nil { log.Error("StopJob(%s) failed:%v", task.JobName, err, ctx.Data["msgID"]) resultCode = "-1" @@ -938,7 +939,7 @@ func SyncCloudbrainStatus() { for _, task := range cloudBrains { if task.Type == models.TypeCloudBrainOne { - result, err := cloudbrain.GetJob(task.JobID) + result, err := cloudbrain.GetJob(task.CloudBrainJobID) if err != nil { log.Error("GetJob(%s) failed:%v", task.JobName, err) continue diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 7fa06fa3b..4ebeee3bb 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -6,13 +6,14 @@ package routes import ( "bytes" - "code.gitea.io/gitea/routers/authentication" "encoding/gob" "net/http" "path" "text/template" "time" + "code.gitea.io/gitea/routers/authentication" + "code.gitea.io/gitea/modules/cloudbrain" "code.gitea.io/gitea/routers/operation" @@ -989,10 +990,8 @@ func RegisterRoutes(m *macaron.Macaron) { }, context.RepoRef()) m.Group("/cloudbrain", func() { - m.Group("/:jobname", func() { - m.Get("", reqRepoCloudBrainReader, repo.CloudBrainShow) - }) m.Group("/:jobid", func() { + m.Get("", reqRepoCloudBrainReader, repo.CloudBrainShow) m.Get("/debug", cloudbrain.AdminOrJobCreaterRight, repo.CloudBrainDebug) m.Post("/commit_image", cloudbrain.AdminOrJobCreaterRight, bindIgnErr(auth.CommitImageCloudBrainForm{}), repo.CloudBrainCommitImage) m.Post("/stop", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.CloudBrainStop) @@ -1007,10 +1006,8 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/benchmark", func() { m.Get("", reqRepoCloudBrainReader, repo.CloudBrainBenchmarkIndex) - m.Group("/:jobname", func() { - m.Get("", reqRepoCloudBrainReader, repo.CloudBrainBenchMarkShow) - }) m.Group("/:jobid", func() { + m.Get("", reqRepoCloudBrainReader, repo.CloudBrainBenchMarkShow) m.Post("/stop", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.CloudBrainStop) m.Post("/del", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.BenchmarkDel) m.Get("/rate", reqRepoCloudBrainReader, repo.GetRate) diff --git a/templates/repo/cloudbrain/benchmark/index.tmpl b/templates/repo/cloudbrain/benchmark/index.tmpl index 70b55609d..2a7fa6261 100644 --- a/templates/repo/cloudbrain/benchmark/index.tmpl +++ b/templates/repo/cloudbrain/benchmark/index.tmpl @@ -99,7 +99,7 @@ diff --git a/templates/repo/debugjob/index.tmpl b/templates/repo/debugjob/index.tmpl index 05ff67765..4fa3072ce 100755 --- a/templates/repo/debugjob/index.tmpl +++ b/templates/repo/debugjob/index.tmpl @@ -287,7 +287,7 @@
From cbf7f46412a6a7e3fb162c4ff240b215979d9c3e Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 2 Mar 2022 10:06:26 +0800 Subject: [PATCH 13/46] fix-bug --- routers/api/v1/repo/cloudbrain.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/api/v1/repo/cloudbrain.go b/routers/api/v1/repo/cloudbrain.go index 4deb15b0d..2d7d1836e 100755 --- a/routers/api/v1/repo/cloudbrain.go +++ b/routers/api/v1/repo/cloudbrain.go @@ -87,7 +87,7 @@ func GetCloudbrainTask(ctx *context.APIContext) { } ctx.JSON(http.StatusOK, map[string]interface{}{ - "JobID": result.Config.JobID, + "JobID": jobID, "JobName": result.Config.JobName, "JobStatus": result.JobStatus.State, "SubState": result.JobStatus.SubState, From d529fb9e50917ce228701a4b25bcb79ce7c8e05e Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 2 Mar 2022 10:23:38 +0800 Subject: [PATCH 14/46] fix-bug --- modules/util/util.go | 2 +- routers/repo/cloudbrain.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/util/util.go b/modules/util/util.go index 9d6cd7155..380ff35bd 100755 --- a/modules/util/util.go +++ b/modules/util/util.go @@ -115,7 +115,7 @@ func AddZero(t int64) (m string) { func ConvertDisplayJobNameToJobName(DisplayName string) (JobName string) { t := time.Now() - JobName = "jobname" + strings.ToLower(cutNameString(DisplayName, 15)) + "t" + t.Format("2006010215") + strconv.Itoa(int(rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(100000))) + JobName = "name" + strings.ToLower(cutNameString(DisplayName, 15)) + "t" + t.Format("2006010215") + strconv.Itoa(int(rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(100000))) return JobName } diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index e6f06d1c1..80e43510f 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -206,7 +206,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { } } - if !jobNamePattern.MatchString(jobName) { + if !jobNamePattern.MatchString(displayJobName) { ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tplCloudBrainNew, &form) return } From 9d461151c578f8f55df8e39669a5421f5ebda80b Mon Sep 17 00:00:00 2001 From: zouap Date: Wed, 2 Mar 2022 10:59:38 +0800 Subject: [PATCH 15/46] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- modules/cloudbrain/cloudbrain.go | 2 +- public/home/home.js | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/cloudbrain/cloudbrain.go b/modules/cloudbrain/cloudbrain.go index 82e32e5b1..104faf434 100755 --- a/modules/cloudbrain/cloudbrain.go +++ b/modules/cloudbrain/cloudbrain.go @@ -236,7 +236,7 @@ func GenerateTask(ctx *context.Context, displayJobName, jobName, image, command, if string(models.JobTypeBenchmark) == jobType { notification.NotifyOtherTask(ctx.User, ctx.Repo.Repository, jobID, jobName, models.ActionCreateBenchMarkTask) } else { - notification.NotifyOtherTask(ctx.User, ctx.Repo.Repository, jobID, jobName, models.ActionCreateDebugGPUTask) + notification.NotifyOtherTask(ctx.User, ctx.Repo.Repository, jobID, displayJobName, models.ActionCreateDebugGPUTask) } return nil diff --git a/public/home/home.js b/public/home/home.js index 78b9d517c..90b0c7745 100644 --- a/public/home/home.js +++ b/public/home/home.js @@ -129,10 +129,14 @@ socket.onmessage = function (e) { html += recordPrefix + actionName; html += " " + getRepotext(record) + "" } - else if(record.OpType == "24" || record.OpType == "25" || record.OpType == "26" || record.OpType == "27" || record.OpType == "28" || record.OpType == "29" || record.OpType == "30"){ + else if(record.OpType == "24" || record.OpType == "26" || record.OpType == "27" || record.OpType == "28" || record.OpType == "30"){ html += recordPrefix + actionName; html += " " + record.RefName + "" } + else if(record.OpType == "25" || record.OpType == "29"){ + html += recordPrefix + actionName; + html += " " + record.Content + "" + } else{ continue; } From cd803fd2ebecc12e56b8efff7a28936ff9574683 Mon Sep 17 00:00:00 2001 From: zouap Date: Wed, 2 Mar 2022 11:05:50 +0800 Subject: [PATCH 16/46] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- public/home/home.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/home/home.js b/public/home/home.js index 90b0c7745..16f229bf6 100644 --- a/public/home/home.js +++ b/public/home/home.js @@ -135,7 +135,7 @@ socket.onmessage = function (e) { } else if(record.OpType == "25" || record.OpType == "29"){ html += recordPrefix + actionName; - html += " " + record.Content + "" + html += " " + record.RefName + "" } else{ continue; @@ -158,7 +158,7 @@ function getTaskLink(record){ if(record.OpType == 24){ return re + "/datasets?type=" + record.Content; }else if(record.OpType == 25){ - return re + "/cloudbrain/" + record.RefName; + return re + "/cloudbrain/" + record.Content; }else if(record.OpType == 26){ return re + "/modelarts/notebook/" + record.Content; }else if(record.OpType == 27){ @@ -166,7 +166,7 @@ function getTaskLink(record){ }else if(record.OpType == 28){ return re + "/modelarts/inference-job/" + record.Content; }else if(record.OpType == 29){ - return re + "/cloudbrain/benchmark/" + record.RefName; + return re + "/cloudbrain/benchmark/" + record.Content; }else if(record.OpType == 30){ return re + "/modelmanage/show_model_info?name=" + record.RefName; } From ce37e55e02aceed18843940fe32a572713c671db Mon Sep 17 00:00:00 2001 From: zouap Date: Wed, 2 Mar 2022 11:17:25 +0800 Subject: [PATCH 17/46] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- templates/user/dashboard/feeds.tmpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/user/dashboard/feeds.tmpl b/templates/user/dashboard/feeds.tmpl index 519dcda8f..9724de269 100644 --- a/templates/user/dashboard/feeds.tmpl +++ b/templates/user/dashboard/feeds.tmpl @@ -73,7 +73,7 @@ {{else if eq .GetOpType 24}} {{$.i18n.Tr "action.upload_dataset" .GetRepoLink .Content .RefName | Str2html}} {{else if eq .GetOpType 25}} - {{$.i18n.Tr "action.task_gpudebugjob" .GetRepoLink .RefName .RefName | Str2html}} + {{$.i18n.Tr "action.task_gpudebugjob" .GetRepoLink .Content .RefName | Str2html}} {{else if eq .GetOpType 26}} {{$.i18n.Tr "action.task_npudebugjob" .GetRepoLink .Content .RefName | Str2html}} {{else if eq .GetOpType 27}} @@ -81,7 +81,7 @@ {{else if eq .GetOpType 28}} {{$.i18n.Tr "action.task_inferencejob" .GetRepoLink .Content .RefName | Str2html}} {{else if eq .GetOpType 29}} - {{$.i18n.Tr "action.task_benchmark" .GetRepoLink .RefName .RefName | Str2html}} + {{$.i18n.Tr "action.task_benchmark" .GetRepoLink .Content .RefName | Str2html}} {{else if eq .GetOpType 30}} {{$.i18n.Tr "action.task_createmodel" .GetRepoLink .RefName .RefName | Str2html}} {{end}} From 052a0486d16f2f9883c4a2a2d20028baaa628cf5 Mon Sep 17 00:00:00 2001 From: zouap Date: Wed, 2 Mar 2022 11:22:01 +0800 Subject: [PATCH 18/46] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- modules/cloudbrain/cloudbrain.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/cloudbrain/cloudbrain.go b/modules/cloudbrain/cloudbrain.go index 104faf434..1df4ff054 100755 --- a/modules/cloudbrain/cloudbrain.go +++ b/modules/cloudbrain/cloudbrain.go @@ -234,7 +234,7 @@ func GenerateTask(ctx *context.Context, displayJobName, jobName, image, command, } if string(models.JobTypeBenchmark) == jobType { - notification.NotifyOtherTask(ctx.User, ctx.Repo.Repository, jobID, jobName, models.ActionCreateBenchMarkTask) + notification.NotifyOtherTask(ctx.User, ctx.Repo.Repository, jobID, displayJobName, models.ActionCreateBenchMarkTask) } else { notification.NotifyOtherTask(ctx.User, ctx.Repo.Repository, jobID, displayJobName, models.ActionCreateDebugGPUTask) } From 50ff6a701025b10ac9c824cebaffcf4762e2cb60 Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 2 Mar 2022 17:34:37 +0800 Subject: [PATCH 19/46] update --- models/cloudbrain.go | 8 +++++++- modules/cloudbrain/cloudbrain.go | 10 +++------- modules/util/util.go | 6 ------ routers/api/v1/repo/cloudbrain.go | 4 ++-- routers/repo/cloudbrain.go | 33 +++++++++++++++---------------- routers/repo/modelarts.go | 22 ++++++++++++--------- routers/routes/routes.go | 6 +++--- 7 files changed, 44 insertions(+), 45 deletions(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 69469c51a..ba99761df 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -3,6 +3,7 @@ package models import ( "encoding/json" "fmt" + "strconv" "strings" "time" @@ -90,7 +91,6 @@ const ( type Cloudbrain struct { ID int64 `xorm:"pk autoincr"` JobID string `xorm:"INDEX NOT NULL"` - CloudBrainJobID string JobType string `xorm:"INDEX NOT NULL DEFAULT 'DEBUG'"` JobName string `xorm:"INDEX NOT NULL"` DisplayJobName string @@ -1306,6 +1306,12 @@ func GetCloudbrainByJobID(jobID string) (*Cloudbrain, error) { return getRepoCloudBrain(cb) } +func GetCloudbrainByID(id string) (*Cloudbrain, error) { + idInt64, _ := strconv.ParseInt(id, 10, 64) + cb := &Cloudbrain{ID: idInt64} + return getRepoCloudBrain(cb) +} + func GetCloudbrainByJobIDAndVersionName(jobID string, versionName string) (*Cloudbrain, error) { cb := &Cloudbrain{JobID: jobID, VersionName: versionName} return getRepoCloudBrain(cb) diff --git a/modules/cloudbrain/cloudbrain.go b/modules/cloudbrain/cloudbrain.go index 104faf434..8fdd91c9c 100755 --- a/modules/cloudbrain/cloudbrain.go +++ b/modules/cloudbrain/cloudbrain.go @@ -6,7 +6,6 @@ import ( "strconv" "code.gitea.io/gitea/modules/storage" - "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" @@ -206,14 +205,12 @@ func GenerateTask(ctx *context.Context, displayJobName, jobName, image, command, return errors.New(jobResult.Msg) } - var cloudBrainJobID = jobResult.Payload["jobId"].(string) - jobID := util.ConvertCloudBrainIdToJobId(cloudBrainJobID) + var jobID = jobResult.Payload["jobId"].(string) err = models.CreateCloudbrain(&models.Cloudbrain{ Status: string(models.JobWaiting), UserID: ctx.User.ID, RepoID: ctx.Repo.Repository.ID, JobID: jobID, - CloudBrainJobID: cloudBrainJobID, JobName: jobName, DisplayJobName: displayJobName, SubTaskName: SubTaskName, @@ -340,13 +337,12 @@ func RestartTask(ctx *context.Context, task *models.Cloudbrain, newJobID *string return errors.New(jobResult.Msg) } - var cloudBrainJobID = jobResult.Payload["jobId"].(string) + var jobID = jobResult.Payload["jobId"].(string) newTask := &models.Cloudbrain{ Status: string(models.JobWaiting), UserID: task.UserID, RepoID: task.RepoID, - JobID: task.JobID, - CloudBrainJobID: cloudBrainJobID, + JobID: jobID, JobName: task.JobName, DisplayJobName: task.DisplayJobName, SubTaskName: task.SubTaskName, diff --git a/modules/util/util.go b/modules/util/util.go index 380ff35bd..451a50bf7 100755 --- a/modules/util/util.go +++ b/modules/util/util.go @@ -119,12 +119,6 @@ func ConvertDisplayJobNameToJobName(DisplayName string) (JobName string) { return JobName } -func ConvertCloudBrainIdToJobId(CloudBrainJobID string) (JobID string) { - t := time.Now() - JobID = "jobid" + strings.ToLower(cutNameString(CloudBrainJobID, 15)) + "t" + t.Format("2006010215") + strconv.Itoa(int(rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(100000))) - return JobID -} - func cutNameString(str string, lens int) string { if len(str) < lens { return str diff --git a/routers/api/v1/repo/cloudbrain.go b/routers/api/v1/repo/cloudbrain.go index 2d7d1836e..d33dd9641 100755 --- a/routers/api/v1/repo/cloudbrain.go +++ b/routers/api/v1/repo/cloudbrain.go @@ -58,7 +58,7 @@ func GetCloudbrainTask(ctx *context.APIContext) { ctx.Data["error"] = err.Error() } // jobResult, err := cloudbrain.GetJob(job.JobID) - jobResult, err := cloudbrain.GetJob(job.CloudBrainJobID) + jobResult, err := cloudbrain.GetJob(jobID) if err != nil { ctx.NotFound(err) return @@ -107,7 +107,7 @@ func CloudbrainGetLog(ctx *context.Context) { } var hits []models.Hits - result, err := cloudbrain.GetJobLog(job.CloudBrainJobID) + result, err := cloudbrain.GetJobLog(jobID) if err != nil { log.Error("GetJobLog failed: %v", err, ctx.Data["MsgID"]) ctx.ServerError(err.Error(), err) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 80e43510f..109a6d440 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -279,7 +279,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { } func CloudBrainRestart(ctx *context.Context) { - var jobID = ctx.Params(":jobid") + var ID = ctx.Params(":id") var resultCode = "0" var errorMsg = "" var status = string(models.JobWaiting) @@ -322,7 +322,7 @@ func CloudBrainRestart(ctx *context.Context) { } } - err = cloudbrain.RestartTask(ctx, task, &task.CloudBrainJobID) + err = cloudbrain.RestartTask(ctx, task, &task.JobID) if err != nil { log.Error("RestartTask failed:%v", err.Error(), ctx.Data["MsgID"]) resultCode = "-1" @@ -337,7 +337,7 @@ func CloudBrainRestart(ctx *context.Context) { "result_code": resultCode, "error_msg": errorMsg, "status": status, - "job_id": jobID, + "id": ID, }) } @@ -356,13 +356,13 @@ func CloudBrainShow(ctx *context.Context) { func cloudBrainShow(ctx *context.Context, tpName base.TplName) { ctx.Data["PageIsCloudBrain"] = true - var jobID = ctx.Params(":jobid") + var ID = ctx.Params(":id") debugListType := ctx.Query("debugListType") - task, err := models.GetCloudbrainByJobID(jobID) + task, err := models.GetCloudbrainByID(ID) if err != nil { ctx.Data["error"] = err.Error() } - result, err := cloudbrain.GetJob(task.CloudBrainJobID) + result, err := cloudbrain.GetJob(task.JobID) if err != nil { ctx.Data["error"] = err.Error() } @@ -437,13 +437,12 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName) { } func CloudBrainDebug(ctx *context.Context) { - // debugUrl := setting.DebugServerHost + "jpylab_" + ctx.Cloudbrain.JobID + "_" + ctx.Cloudbrain.SubTaskName - debugUrl := setting.DebugServerHost + "jpylab_" + ctx.Cloudbrain.CloudBrainJobID + "_" + ctx.Cloudbrain.SubTaskName + debugUrl := setting.DebugServerHost + "jpylab_" + ctx.Cloudbrain.JobID + "_" + ctx.Cloudbrain.SubTaskName ctx.Redirect(debugUrl) } func CloudBrainCommitImage(ctx *context.Context, form auth.CommitImageCloudBrainForm) { - err := cloudbrain.CommitImage(ctx.Cloudbrain.CloudBrainJobID, models.CommitImageParams{ + err := cloudbrain.CommitImage(ctx.Cloudbrain.JobID, models.CommitImageParams{ Ip: ctx.Cloudbrain.ContainerIp, TaskContainerId: ctx.Cloudbrain.ContainerID, ImageDescription: form.Description, @@ -465,7 +464,7 @@ func CloudBrainCommitImage(ctx *context.Context, form auth.CommitImageCloudBrain } func CloudBrainStop(ctx *context.Context) { - var jobID = ctx.Params(":jobid") + var ID = ctx.Params(":id") var resultCode = "0" var errorMsg = "" var status = "" @@ -479,7 +478,7 @@ func CloudBrainStop(ctx *context.Context) { break } - err := cloudbrain.StopJob(task.CloudBrainJobID) + err := cloudbrain.StopJob(task.JobID) if err != nil { log.Error("StopJob(%s) failed:%v", task.JobName, err, ctx.Data["msgID"]) resultCode = "-1" @@ -504,7 +503,7 @@ func CloudBrainStop(ctx *context.Context) { "result_code": resultCode, "error_msg": errorMsg, "status": status, - "job_id": jobID, + "id": ID, }) } @@ -626,10 +625,10 @@ func deleteCloudbrainJob(ctx *context.Context) error { func CloudBrainShowModels(ctx *context.Context) { ctx.Data["PageIsCloudBrain"] = true - jobID := ctx.Params(":jobid") + ID := ctx.Params(":id") parentDir := ctx.Query("parentDir") dirArray := strings.Split(parentDir, "/") - task, err := models.GetCloudbrainByJobID(jobID) + task, err := models.GetCloudbrainByID(ID) if err != nil { log.Error("no such job!", ctx.Data["msgID"]) ctx.ServerError("no such job:", err) @@ -733,8 +732,8 @@ func GetRate(ctx *context.Context) { return } - var jobID = ctx.Params(":jobid") - job, err := models.GetCloudbrainByJobID(jobID) + var ID = ctx.Params(":id") + job, err := models.GetCloudbrainByID(ID) if err != nil { ctx.ServerError("GetCloudbrainByJobID failed", err) return @@ -939,7 +938,7 @@ func SyncCloudbrainStatus() { for _, task := range cloudBrains { if task.Type == models.TypeCloudBrainOne { - result, err := cloudbrain.GetJob(task.CloudBrainJobID) + result, err := cloudbrain.GetJob(task.JobID) if err != nil { log.Error("GetJob(%s) failed:%v", task.JobName, err) continue diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 827d6cde9..445055f74 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -238,15 +238,15 @@ func NotebookShow(ctx *context.Context) { ctx.Data["PageIsCloudBrain"] = true debugListType := ctx.Query("debugListType") - var jobID = ctx.Params(":jobid") - task, err := models.GetCloudbrainByJobID(jobID) + var ID = ctx.Params(":id") + task, err := models.GetCloudbrainByID(ID) if err != nil { ctx.Data["error"] = err.Error() ctx.RenderWithErr(err.Error(), tplModelArtsNotebookShow, nil) return } - result, err := modelarts.GetNotebook2(jobID) + result, err := modelarts.GetNotebook2(task.JobID) if err != nil { ctx.Data["error"] = err.Error() ctx.RenderWithErr(err.Error(), tplModelArtsNotebookShow, nil) @@ -278,7 +278,7 @@ func NotebookShow(ctx *context.Context) { ctx.Data["datasetDownloadLink"] = datasetDownloadLink ctx.Data["task"] = task - ctx.Data["jobID"] = jobID + ctx.Data["ID"] = ID ctx.Data["jobName"] = task.JobName ctx.Data["result"] = result ctx.Data["debugListType"] = debugListType @@ -313,9 +313,14 @@ func NotebookDebug(ctx *context.Context) { } func NotebookDebug2(ctx *context.Context) { - var jobID = ctx.Params(":jobid") - - result, err := modelarts.GetNotebook2(jobID) + var ID = ctx.Params(":id") + task, err := models.GetCloudbrainByID(ID) + if err != nil { + ctx.Data["error"] = err.Error() + ctx.RenderWithErr(err.Error(), tplModelArtsNotebookIndex, nil) + return + } + result, err := modelarts.GetNotebook2(task.JobID) if err != nil { ctx.RenderWithErr(err.Error(), tplModelArtsNotebookIndex, nil) return @@ -433,7 +438,6 @@ func NotebookManage(ctx *context.Context) { } func NotebookDel(ctx *context.Context) { - var jobID = ctx.Params(":jobid") var listType = ctx.Query("debugListType") task := ctx.Cloudbrain @@ -443,7 +447,7 @@ func NotebookDel(ctx *context.Context) { return } - _, err := modelarts.DelNotebook2(jobID) + _, err := modelarts.DelNotebook2(task.JobID) if err != nil { log.Error("DelNotebook2(%s) failed:%v", task.JobName, err.Error()) if strings.Contains(err.Error(), modelarts.NotebookNotFound) || strings.Contains(err.Error(), modelarts.NotebookNoPermission) { diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 4ebeee3bb..8ef7e2754 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -990,7 +990,7 @@ func RegisterRoutes(m *macaron.Macaron) { }, context.RepoRef()) m.Group("/cloudbrain", func() { - m.Group("/:jobid", func() { + m.Group("/:id", func() { m.Get("", reqRepoCloudBrainReader, repo.CloudBrainShow) m.Get("/debug", cloudbrain.AdminOrJobCreaterRight, repo.CloudBrainDebug) m.Post("/commit_image", cloudbrain.AdminOrJobCreaterRight, bindIgnErr(auth.CommitImageCloudBrainForm{}), repo.CloudBrainCommitImage) @@ -1006,7 +1006,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/benchmark", func() { m.Get("", reqRepoCloudBrainReader, repo.CloudBrainBenchmarkIndex) - m.Group("/:jobid", func() { + m.Group("/:id", func() { m.Get("", reqRepoCloudBrainReader, repo.CloudBrainBenchMarkShow) m.Post("/stop", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.CloudBrainStop) m.Post("/del", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.BenchmarkDel) @@ -1055,7 +1055,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/create", reqRepoCloudBrainWriter, repo.NotebookNew) m.Post("/create", reqRepoCloudBrainWriter, bindIgnErr(auth.CreateModelArtsNotebookForm{}), repo.NotebookCreate) */ - m.Group("/:jobid", func() { + m.Group("/:id", func() { m.Get("", reqRepoCloudBrainReader, repo.NotebookShow) m.Get("/debug", cloudbrain.AdminOrJobCreaterRight, repo.NotebookDebug2) m.Post("/:action", reqRepoCloudBrainWriter, repo.NotebookManage) From 502eb1d973d71c5d1a4085b5c70598183134a58d Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 2 Mar 2022 17:47:06 +0800 Subject: [PATCH 20/46] update --- routers/repo/cloudbrain.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 109a6d440..1b06a29da 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -663,7 +663,7 @@ func CloudBrainShowModels(ctx *context.Context) { ctx.Data["Path"] = dirArray ctx.Data["Dirs"] = fileInfos ctx.Data["task"] = task - ctx.Data["JobID"] = jobID + ctx.Data["ID"] = ID ctx.HTML(200, tplCloudBrainShowModels) } From 2ad939f61200689026c7c301b87b5ead4c95f7f3 Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 3 Mar 2022 11:19:14 +0800 Subject: [PATCH 21/46] fix bug --- modules/cloudbrain/cloudbrain.go | 2 +- routers/api/v1/api.go | 6 +- routers/api/v1/repo/cloudbrain.go | 17 +++-- routers/api/v1/repo/modelarts.go | 9 ++- routers/repo/cloudbrain.go | 14 +++- routers/repo/modelarts.go | 8 +-- templates/repo/debugjob/index.tmpl | 30 ++++---- web_src/js/features/cloudrbanin.js | 108 ++++++++++++++--------------- 8 files changed, 100 insertions(+), 94 deletions(-) diff --git a/modules/cloudbrain/cloudbrain.go b/modules/cloudbrain/cloudbrain.go index 8fdd91c9c..2dd3f9fed 100755 --- a/modules/cloudbrain/cloudbrain.go +++ b/modules/cloudbrain/cloudbrain.go @@ -361,7 +361,7 @@ func RestartTask(ctx *context.Context, task *models.Cloudbrain, newJobID *string return err } - *newJobID = task.JobID + *newJobID = jobID return nil } diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index c6213c0cc..306854af3 100755 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -880,13 +880,13 @@ func RegisterRoutes(m *macaron.Macaron) { }, reqAdmin()) }, reqAnyRepoReader()) m.Group("/cloudbrain", func() { - m.Get("/:jobid", repo.GetCloudbrainTask) - m.Get("/:jobid/log", repo.CloudbrainGetLog) + m.Get("/:id", repo.GetCloudbrainTask) + m.Get("/:id/log", repo.CloudbrainGetLog) }, reqRepoReader(models.UnitTypeCloudBrain)) m.Group("/modelarts", func() { m.Group("/notebook", func() { //m.Get("/:jobid", repo.GetModelArtsNotebook) - m.Get("/:jobid", repo.GetModelArtsNotebook2) + m.Get("/:id", repo.GetModelArtsNotebook2) }) m.Group("/train-job", func() { m.Group("/:jobid", func() { diff --git a/routers/api/v1/repo/cloudbrain.go b/routers/api/v1/repo/cloudbrain.go index d33dd9641..317a72949 100755 --- a/routers/api/v1/repo/cloudbrain.go +++ b/routers/api/v1/repo/cloudbrain.go @@ -51,14 +51,13 @@ func GetCloudbrainTask(ctx *context.APIContext) { // jobName := ctx.Params(":jobname") // job, err := models.GetCloudbrainByName(jobName) - jobID := ctx.Params(":jobid") - repoID := ctx.Repo.Repository.ID - job, err := models.GetRepoCloudBrainByJobID(repoID, jobID) + ID := ctx.Params(":id") + // repoID := ctx.Repo.Repository.ID + job, err := models.GetCloudbrainByID(ID) if err != nil { ctx.Data["error"] = err.Error() } - // jobResult, err := cloudbrain.GetJob(job.JobID) - jobResult, err := cloudbrain.GetJob(jobID) + jobResult, err := cloudbrain.GetJob(job.JobID) if err != nil { ctx.NotFound(err) return @@ -87,7 +86,7 @@ func GetCloudbrainTask(ctx *context.APIContext) { } ctx.JSON(http.StatusOK, map[string]interface{}{ - "JobID": jobID, + "ID": ID, "JobName": result.Config.JobName, "JobStatus": result.JobStatus.State, "SubState": result.JobStatus.SubState, @@ -98,8 +97,8 @@ func GetCloudbrainTask(ctx *context.APIContext) { } func CloudbrainGetLog(ctx *context.Context) { - jobID := ctx.Params(":jobid") - job, err := models.GetCloudbrainByJobID(jobID) + ID := ctx.Params(":id") + job, err := models.GetCloudbrainByID(ID) if err != nil { log.Error("GetCloudbrainByJobName failed: %v", err, ctx.Data["MsgID"]) ctx.ServerError(err.Error(), err) @@ -107,7 +106,7 @@ func CloudbrainGetLog(ctx *context.Context) { } var hits []models.Hits - result, err := cloudbrain.GetJobLog(jobID) + result, err := cloudbrain.GetJobLog(job.JobID) if err != nil { log.Error("GetJobLog failed: %v", err, ctx.Data["MsgID"]) ctx.ServerError(err.Error(), err) diff --git a/routers/api/v1/repo/modelarts.go b/routers/api/v1/repo/modelarts.go index 27df10e16..893f2a32c 100755 --- a/routers/api/v1/repo/modelarts.go +++ b/routers/api/v1/repo/modelarts.go @@ -56,14 +56,13 @@ func GetModelArtsNotebook2(ctx *context.APIContext) { err error ) - jobID := ctx.Params(":jobid") - repoID := ctx.Repo.Repository.ID - job, err := models.GetRepoCloudBrainByJobID(repoID, jobID) + ID := ctx.Params(":id") + job, err := models.GetCloudbrainByID(ID) if err != nil { ctx.NotFound(err) return } - result, err := modelarts.GetNotebook2(jobID) + result, err := modelarts.GetNotebook2(job.JobID) if err != nil { ctx.NotFound(err) return @@ -76,7 +75,7 @@ func GetModelArtsNotebook2(ctx *context.APIContext) { } ctx.JSON(http.StatusOK, map[string]interface{}{ - "JobID": jobID, + "ID": ID, "JobName": job.JobName, "JobStatus": result.Status, }) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 1b06a29da..fd59aede2 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -283,8 +283,10 @@ func CloudBrainRestart(ctx *context.Context) { var resultCode = "0" var errorMsg = "" var status = string(models.JobWaiting) - - task := ctx.Cloudbrain + task, err := models.GetCloudbrainByID(ID) + if err != nil { + ctx.Data["error"] = err.Error() + } for { if task.Status != string(models.JobStopped) && task.Status != string(models.JobSucceeded) && task.Status != string(models.JobFailed) { log.Error("the job(%s) is not stopped", task.JobName, ctx.Data["MsgID"]) @@ -469,7 +471,12 @@ func CloudBrainStop(ctx *context.Context) { var errorMsg = "" var status = "" - task := ctx.Cloudbrain + task, err := models.GetCloudbrainByID(ID) + if err != nil { + ctx.Data["error"] = err.Error() + } + + // task := ctx.Cloudbrain for { if task.Status == string(models.JobStopped) || task.Status == string(models.JobFailed) || task.Status == string(models.JobSucceeded) { log.Error("the job(%s) has been stopped", task.JobName, ctx.Data["msgID"]) @@ -479,6 +486,7 @@ func CloudBrainStop(ctx *context.Context) { } err := cloudbrain.StopJob(task.JobID) + // err := cloudbrain.StopJob("bbb60ea009a9b011ec08bb20f3128d160513") if err != nil { log.Error("StopJob(%s) failed:%v", task.JobName, err, ctx.Data["msgID"]) resultCode = "-1" diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 445055f74..5ae5dfeb7 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -330,14 +330,14 @@ func NotebookDebug2(ctx *context.Context) { } func NotebookManage(ctx *context.Context) { - var jobID = ctx.Params(":jobid") + var ID = ctx.Params(":id") var action = ctx.Params(":action") var resultCode = "0" var errorMsg = "" var status = "" for { - task, err := models.GetCloudbrainByJobID(jobID) + task, err := models.GetCloudbrainByID(ID) if err != nil { log.Error("GetCloudbrainByJobID failed:%v", err, ctx.Data["MsgID"]) resultCode = "-1" @@ -404,7 +404,7 @@ func NotebookManage(ctx *context.Context) { param := models.NotebookAction{ Action: action, } - res, err := modelarts.ManageNotebook2(jobID, param) + res, err := modelarts.ManageNotebook2(task.JobID, param) if err != nil { log.Error("ManageNotebook2(%s) failed:%v", task.JobName, err.Error(), ctx.Data["MsgID"]) resultCode = "-1" @@ -433,7 +433,7 @@ func NotebookManage(ctx *context.Context) { "result_code": resultCode, "error_msg": errorMsg, "status": status, - "job_id": jobID, + "id": ID, }) } diff --git a/templates/repo/debugjob/index.tmpl b/templates/repo/debugjob/index.tmpl index 4fa3072ce..743df78bf 100755 --- a/templates/repo/debugjob/index.tmpl +++ b/templates/repo/debugjob/index.tmpl @@ -287,14 +287,14 @@
- - {{.Status}} + + {{.Status}}
@@ -315,20 +315,20 @@
-
+ {{$.CsrfTokenHtml}} {{if .CanDebug}} {{if eq .Status "RUNNING" "WAITING" "CREATING" "STARTING"}} - + {{$.i18n.Tr "repo.debug"}} {{else}} - + {{$.i18n.Tr "repo.debug_again"}} {{end}} @@ -346,10 +346,10 @@
-
+ {{$.CsrfTokenHtml}} {{if .CanDel}} - + {{$.i18n.Tr "repo.stop"}} {{else}} @@ -359,11 +359,11 @@ {{end}}
-
+ {{$.CsrfTokenHtml}} {{if .CanDel}} - + {{$.i18n.Tr "repo.delete"}} {{else}} @@ -382,7 +382,7 @@ {{if .CanDebug}} - {{$.i18n.Tr "repo.submit_image"}} + {{$.i18n.Tr "repo.submit_image"}} {{else}} {{$.i18n.Tr "repo.submit_image"}} {{end}} @@ -390,14 +390,14 @@ {{if and (ne .JobType "DEBUG") (eq .Cloudbrain.Type 0)}} @@ -411,7 +411,7 @@