@@ -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) | |||
} | |||
@@ -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 { | |||
@@ -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, | |||
@@ -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 { | |||
@@ -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) | |||
@@ -147,7 +147,7 @@ | |||
</div> | |||
<div class="inline required field"> | |||
<label>任务名称</label> | |||
<input name="job_name" id="cloudbrain_job_name" placeholder="任务名称" value="{{.job_name}}" tabindex="3" autofocus required maxlength="255" onkeyup="this.value=this.value.replace(/[, ]/g,'')"> | |||
<input name="display_job_name" id="cloudbrain_job_name" placeholder="任务名称" value="{{.display_job_name}}" tabindex="3" autofocus required maxlength="255" onkeyup="this.value=this.value.replace(/[, ]/g,'')"> | |||
</div> | |||
<div class="inline required field"> | |||
@@ -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" | |||
} | |||
@@ -48,7 +48,7 @@ | |||
</div> | |||
<div class="inline required field"> | |||
<label>任务名称</label> | |||
<input name="job_name" id="cloudbrain_job_name" placeholder="任务名称" value="{{.job_name}}" tabindex="3" autofocus required maxlength="255" onkeyup="this.value=this.value.replace(/[, ]/g,'')"> | |||
<input name="display_job_name" id="cloudbrain_job_name" placeholder="任务名称" value="{{.display_job_name}}" tabindex="3" autofocus required maxlength="255" onkeyup="this.value=this.value.replace(/[, ]/g,'')"> | |||
</div> | |||
<div class="inline required field"> | |||
@@ -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" | |||
} | |||