diff --git a/models/cloudbrain.go b/models/cloudbrain.go index dc97062da..ec0ad503f 100644 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -34,12 +34,7 @@ type Cloudbrain struct { type CloudBrainLoginResult struct { Code string Msg string - Payload struct { - UserID string `json:"userId"` - RealName string `json:"realName"` - Token string `json:"token"` - Admin bool `json:"admin"` - } + Payload map[string]interface{} } type TaskRole struct { @@ -67,72 +62,13 @@ type CreateJobParams struct { type CreateJobResult struct { Code string Msg string - Payload struct { - JobID string `json:"jobId"` - } + Payload map[string]interface{} } type GetJobResult struct { - Code string - Msg string - Payload struct { - ID string `json:"Id"` - Name string - Platform string - JobStatus struct { - Username string - State string - SubState string `json:"subState"` - ExecutionType string `json:"executionType"` - Retries int8 `json:"retries"` - CreatedTime int64 `json:"createdTime"` - CompletedTime int64 `json:"completedTime"` - AppID string `json:"appId"` - AppProgress string `json:"appProgress"` - AppTrackingURL string `json:"appTrackingUrl"` - AppLaunchedTime int64 `json:"appLaunchedTime"` - AppCompletedTime int64 `json:"appCompletedTime"` - AppExitCode int8 `json:"appExitCode"` - AppExitDiagnostics string `json:"appExitDiagnostics"` - AppExitType string `json:"appExitType"` - VirtualCluster string `json:"virtualCluster"` - } `json:"jobStatus"` - - TaskRoles string `json:"taskRoles"` - - Resource struct { - CPU int8 `json:"cpu"` - Memory string - GPU string `json:"nvidia.com/gpu"` - } `json:"resource"` - - Config struct { - Image string - JobID string `json:"jobId"` - GpuType string `json:"gpuType"` - JobName string `json:"jobName"` - JobType string `json:"jobType"` - RetryCount int8 `json:"retryCount"` - TaskRoles []struct { - Name string `json:"name"` - ShmMB int32 `json:"shmMB"` - Command string `json:"command"` - MemoryMB int64 `json:"memoryMB"` - CPUNumber int8 `json:"cpuNumber"` - GPUNumber int8 `json:"gpuNumber"` - IsMainRole bool `json:"isMainRole"` - TaskNumber int32 `json:"taskNumber"` - NeedIBDevice bool `json:"needIBDevice"` - MinFailedTaskCount int8 `json:"minFailedTaskCount"` - MinSucceededTaskCount int8 `json:"minSucceededTaskCount"` - } `json:"taskRoles"` - } - - Userinfo struct { - User string - OrgID string `json:"org_id"` - } - } + Code string `json:"code"` + Msg string `json:"msg"` + Payload map[string]interface{} `json:"payload"` } type CloudbrainsOptions struct { diff --git a/modules/cloudbrain/cloudbrain.go b/modules/cloudbrain/cloudbrain.go index a015fa53a..606a29a14 100644 --- a/modules/cloudbrain/cloudbrain.go +++ b/modules/cloudbrain/cloudbrain.go @@ -43,11 +43,12 @@ func GenerateTask(ctx *context.Context, image, command string) error { return errors.New(jobResult.Msg) } + 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: jobResult.Payload.JobID, + JobID: jobID, }) if err != nil { diff --git a/modules/cloudbrain/resty.go b/modules/cloudbrain/resty.go index 5f4551a8b..88134bab7 100644 --- a/modules/cloudbrain/resty.go +++ b/modules/cloudbrain/resty.go @@ -51,7 +51,7 @@ func loginCloudbrain() error { return fmt.Errorf("%s: %s", loginResult.Msg, res.String()) } - TOKEN = loginResult.Payload.Token + TOKEN = loginResult.Payload["token"].(string) return nil } diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index d0667e151..6f20bc093 100644 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -12,6 +12,7 @@ import ( const ( tplCloudBrainIndex base.TplName = "repo/cloudbrain/index" tplCloudBrainNew base.TplName = "repo/cloudbrain/new" + tplCloudBrainShow base.TplName = "repo/cloudbrain/show" ) // MustEnableDataset check if repository enable internal cb @@ -70,3 +71,20 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { } ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/cloudbrain") } + +func CloudBrainShow(ctx *context.Context) { + ctx.Data["PageIsCloudBrain"] = true + + var jobID = ctx.Params(":jobid") + var result, err = cloudbrain.GetJob(jobID) + if err != nil { + ctx.Data["error"] = err.Error() + } + + if result != nil { + ctx.Data["result"] = result + } + + ctx.Data["jobID"] = jobID + ctx.HTML(200, tplCloudBrainShow) +} diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 4f66593de..e2cab421c 100644 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -873,6 +873,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/cloudbrain", func() { m.Get("", reqRepoCloudBrainReader, repo.CloudBrainIndex) + m.Get("/:jobid", reqRepoCloudBrainReader, repo.CloudBrainShow) m.Get("/create", reqRepoCloudBrainWriter, repo.CloudBrainNew) m.Post("/create", reqRepoCloudBrainWriter, bindIgnErr(auth.CreateCloudBrainForm{}), repo.CloudBrainCreate) }, context.RepoRef()) diff --git a/templates/repo/cloudbrain/show.tmpl b/templates/repo/cloudbrain/show.tmpl new file mode 100644 index 000000000..771934005 --- /dev/null +++ b/templates/repo/cloudbrain/show.tmpl @@ -0,0 +1,18 @@ +{{template "base/head" .}} +
err
+result
+