| @@ -376,10 +376,10 @@ func GetAllObjectByBucketAndPrefix(bucket string, prefix string) ([]FileInfo, er | |||||
| return fileInfos, nil | return fileInfos, nil | ||||
| } | } | ||||
| func GetObsListObject(jobName, parentDir, versionName string) ([]FileInfo, error) { | |||||
| func GetObsListObject(jobName, outPutPath, parentDir, versionName string) ([]FileInfo, error) { | |||||
| input := &obs.ListObjectsInput{} | input := &obs.ListObjectsInput{} | ||||
| input.Bucket = setting.Bucket | input.Bucket = setting.Bucket | ||||
| input.Prefix = strings.TrimPrefix(path.Join(setting.TrainJobModelPath, jobName, setting.OutPutPath, versionName, parentDir), "/") | |||||
| input.Prefix = strings.TrimPrefix(path.Join(setting.TrainJobModelPath, jobName, outPutPath, versionName, parentDir), "/") | |||||
| strPrefix := strings.Split(input.Prefix, "/") | strPrefix := strings.Split(input.Prefix, "/") | ||||
| output, err := ObsCli.ListObjects(input) | output, err := ObsCli.ListObjects(input) | ||||
| fileInfos := make([]FileInfo, 0) | fileInfos := make([]FileInfo, 0) | ||||
| @@ -401,7 +401,7 @@ func GetObsListObject(jobName, parentDir, versionName string) ([]FileInfo, error | |||||
| nextParentDir = parentDir + "/" + fileName | nextParentDir = parentDir + "/" + fileName | ||||
| } | } | ||||
| if fileName == strPrefix[len(strPrefix)-1] || (fileName+"/") == setting.OutPutPath { | |||||
| if fileName == strPrefix[len(strPrefix)-1] || (fileName+"/") == outPutPath { | |||||
| continue | continue | ||||
| } | } | ||||
| } else { | } else { | ||||
| @@ -892,7 +892,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||
| m.Get("/log", repo.TrainJobGetLog) | m.Get("/log", repo.TrainJobGetLog) | ||||
| m.Post("/del_version", repo.DelTrainJobVersion) | m.Post("/del_version", repo.DelTrainJobVersion) | ||||
| m.Post("/stop_version", repo.StopTrainJobVersion) | m.Post("/stop_version", repo.StopTrainJobVersion) | ||||
| m.Get("/model_list", repo.ModelList) | |||||
| m.Get("/result_list", repo.ResultList) | |||||
| }) | }) | ||||
| }) | }) | ||||
| }, reqRepoReader(models.UnitTypeCloudBrain)) | }, reqRepoReader(models.UnitTypeCloudBrain)) | ||||
| @@ -306,7 +306,7 @@ func ModelList(ctx *context.APIContext) { | |||||
| log.Error("GetCloudbrainByJobID(%s) failed:%v", task.JobName, err.Error()) | log.Error("GetCloudbrainByJobID(%s) failed:%v", task.JobName, err.Error()) | ||||
| return | return | ||||
| } | } | ||||
| models, err := storage.GetObsListObject(task.JobName, parentDir, versionName) | |||||
| models, err := storage.GetObsListObject(task.JobName, "output/", parentDir, versionName) | |||||
| if err != nil { | if err != nil { | ||||
| log.Info("get TrainJobListModel failed:", err) | log.Info("get TrainJobListModel failed:", err) | ||||
| ctx.ServerError("GetObsListObject:", err) | ctx.ServerError("GetObsListObject:", err) | ||||
| @@ -364,3 +364,35 @@ func GetModelArtsInferenceJob(ctx *context.APIContext) { | |||||
| }) | }) | ||||
| } | } | ||||
| func ResultList(ctx *context.APIContext) { | |||||
| var ( | |||||
| err error | |||||
| ) | |||||
| var jobID = ctx.Params(":jobid") | |||||
| var versionName = ctx.Query("version_name") | |||||
| parentDir := ctx.Query("parentDir") | |||||
| dirArray := strings.Split(parentDir, "/") | |||||
| task, err := models.GetCloudbrainByJobIDAndVersionName(jobID, versionName) | |||||
| if err != nil { | |||||
| log.Error("GetCloudbrainByJobID(%s) failed:%v", task.JobName, err.Error()) | |||||
| return | |||||
| } | |||||
| models, err := storage.GetObsListObject(task.JobName, "result/", parentDir, versionName) | |||||
| if err != nil { | |||||
| log.Info("get TrainJobListModel failed:", err) | |||||
| ctx.ServerError("GetObsListObject:", err) | |||||
| return | |||||
| } | |||||
| ctx.JSON(http.StatusOK, map[string]interface{}{ | |||||
| "JobID": jobID, | |||||
| "VersionName": versionName, | |||||
| "StatusOK": 0, | |||||
| "Path": dirArray, | |||||
| "Dirs": models, | |||||
| "task": task, | |||||
| "PageIsCloudBrain": true, | |||||
| }) | |||||
| } | |||||
| @@ -1543,34 +1543,6 @@ func getConfigList(perPage, page int, sortBy, order, searchContent, configType s | |||||
| return list, nil | return list, nil | ||||
| } | } | ||||
| func ModelDownload(ctx *context.Context) { | |||||
| var ( | |||||
| err error | |||||
| ) | |||||
| var jobID = ctx.Params(":jobid") | |||||
| versionName := ctx.Query("version_name") | |||||
| parentDir := ctx.Query("parent_dir") | |||||
| fileName := ctx.Query("file_name") | |||||
| log.Info("DownloadSingleModelFile start.") | |||||
| task, err := models.GetCloudbrainByJobIDAndVersionName(jobID, versionName) | |||||
| if err != nil { | |||||
| log.Error("GetCloudbrainByJobID(%s) failed:%v", task.JobName, err.Error()) | |||||
| return | |||||
| } | |||||
| path := strings.TrimPrefix(path.Join(setting.TrainJobModelPath, task.JobName, setting.OutPutPath, versionName, parentDir, fileName), "/") | |||||
| log.Info("Download path is:%s", path) | |||||
| url, err := storage.GetObsCreateSignedUrlByBucketAndKey(setting.Bucket, path) | |||||
| if err != nil { | |||||
| log.Error("GetObsCreateSignedUrl failed: %v", err.Error(), ctx.Data["msgID"]) | |||||
| ctx.ServerError("GetObsCreateSignedUrl", err) | |||||
| return | |||||
| } | |||||
| http.Redirect(ctx.Resp, ctx.Req.Request, url, http.StatusMovedPermanently) | |||||
| } | |||||
| func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInferenceJobForm) { | func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInferenceJobForm) { | ||||
| ctx.Data["PageIsTrainJob"] = true | ctx.Data["PageIsTrainJob"] = true | ||||
| VersionOutputPath := modelarts.GetVersionOutputPathByTotalVersionCount(modelarts.TotalVersionCount) | VersionOutputPath := modelarts.GetVersionOutputPathByTotalVersionCount(modelarts.TotalVersionCount) | ||||
| @@ -1023,7 +1023,6 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||
| m.Get("", reqRepoCloudBrainReader, repo.TrainJobShow) | m.Get("", reqRepoCloudBrainReader, repo.TrainJobShow) | ||||
| m.Post("/stop", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.TrainJobStop) | m.Post("/stop", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.TrainJobStop) | ||||
| m.Post("/del", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.TrainJobDel) | m.Post("/del", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.TrainJobDel) | ||||
| m.Get("/model_download", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.ModelDownload) | |||||
| m.Get("/create_version", cloudbrain.AdminOrJobCreaterRight, repo.TrainJobNewVersion) | m.Get("/create_version", cloudbrain.AdminOrJobCreaterRight, repo.TrainJobNewVersion) | ||||
| m.Post("/create_version", cloudbrain.AdminOrJobCreaterRight, bindIgnErr(auth.CreateModelArtsTrainJobForm{}), repo.TrainJobCreateVersion) | m.Post("/create_version", cloudbrain.AdminOrJobCreaterRight, bindIgnErr(auth.CreateModelArtsTrainJobForm{}), repo.TrainJobCreateVersion) | ||||
| }) | }) | ||||
| @@ -1039,7 +1038,6 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||
| m.Get("", reqRepoCloudBrainReader, repo.InferenceJobShow) | m.Get("", reqRepoCloudBrainReader, repo.InferenceJobShow) | ||||
| m.Post("/stop", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.InferenceJobStop) | m.Post("/stop", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.InferenceJobStop) | ||||
| m.Post("/del", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.InferenceJobDel) | m.Post("/del", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.InferenceJobDel) | ||||
| m.Get("/result_download", cloudbrain.AdminOrOwnerOrJobCreaterRight, repo.ResultDownload) | |||||
| }) | }) | ||||
| m.Get("/create", reqRepoCloudBrainWriter, repo.InferenceJobNew) | m.Get("/create", reqRepoCloudBrainWriter, repo.InferenceJobNew) | ||||
| m.Post("/create", reqRepoCloudBrainWriter, bindIgnErr(auth.CreateModelArtsInferenceJobForm{}), repo.InferenceJobCreate) | m.Post("/create", reqRepoCloudBrainWriter, bindIgnErr(auth.CreateModelArtsInferenceJobForm{}), repo.InferenceJobCreate) | ||||
| @@ -551,7 +551,7 @@ function loadModelFile(version_name,parents,filename,init){ | |||||
| parents = parents || '' | parents = parents || '' | ||||
| filename = filename || '' | filename = filename || '' | ||||
| init = init || '' | init = init || '' | ||||
| $.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/inference-job/${jobID}/model_list?version_name=${version_name}&parentDir=${parents}`, (data) => { | |||||
| $.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/inference-job/${jobID}/result_list?version_name=${version_name}&parentDir=${parents}`, (data) => { | |||||
| $(`#dir_list${version_name}`).empty() | $(`#dir_list${version_name}`).empty() | ||||
| renderDir(data,version_name) | renderDir(data,version_name) | ||||
| if(init==="init"){ | if(init==="init"){ | ||||