From bafe77ae7ce6d3da4634c013926aa515b72c5338 Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 23 Feb 2022 11:46:14 +0800 Subject: [PATCH] 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个字符,且不能以中划线(-)结尾。