diff --git a/models/cloudbrain.go b/models/cloudbrain.go index ec0ad503f..2485ef5d3 100644 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -18,9 +18,9 @@ const ( ) type Cloudbrain struct { - ID int64 `xorm:"pk autoincr"` - JobID string - // Title string `xorm:"INDEX NOT NULL"` + ID int64 `xorm:"pk autoincr"` + JobID string `xorm:"INDEX NOT NULL"` + JobName string Status int32 `xorm:"INDEX"` UserID int64 `xorm:"INDEX"` RepoID int64 `xorm:"INDEX"` diff --git a/models/migrations/v141.go b/models/migrations/v141.go index 45e9dc2b1..11a8d143b 100644 --- a/models/migrations/v141.go +++ b/models/migrations/v141.go @@ -9,9 +9,9 @@ import ( func addCloudBrainTable(x *xorm.Engine) error { type Cloudbrain struct { - ID int64 `xorm:"pk autoincr"` - JobId string - // Title string `xorm:"INDEX NOT NULL"` + ID int64 `xorm:"pk autoincr"` + JobID string `xorm:"INDEX NOT NULL"` + JobName string Status int32 `xorm:"INDEX"` UserID int64 `xorm:"INDEX"` RepoID int64 `xorm:"INDEX"` diff --git a/modules/auth/cloudbrain.go b/modules/auth/cloudbrain.go index c77204937..938bf087e 100644 --- a/modules/auth/cloudbrain.go +++ b/modules/auth/cloudbrain.go @@ -7,6 +7,7 @@ import ( // CreateDatasetForm form for dataset page type CreateCloudBrainForm struct { + JobName string `form:"job_name" binding:"Required"` Image string `binding:"Required"` Command string `binding:"Required"` } diff --git a/modules/cloudbrain/cloudbrain.go b/modules/cloudbrain/cloudbrain.go index 606a29a14..9f700c6d5 100644 --- a/modules/cloudbrain/cloudbrain.go +++ b/modules/cloudbrain/cloudbrain.go @@ -2,19 +2,13 @@ package cloudbrain import ( "errors" - "fmt" - "strconv" - "time" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/models" ) -func GenerateTask(ctx *context.Context, image, command string) error { - nowStr := strconv.FormatInt(time.Now().Unix(), 10) - - jobName := fmt.Sprintf("%s%s", ctx.User.Name, nowStr[len(nowStr)-5:]) +func GenerateTask(ctx *context.Context, jobName, image, command string) error { jobResult, err := CreateJob(jobName, models.CreateJobParams{ JobName: jobName, RetryCount: 1, @@ -22,7 +16,7 @@ func GenerateTask(ctx *context.Context, image, command string) error { Image: image, TaskRoles: []models.TaskRole{ { - Name: jobName, + Name: "task1", TaskNumber: 1, MinSucceededTaskCount: 1, MinFailedTaskCount: 1, @@ -45,10 +39,11 @@ func GenerateTask(ctx *context.Context, image, command string) error { var jobID = jobResult.Payload["jobId"].(string) err = models.CreateCloudbrain(&models.Cloudbrain{ - Status: int32(models.JobWaiting), - UserID: ctx.User.ID, - RepoID: ctx.Repo.Repository.ID, - JobID: jobID, + Status: int32(models.JobWaiting), + UserID: ctx.User.ID, + RepoID: ctx.Repo.Repository.ID, + JobID: jobID, + JobName: jobName, }) if err != nil { diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 6f20bc093..aaf1ed6da 100644 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -1,6 +1,9 @@ package repo import ( + "strconv" + "time" + "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" @@ -52,9 +55,19 @@ func CloudBrainIndex(ctx *context.Context) { ctx.HTML(200, tplCloudBrainIndex) } +func cutString(str string, lens int) string { + if len(str) < lens { + return str + } + return str[:lens] +} + func CloudBrainNew(ctx *context.Context) { 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 ctx.Data["image"] = "192.168.202.74:5000/user-images/deepo:v2.0" ctx.Data["command"] = `pip3 install jupyterlab==1.1.4;service ssh stop;jupyter lab --no-browser --ip=0.0.0.0 --allow-root --notebook-dir=\"/userhome\" --port=80 --NotebookApp.token=\"\" --LabApp.allow_origin=\"self https://cloudbrain.pcl.ac.cn\"` ctx.HTML(200, tplCloudBrainNew) @@ -62,9 +75,10 @@ func CloudBrainNew(ctx *context.Context) { func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { ctx.Data["PageIsCloudBrain"] = true + jobName := form.JobName image := form.Image command := form.Command - err := cloudbrain.GenerateTask(ctx, image, command) + err := cloudbrain.GenerateTask(ctx, jobName, image, command) if err != nil { ctx.RenderWithErr(err.Error(), tplCloudBrainNew, &form) return diff --git a/templates/repo/cloudbrain/index.tmpl b/templates/repo/cloudbrain/index.tmpl index 4243d79a9..ca2c982d6 100644 --- a/templates/repo/cloudbrain/index.tmpl +++ b/templates/repo/cloudbrain/index.tmpl @@ -36,7 +36,7 @@