diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 1b97ed36d..e44fb944a 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -611,6 +611,26 @@ type Specs struct { InterfaceType int `json:"interface_type"` } +type GetConfigListResult struct { + ErrorCode string `json:"error_code"` + ErrorMsg string `json:"error_msg"` + IsSuccess bool `json:"is_success"` + ConfigTotalCount int `json:"config_total_count"` + ParaConfigs []ParaConfigs `json:"configs"` +} + +type ParaConfigs struct { + ConfigName string `json:"config_name"` + ConfigDesc string `json:"config_desc"` + CreateTime int64 `json:"create_time"` + EngineType int `json:"engine_type"` + EngineName string `json:"engine_name"` + EngineId int64 `json:"engine_id"` + EngineVersion string `json:"engine_version"` + UserImageUrl string `json:"user_image_url"` + UserCommand string `json:"user_command"` +} + type ErrorResult struct { ErrorCode string `json:"error_code"` ErrorMsg string `json:"error_message"` diff --git a/modules/modelarts/modelarts.go b/modules/modelarts/modelarts.go index 720eee309..acaaed77d 100755 --- a/modules/modelarts/modelarts.go +++ b/modules/modelarts/modelarts.go @@ -48,6 +48,10 @@ const ( Lines = 20 TrainUrl = "train_url" DataUrl = "data_url" + PerPage = 10 + + SortByCreateTime = "create_time" + ConfigTypeCustom = "custom" ) type GenerateTrainJobReq struct { diff --git a/modules/modelarts/resty.go b/modules/modelarts/resty.go index 168bfaac3..876be5f9c 100755 --- a/modules/modelarts/resty.go +++ b/modules/modelarts/resty.go @@ -425,22 +425,29 @@ sendjob: return &result, nil } -func GetConfigList() (*models.GetResourceSpecsResult, error) { +func GetConfigList(perPage, page int, sortBy, order, searchContent, configType string) (*models.GetConfigListResult, error) { checkSetting() client := getRestyClient() - var result models.GetResourceSpecsResult + var result models.GetConfigListResult retry := 0 sendjob: res, err := client.R(). - SetHeader("Content-Type", "application/json"). + SetQueryParams(map[string]string{ + "per_page": strconv.Itoa(perPage), + "page": strconv.Itoa(page), + "sortBy": sortBy, + "order": order, + "search_content": searchContent, + "config_type": configType, + }). SetAuthToken(TOKEN). SetResult(&result). Get(HOST + "/v1/" + setting.ProjectID + urlTrainJobConfig) if err != nil { - return nil, fmt.Errorf("resty GetResourceSpecs: %v", err) + return nil, fmt.Errorf("resty GetConfigList: %v", err) } if res.StatusCode() == http.StatusUnauthorized && retry < 1 { @@ -455,13 +462,13 @@ sendjob: log.Error("json.Unmarshal failed(%s): %v", res.String(), err.Error()) return &result, fmt.Errorf("json.Unmarshal failed(%s): %v", res.String(), err.Error()) } - log.Error("GetResourceSpecs failed(%d):%s(%s)", res.StatusCode(), temp.ErrorCode, temp.ErrorMsg) - return &result, fmt.Errorf("GetResourceSpecs failed(%d):%s(%s)", res.StatusCode(), temp.ErrorCode, temp.ErrorMsg) + log.Error("GetConfigList failed(%d):%s(%s)", res.StatusCode(), temp.ErrorCode, temp.ErrorMsg) + return &result, fmt.Errorf("获取参数配置列表失败(%d):%s(%s)", res.StatusCode(), temp.ErrorCode, temp.ErrorMsg) } if !result.IsSuccess { - log.Error("GetResourceSpecs failed(%s): %s", result.ErrorCode, result.ErrorMsg) - return &result, fmt.Errorf("GetResourceSpecs failed(%s): %s", result.ErrorCode, result.ErrorMsg) + log.Error("GetConfigList failed(%s): %s", result.ErrorCode, result.ErrorMsg) + return &result, fmt.Errorf("获取参数配置列表失败(%s): %s", result.ErrorCode, result.ErrorMsg) } return &result, nil @@ -497,7 +504,7 @@ sendjob: return &result, fmt.Errorf("json.Unmarshal failed(%s): %v", res.String(), err.Error()) } log.Error("GetTrainJob failed(%d):%s(%s)", res.StatusCode(), temp.ErrorCode, temp.ErrorMsg) - return &result, fmt.Errorf("GetTrainJob failed(%d):%s(%s)", res.StatusCode(), temp.ErrorCode, temp.ErrorMsg) + return &result, fmt.Errorf("获取作业详情失败(%d):%s(%s)", res.StatusCode(), temp.ErrorCode, temp.ErrorMsg) } if !result.IsSuccess { diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index b5bab1608..d9cb79f3e 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -352,6 +352,13 @@ func TrainJobNew(ctx *context.Context) { outputObsPath := "/" + setting.Bucket + modelarts.JobPath + jobName + modelarts.OutputPath ctx.Data["train_url"] = outputObsPath + configList, err := modelarts.GetConfigList(modelarts.PerPage, 1, modelarts.SortByCreateTime, "desc", "", modelarts.ConfigTypeCustom) + if err != nil { + ctx.ServerError("GetConfigList failed:", err) + return + } + ctx.Data["config_list"] = configList.ParaConfigs + ctx.HTML(200, tplModelArtsTrainJobNew) } @@ -447,6 +454,7 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) } } + //save param config if isSaveParam == "on" { if form.ParameterTemplateName == "" { log.Error("ParameterTemplateName is empty") @@ -744,3 +752,35 @@ func canUserCreateTrainJob(uid int64) (bool, error) { return org.IsOrgMember(uid) } + +func TrainJobGetConfigList(ctx *context.Context) { + ctx.Data["PageIsTrainJob"] = true + + var jobID = ctx.Params(":jobid") + var logFileName = ctx.Query("file_name") + var baseLine = ctx.Query("base_line") + var order = ctx.Query("order") + + if order != modelarts.OrderDesc && order != modelarts.OrderAsc { + log.Error("order(%s) check failed", order) + ctx.HTML(http.StatusBadRequest, tplModelArtsTrainJobShow) + return + } + + task, err := models.GetCloudbrainByJobID(jobID) + if err != nil { + log.Error("GetCloudbrainByJobID(%s) failed:%v", jobID, err.Error()) + ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobShow, nil) + return + } + + result, err := modelarts.GetTrainJobLog(jobID, strconv.FormatInt(task.VersionID, 10), baseLine, logFileName, order, modelarts.Lines) + if err != nil { + log.Error("GetTrainJobLog(%s) failed:%v", jobID, err.Error()) + ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobShow, nil) + return + } + + ctx.Data["log"] = result + //ctx.HTML(http.StatusOK, tplModelArtsTrainJobShow) +} diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 052c17816..2bb8ed350 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -937,8 +937,9 @@ func RegisterRoutes(m *macaron.Macaron) { m.Post("/del", reqRepoCloudBrainWriter, repo.TrainJobDel) m.Get("/log", reqRepoCloudBrainReader, repo.TrainJobGetLog) }) - m.Get("/create", reqRepoCloudBrainWriter, repo.TrainJobNew) + m.Get("/create", reqRepoCloudBrainReader, repo.TrainJobNew) m.Post("/create", reqRepoCloudBrainWriter, bindIgnErr(auth.CreateModelArtsTrainJobForm{}), repo.TrainJobCreate) + m.Get("/para-config-list", reqRepoCloudBrainReader, repo.TrainJobGetConfigList) }) }, context.RepoRef()) diff --git a/templates/repo/modelarts/trainjob/new.tmpl b/templates/repo/modelarts/trainjob/new.tmpl index 3a3503e0e..5f1489303 100755 --- a/templates/repo/modelarts/trainjob/new.tmpl +++ b/templates/repo/modelarts/trainjob/new.tmpl @@ -172,8 +172,8 @@