From bdb3907283b9227a9e99067a7e7aea7f5de3a87b Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 25 Nov 2021 11:47:16 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E7=9A=84=E5=86=97=E4=BD=99=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/storage/obs.go | 17 ----------- routers/api/v1/api.go | 1 - routers/api/v1/repo/modelarts.go | 61 ---------------------------------------- 3 files changed, 79 deletions(-) diff --git a/modules/storage/obs.go b/modules/storage/obs.go index 540463e80..a5c463bb0 100755 --- a/modules/storage/obs.go +++ b/modules/storage/obs.go @@ -337,20 +337,3 @@ func ObsCreateObject(path string) error { return nil } - -func ObsDownloadAFile(bucket string, key string) (io.ReadCloser, error) { - input := &obs.GetObjectInput{} - input.Bucket = bucket - input.Key = key - output, err := ObsCli.GetObject(input) - if err == nil { - log.Info("StorageClass:%s, ETag:%s, ContentType:%s, ContentLength:%d, LastModified:%s\n", - output.StorageClass, output.ETag, output.ContentType, output.ContentLength, output.LastModified) - return output.Body, nil - } else if obsError, ok := err.(obs.ObsError); ok { - log.Error("Code:%s, Message:%s", obsError.Code, obsError.Message) - return nil, obsError - } else { - return nil, err - } -} diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 93afe2a31..b7ef8d48f 100755 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -880,7 +880,6 @@ func RegisterRoutes(m *macaron.Macaron) { m.Post("/del_version", repo.DelTrainJobVersion) m.Post("/stop_version", repo.StopTrainJobVersion) m.Get("/model_list", repo.ModelList) - m.Get("/model_download", repo.ModelDownload) }) }) }, reqRepoReader(models.UnitTypeCloudBrain)) diff --git a/routers/api/v1/repo/modelarts.go b/routers/api/v1/repo/modelarts.go index 1e6b17ad8..b4d5fc010 100755 --- a/routers/api/v1/repo/modelarts.go +++ b/routers/api/v1/repo/modelarts.go @@ -7,7 +7,6 @@ package repo import ( "net/http" - "path" "strconv" "strings" @@ -15,7 +14,6 @@ import ( "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/modelarts" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/storage" ) @@ -321,62 +319,3 @@ func ModelList(ctx *context.APIContext) { "PageIsCloudBrain": true, }) } - -func ModelDownload(ctx *context.Context) { - var ( - err error - ) - - var jobID = ctx.Params(":jobid") - versionName := ctx.Query("version_name") - // versionName := "V0001" - parentDir := ctx.Query("parent_dir") - fileName := ctx.Query("file_name") - log.Info("DownloadSingleModelFile start.") - // id := ctx.Params(":ID") - // path := Model_prefix + models.AttachmentRelativePath(id) + "/" + parentDir + fileName - 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) - if setting.PROXYURL == "" { - body, err := storage.ObsDownloadAFile(setting.Bucket, path) - if err != nil { - log.Info("download error.") - } else { - //count++ - // models.ModifyModelDownloadCount(id) - defer body.Close() - ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+fileName) - ctx.Resp.Header().Set("Content-Type", "application/octet-stream") - p := make([]byte, 1024) - var readErr error - var readCount int - // 读取对象内容 - for { - readCount, readErr = body.Read(p) - if readCount > 0 { - ctx.Resp.Write(p[:readCount]) - //fmt.Printf("%s", p[:readCount]) - } - if readErr != nil { - break - } - } - } - } else { - 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 - } - //count++ - // models.ModifyModelDownloadCount(id) - http.Redirect(ctx.Resp, ctx.Req.Request, url, http.StatusMovedPermanently) - } -} From c1f5c3599894d8efe52c8c3bdd7eea0f12dacc11 Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Thu, 25 Nov 2021 11:57:53 +0800 Subject: [PATCH 2/6] fix issue --- templates/repo/modelarts/trainjob/show.tmpl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/templates/repo/modelarts/trainjob/show.tmpl b/templates/repo/modelarts/trainjob/show.tmpl index 7d32d1b9c..83d2ca39d 100755 --- a/templates/repo/modelarts/trainjob/show.tmpl +++ b/templates/repo/modelarts/trainjob/show.tmpl @@ -708,14 +708,14 @@ td, th { html += "" $(`#dir_list${version_name}`).append(html) } - // $(`.log{}`).scroll() + function logScroll(version_name) { - let scrollTop = $(`#log${version_name}`)[0].scrollTop; // 滚动距离 - let scrollHeight = $(`#log${version_name}`)[0].scrollHeight; // 文档高度 - 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 -10 == scrollHeight){ + let container = document.querySelector(`#log${version_name}`) + let scrollTop = container.scrollTop + let scrollHeight = container.scrollHeight + let clientHeight = container.clientHeight + + if(scrollTop + clientHeight == scrollHeight && scrollHeight>clientHeight){ 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}&lines=50&order=desc`, (data) => { if (data.Lines == 0){ From dd59dd2acf005323d51a78522a22fa12d7c45afa Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 25 Nov 2021 12:02:59 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=9D=83=E9=99=90=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routers/repo/modelarts.go | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index a820c56fa..484715cb5 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -1160,6 +1160,14 @@ func TrainJobShow(ctx *context.Context) { ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobShow, nil) return } + //设置权限 + canNewJob, err := canUserCreateTrainJobVersion(ctx, VersionListTasks[0].UserID) + if err != nil { + ctx.ServerError("canNewJob failed", err) + return + } + ctx.Data["canNewJob"] = canNewJob + //将运行参数转化为epoch_size = 3, device_target = Ascend的格式 for i, _ := range VersionListTasks { @@ -1311,19 +1319,14 @@ func canUserCreateTrainJob(uid int64) (bool, error) { return org.IsOrgMember(uid) } -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 canUserCreateTrainJobVersion(ctx *context.Context, userID int64) (bool, error) { + if ctx.User.ID == userID || ctx.User.IsAdmin { + canNewJob := true + return canNewJob, nil + } else { + canNewJob := false + return canNewJob, nil + } } func TrainJobGetConfigList(ctx *context.Context) { From b1b8a69936c76e5e416139fa922227ef0b9209dc Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Thu, 25 Nov 2021 12:03:05 +0800 Subject: [PATCH 4/6] fix issue --- templates/repo/modelarts/trainjob/show.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/repo/modelarts/trainjob/show.tmpl b/templates/repo/modelarts/trainjob/show.tmpl index 83d2ca39d..fced7a6a8 100755 --- a/templates/repo/modelarts/trainjob/show.tmpl +++ b/templates/repo/modelarts/trainjob/show.tmpl @@ -189,7 +189,7 @@ td, th {
{{$.CsrfTokenHtml}} - {{if $.Permission.CanWrite $.UnitTypeCloudBrain}} + {{if $.canNewJob}} {{$.i18n.Tr "repo.modelarts.modify"}} {{else}} {{$.i18n.Tr "repo.modelarts.modify"}} From c9f1c34c2aca4e774d8f1344f61d6705655ea91d Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 25 Nov 2021 15:09:49 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E8=AE=AD=E7=BB=83=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=9D=83=E9=99=90=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routers/repo/modelarts.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 484715cb5..1243a7586 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -1320,12 +1320,16 @@ func canUserCreateTrainJob(uid int64) (bool, error) { return org.IsOrgMember(uid) } func canUserCreateTrainJobVersion(ctx *context.Context, userID int64) (bool, error) { - if ctx.User.ID == userID || ctx.User.IsAdmin { - canNewJob := true - return canNewJob, nil + if ctx == nil || ctx.User == nil { + log.Error("user unlogin!") + return false, nil + } + if userID != ctx.User.ID || !ctx.User.IsAdmin { + log.Error("Only user itself and admin can new trainjob!") + // ctx.ServerError("Only user itself and admin can new trainjob!", nil) + return false, nil } else { - canNewJob := false - return canNewJob, nil + return true, nil } } From de20c7491f72366284c98561412747266cb888cc Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 25 Nov 2021 15:25:37 +0800 Subject: [PATCH 6/6] fix bug --- routers/repo/modelarts.go | 6 +++--- templates/repo/modelarts/trainjob/show.tmpl | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 1243a7586..e048b98f4 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -1324,12 +1324,12 @@ func canUserCreateTrainJobVersion(ctx *context.Context, userID int64) (bool, err log.Error("user unlogin!") return false, nil } - if userID != ctx.User.ID || !ctx.User.IsAdmin { + if userID == ctx.User.ID || ctx.User.IsAdmin { + return true, nil + } else { log.Error("Only user itself and admin can new trainjob!") // ctx.ServerError("Only user itself and admin can new trainjob!", nil) return false, nil - } else { - return true, nil } } diff --git a/templates/repo/modelarts/trainjob/show.tmpl b/templates/repo/modelarts/trainjob/show.tmpl index fced7a6a8..4c9f38bb0 100755 --- a/templates/repo/modelarts/trainjob/show.tmpl +++ b/templates/repo/modelarts/trainjob/show.tmpl @@ -715,7 +715,7 @@ td, th { let scrollHeight = container.scrollHeight let clientHeight = container.clientHeight - if(scrollTop + clientHeight == scrollHeight && scrollHeight>clientHeight){ + if(parseInt(scrollTop) + clientHeight == scrollHeight && scrollHeight>clientHeight){ 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}&lines=50&order=desc`, (data) => { if (data.Lines == 0){