diff --git a/routers/api/v1/repo/modelarts.go b/routers/api/v1/repo/modelarts.go index 80ff57a56..1e6b17ad8 100755 --- a/routers/api/v1/repo/modelarts.go +++ b/routers/api/v1/repo/modelarts.go @@ -343,7 +343,7 @@ func ModelDownload(ctx *context.Context) { path := strings.TrimPrefix(path.Join(setting.TrainJobModelPath, task.JobName, setting.OutPutPath, versionName, parentDir, fileName), "/") log.Info("Download path is:%s", path) - if setting.PROXYURL != "" { + if setting.PROXYURL == "" { body, err := storage.ObsDownloadAFile(setting.Bucket, path) if err != nil { log.Info("download error.") diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index a3602e0e7..a820c56fa 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -478,11 +478,10 @@ func TrainJobNewVersion(ctx *context.Context) { func trainJobNewVersionDataPrepare(ctx *context.Context) error { ctx.Data["PageIsCloudBrain"] = true var jobID = ctx.Params(":jobid") - // var versionName = ctx.Params(":version-name") var versionName = ctx.Query("version_name") - // canNewJob, err := canUserCreateTrainJobVersion(ctx, jobID) + // canNewJob, err := canUserCreateTrainJobVersion(ctx, jobID, versionName) // if err != nil { - // ctx.ServerError("get can info failed", err) + // ctx.ServerError("canNewJob can info failed", err) // return err // } // ctx.Data["canNewJob"] = canNewJob @@ -548,7 +547,7 @@ func trainJobNewVersionDataPrepare(ctx *context.Context) error { return err } - ctx.Data["branch"] = Branches + ctx.Data["branches"] = Branches ctx.Data["branch_name"] = task.BranchName ctx.Data["description"] = task.Description ctx.Data["boot_file"] = task.BootFile @@ -1312,17 +1311,19 @@ func canUserCreateTrainJob(uid int64) (bool, error) { return org.IsOrgMember(uid) } -func canUserCreateTrainJobVersion(ctx *context.Context, jobID string) (bool, error) { - - var versionName = "V0001" - task, err := models.GetCloudbrainByJobIDAndVersionName(jobID, versionName) - if err != nil { - return false, err - } - if ctx.User.ID == task.User.ID { - return true, nil - } - return false, err +func canUserCreateTrainJobVersion(ctx *context.Context, jobID string, versionName string) (bool, error) { + // task, err := models.GetCloudbrainByJobIDAndVersionName(jobID, versionName) + // if err != nil { + // return false, err + // } + // if ctx.User.ID == task.UserID { + // canNewJob := true + // return canNewJob, nil + // } else { + // canNewJob := false + // return canNewJob, nil + // } + return true, nil } func TrainJobGetConfigList(ctx *context.Context) { @@ -1378,3 +1379,31 @@ func getConfigList(perPage, page int, sortBy, order, searchContent, configType s 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) +} diff --git a/routers/routes/routes.go b/routers/routes/routes.go index d3212690c..3bacb7549 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -988,6 +988,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("", reqRepoCloudBrainReader, repo.TrainJobShow) m.Post("/stop", reqRepoCloudBrainWriter, repo.TrainJobStop) m.Post("/del", reqRepoCloudBrainWriter, repo.TrainJobDel) + m.Get("/model_download", reqRepoCloudBrainReader, repo.ModelDownload) m.Get("/create_version", reqRepoCloudBrainReader, repo.TrainJobNewVersion) m.Post("/create_version", reqRepoCloudBrainWriter, bindIgnErr(auth.CreateModelArtsTrainJobForm{}), repo.TrainJobCreateVersion) }) diff --git a/templates/repo/modelarts/trainjob/show.tmpl b/templates/repo/modelarts/trainjob/show.tmpl index 6a36ad287..7d32d1b9c 100755 --- a/templates/repo/modelarts/trainjob/show.tmpl +++ b/templates/repo/modelarts/trainjob/show.tmpl @@ -557,6 +557,7 @@ td, th { // detail status and duration $('#'+version_name+'-duration').text(data.JobDuration) $('#'+version_name+'-status').text(data.JobStatus) + loadLog(version_name) }).fail(function(err) { @@ -600,7 +601,7 @@ td, th { }); } function loadLog(version_name){ - $.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/log?version_name=${version_name}&lines=20&order=asc`, (data) => { + $.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/log?version_name=${version_name}&lines=50&order=asc`, (data) => { $('input[name=end_line]').val(data.EndLine) $('input[name=start_line]').val(data.StartLine) $(`#log_file${version_name}`).text(data.Content) @@ -657,7 +658,7 @@ td, th { } } - function downloadModelFile(version_name,parentDir,filename){ + function downloadModelFile(version_name,filename){ $.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/model_download?version_name=${version_name}&file_name=${filename}`, (data) => { console.log(data) @@ -680,10 +681,10 @@ td, th { html += "" html += "" if(data.Dirs[i].IsDir){ - html += `` + html += `` html += "" + data.Dirs[i].FileName + "" }else{ - html += `` + html += `` html += "" + data.Dirs[i].FileName + "" } html += '' @@ -714,9 +715,9 @@ td, th { let divHeight = $(`#log${version_name}`).height(); // 可视区高度 // let version_name=$(this).find('input[name=version_name]').val() console.log("scrollTo,scrollHeight,divHeight",scrollTop,scrollHeight,divHeight) - if(parseInt(scrollTop) + divHeight + 18 == scrollHeight){ + if(parseInt(scrollTop) + divHeight -10 == scrollHeight){ let end_line = $(`#log${version_name} input[name=end_line]`).val() - $.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/log?version_name=${version_name}&base_line=${end_line}&order=desc`, (data) => { + $.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/log?version_name=${version_name}&base_line=${end_line}&lines=50&order=desc`, (data) => { if (data.Lines == 0){ $(`.message${version_name} #header`).text('您已翻阅至日志底部') $(`.message${version_name}`).css('display', 'block') @@ -724,8 +725,14 @@ td, th { $(`.message${version_name}`).css('display', 'none') }, 1000) }else{ - $(`#log${version_name} input[name=end_line]`).val(data.EndLine) - $(`#log${version_name}`).append('
' + data.Content)
+ if(end_line===data.EndLine){
+ return
+ }
+ else{
+ $(`#log${version_name} input[name=end_line]`).val(data.EndLine)
+ $(`#log${version_name}`).append('' + data.Content)
+ }
+
}
}).fail(function(err) {
console.log(err);
@@ -733,7 +740,7 @@ td, th {
}
if(scrollTop == 0){
let start_line = $(`#log${version_name} input[name=start_line]`).val()
- $.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/log?version_name=${version_name}&base_line=${start_line}&order=asc`, (data) => {
+ $.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/log?version_name=${version_name}&base_line=${start_line}&lines=50&order=asc`, (data) => {
if (data.Lines == 0){
$(`.message${version_name} #header`).text('您已翻阅至日志顶部')
$(`.message${version_name}`).css('display', 'block')