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 @@