diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 23fa0a069..036c25264 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -384,6 +384,12 @@ type GetNotebookResult struct { EndTime string Rank int `json:"rank"` //rank of instance in queue } `json:"queuing_info"` + Spec struct{ + Annotations struct{ + TargetDomain string `json:"target_domain"` + Url string `json:"url"` + } `json:"annotations"` + } `json:"spec"` } type GetTokenParams struct { @@ -441,6 +447,12 @@ type NotebookActionResult struct { PreviousState string `json:"previous_state"` } +type NotebookGetJobTokenResult struct { + ErrorCode string `json:"error_code"` + ErrorMsg string `json:"error_msg"` + Token string `json:"token"` +} + type NotebookDelResult struct { InstanceID string `json:"instance_id"` } diff --git a/models/dataset.go b/models/dataset.go index 7e72d3e56..f6f2ef501 100755 --- a/models/dataset.go +++ b/models/dataset.go @@ -196,11 +196,11 @@ func (s datasetMetaSearch) Less(i, j int) bool { return s.ID[i] < s.ID[j] } -func GetDatasetAttachments(rels ...*Dataset) (err error) { - return getDatasetAttachments(x, rels...) +func GetDatasetAttachments(typeCloudBrain int ,rels ...*Dataset) (err error) { + return getDatasetAttachments(x, typeCloudBrain, rels...) } -func getDatasetAttachments(e Engine, rels ...*Dataset) (err error) { +func getDatasetAttachments(e Engine, typeCloudBrain int, rels ...*Dataset) (err error) { if len(rels) == 0 { return } @@ -223,6 +223,7 @@ func getDatasetAttachments(e Engine, rels ...*Dataset) (err error) { err = e. Asc("dataset_id"). In("dataset_id", sortedRels.ID). + And("type = ?", typeCloudBrain). Find(&attachments, Attachment{}) if err != nil { return err diff --git a/modules/modelarts/resty.go b/modules/modelarts/resty.go index 7c50547d6..95ad94d31 100755 --- a/modules/modelarts/resty.go +++ b/modules/modelarts/resty.go @@ -151,6 +151,8 @@ sendjob: goto sendjob } + log.Info(string(res.Body())) + var response models.NotebookResult err = json.Unmarshal(res.Body(), &response) if err != nil { @@ -244,3 +246,42 @@ sendjob: return &result, nil } + +func GetJobToken(jobID string) (*models.NotebookGetJobTokenResult, error) { + checkSetting() + client := getRestyClient() + var result models.NotebookGetJobTokenResult + + retry := 0 + +sendjob: + res, err := client.R(). + SetHeader("Content-Type", "application/json"). + SetAuthToken(TOKEN). + SetResult(&result). + Get(HOST + "/v1/" + setting.ProjectID + urlNotebook + "/" + jobID + "/token") + + if err != nil { + return &result, fmt.Errorf("resty GetJobToken: %v", err) + } + + if res.StatusCode() == http.StatusUnauthorized && retry < 1 { + retry++ + _ = getToken() + goto sendjob + } + + var response models.NotebookResult + err = json.Unmarshal(res.Body(), &response) + if err != nil { + log.Error("json.Unmarshal failed: %s", err.Error()) + return &result, fmt.Errorf("son.Unmarshal failed: %s", err.Error()) + } + + if len(response.ErrorCode) != 0 { + log.Error("GetJobToken failed(%s): %s", response.ErrorCode, response.ErrorMsg) + return &result, fmt.Errorf("GetJobToken failed(%s): %s", response.ErrorCode, response.ErrorMsg) + } + + return &result, nil +} diff --git a/routers/api/v1/repo/modelarts.go b/routers/api/v1/repo/modelarts.go index 52f8e8e58..a16274189 100755 --- a/routers/api/v1/repo/modelarts.go +++ b/routers/api/v1/repo/modelarts.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/modelarts" + "net/http" ) func GetModelArtsTask(ctx *context.APIContext) { @@ -23,18 +24,15 @@ func GetModelArtsTask(ctx *context.APIContext) { ctx.NotFound(err) return } - _, err = modelarts.GetJob(jobID) + result, err := modelarts.GetJob(jobID) if err != nil { ctx.NotFound(err) return } - //ctx.JSON(http.StatusOK, map[string]interface{}{ - // "JobID": result.Config.JobID, - // "JobStatus": result.JobStatus.State, - // "SubState": result.JobStatus.SubState, - // "CreatedTime": time.Unix(result.JobStatus.CreatedTime/1000, 0).Format("2006-01-02 15:04:05"), - // "CompletedTime": time.Unix(result.JobStatus.CompletedTime/1000, 0).Format("2006-01-02 15:04:05"), - //}) + ctx.JSON(http.StatusOK, map[string]interface{}{ + "JobID": jobID, + "JobStatus": result.Status, + }) } diff --git a/routers/repo/dataset.go b/routers/repo/dataset.go index 962824bd0..4d4fc4113 100755 --- a/routers/repo/dataset.go +++ b/routers/repo/dataset.go @@ -49,7 +49,7 @@ func DatasetIndex(ctx *context.Context) { ctx.NotFound("GetDatasetByRepo", err) return } - err = models.GetDatasetAttachments(dataset) + err = models.GetDatasetAttachments(ctx.QueryInt("type"), dataset) if err != nil { ctx.ServerError("GetDatasetAttachments", err) return diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 40b985110..d23ef3c05 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -152,10 +152,25 @@ func ModelArtsDebug(ctx *context.Context) { return } + result, err := modelarts.GetJob(jobID) + if err != nil { + ctx.RenderWithErr(err.Error(), tplModelArtsIndex, nil) + return + } + + res, err := modelarts.GetJobToken(jobID) + if err != nil { + ctx.RenderWithErr(err.Error(), tplModelArtsIndex, nil) + return + } + + urlPrefix := result.Spec.Annotations.TargetDomain + "/modelarts/internal/hub/notebook/user/" + task.JobID + //https://console.ai.pcl.cn/modelarts/internal/hub/notebook/user/DE-afcdf674-6489-11eb-bfe7-0255ac100057/lab //debugUrl := setting.DebugServerHost + "jpylab_" + task.JobID + "_" + task.SubTaskName //debugUrl := setting.ModelArtsHost + "/modelarts/internal/hub/notebook/user/" + task.JobID + "/lab" - debugUrl := "https://console.ai.pcl.cn/modelarts/internal/hub/notebook/user/" + task.JobID + "/lab" + //debugUrl := "https://console.ai.pcl.cn/modelarts/internal/hub/notebook/user/" + task.JobID + "/lab" + debugUrl := urlPrefix + "?token=" + res.Token ctx.Redirect(debugUrl) }