From c0a5c8a48c47970961247934e92e026f1c18cbaa Mon Sep 17 00:00:00 2001
From: lewis <747342561@qq.com>
Date: Wed, 2 Jun 2021 18:00:59 +0800
Subject: [PATCH 01/17] add interface
---
routers/repo/cloudbrain.go | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go
index 8d8e97377..55d809ec9 100755
--- a/routers/repo/cloudbrain.go
+++ b/routers/repo/cloudbrain.go
@@ -23,6 +23,7 @@ const (
tplCloudBrainIndex base.TplName = "repo/cloudbrain/index"
tplCloudBrainNew base.TplName = "repo/cloudbrain/new"
tplCloudBrainShow base.TplName = "repo/cloudbrain/show"
+ tplCloudBrainShowModels base.TplName = "repo/cloudbrain/show_models"
)
var (
@@ -332,6 +333,24 @@ func CloudBrainDel(ctx *context.Context) {
ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/cloudbrain")
}
+func CloudBrainGetModels(ctx *context.Context) {
+ ctx.Data["PageIsCloudBrain"] = true
+
+ var jobID = ctx.Params(":jobid")
+ task, err := models.GetCloudbrainByJobID(jobID)
+ if err != nil {
+ log.Error("no such job!")
+ ctx.RenderWithErr("no such job!", tplCloudBrainIndex, nil)
+ return
+ }
+
+
+
+ ctx.Data["task"] = task
+ ctx.Data["jobID"] = jobID
+ ctx.HTML(200, tplCloudBrainShowModels)
+}
+
func GetRate(ctx *context.Context) {
var jobID = ctx.Params(":jobid")
job, err := models.GetCloudbrainByJobID(jobID)
From 42aa1404bbaaa246e3ce56a33cade3eda9d86f05 Mon Sep 17 00:00:00 2001
From: lewis <747342561@qq.com>
Date: Tue, 8 Jun 2021 16:33:43 +0800
Subject: [PATCH 02/17] 2
---
routers/repo/cloudbrain.go | 18 +++++++++++++++++-
routers/routes/routes.go | 6 ++++--
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go
index 55d809ec9..154dbb402 100755
--- a/routers/repo/cloudbrain.go
+++ b/routers/repo/cloudbrain.go
@@ -2,8 +2,10 @@ package repo
import (
"code.gitea.io/gitea/modules/git"
+ "code.gitea.io/gitea/modules/storage"
"encoding/json"
"errors"
+ "net/http"
"os"
"os/exec"
"strconv"
@@ -333,7 +335,7 @@ func CloudBrainDel(ctx *context.Context) {
ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/cloudbrain")
}
-func CloudBrainGetModels(ctx *context.Context) {
+func CloudBrainShowModels(ctx *context.Context) {
ctx.Data["PageIsCloudBrain"] = true
var jobID = ctx.Params(":jobid")
@@ -344,6 +346,7 @@ func CloudBrainGetModels(ctx *context.Context) {
return
}
+ //get dirs
ctx.Data["task"] = task
@@ -351,6 +354,19 @@ func CloudBrainGetModels(ctx *context.Context) {
ctx.HTML(200, tplCloudBrainShowModels)
}
+func CloudBrainDownloadModel(ctx *context.Context) {
+ filePath := ctx.Query("file_path")
+ fileName := ctx.Query("file_name")
+ url, err := storage.Attachments.PresignedGetURL(filePath, fileName)
+ if err != nil {
+ log.Error("PresignedGetURL failed: %v", err.Error())
+ ctx.ServerError("PresignedGetURL", err)
+ return
+ }
+
+ http.Redirect(ctx.Resp, ctx.Req.Request, url, http.StatusMovedPermanently)
+}
+
func GetRate(ctx *context.Context) {
var jobID = ctx.Params(":jobid")
job, err := models.GetCloudbrainByJobID(jobID)
diff --git a/routers/routes/routes.go b/routers/routes/routes.go
index e8e33104d..81f15f27d 100755
--- a/routers/routes/routes.go
+++ b/routers/routes/routes.go
@@ -910,9 +910,11 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Post("/commit_image", reqRepoCloudBrainWriter, bindIgnErr(auth.CommitImageCloudBrainForm{}), repo.CloudBrainCommitImage)
m.Post("/stop", reqRepoCloudBrainWriter, repo.CloudBrainStop)
m.Post("/del", reqRepoCloudBrainWriter, repo.CloudBrainDel)
- m.Get("/rate", reqRepoCloudBrainWriter, repo.GetRate)
+ m.Get("/rate", reqRepoCloudBrainReader, repo.GetRate)
+ m.Get("/models", reqRepoCloudBrainReader, repo.CloudBrainShowModels)
+ m.Get("/download_model", reqRepoCloudBrainReader, repo.CloudBrainDownloadModel)
})
- m.Get("/create", reqRepoCloudBrainWriter, repo.CloudBrainNew)
+ m.Get("/create", reqRepoCloudBrainReader, repo.CloudBrainNew)
m.Post("/create", reqRepoCloudBrainWriter, bindIgnErr(auth.CreateCloudBrainForm{}), repo.CloudBrainCreate)
}, context.RepoRef())
From 70e2aabdca46e3199629f32d0fbcf4e8c7af1f47 Mon Sep 17 00:00:00 2001
From: lewis <747342561@qq.com>
Date: Tue, 15 Jun 2021 15:49:07 +0800
Subject: [PATCH 03/17] mod req
---
routers/repo/cloudbrain.go | 12 ++++++++++++
routers/repo/dir.go | 15 ++++++++++-----
templates/repo/datasets/dirs/dir_list.tmpl | 2 +-
3 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go
index 154dbb402..7cac900c6 100755
--- a/routers/repo/cloudbrain.go
+++ b/routers/repo/cloudbrain.go
@@ -349,11 +349,23 @@ func CloudBrainShowModels(ctx *context.Context) {
//get dirs
+
ctx.Data["task"] = task
ctx.Data["jobID"] = jobID
ctx.HTML(200, tplCloudBrainShowModels)
}
+func getModelDirs(uuid string, parentDir string) (string, error) {
+ var req string
+ if parentDir == "" {
+ req = "uuid=" + uuid
+ } else {
+ req = "uuid=" + uuid + "&parentDir=" + parentDir
+ }
+
+ return getDirs(req)
+}
+
func CloudBrainDownloadModel(ctx *context.Context) {
filePath := ctx.Query("file_path")
fileName := ctx.Query("file_name")
diff --git a/routers/repo/dir.go b/routers/repo/dir.go
index 388af34ec..ea1f80498 100755
--- a/routers/repo/dir.go
+++ b/routers/repo/dir.go
@@ -58,7 +58,7 @@ func DirIndex(ctx *context.Context) {
dirArray = []string{attachment.Name}
}
- dirs, err := getDirs(uuid, parentDir)
+ dirs, err := getDatasetDirs(uuid, parentDir)
if err != nil {
log.Error("getDirs failed:", err.Error())
ctx.ServerError("getDirs failed:", err)
@@ -75,13 +75,13 @@ func DirIndex(ctx *context.Context) {
ctx.Data["Path"] = dirArray
ctx.Data["Dirs"] = fileInfos
+ ctx.Data["Uuid"] = uuid
ctx.Data["PageIsDataset"] = true
ctx.HTML(200, tplDirIndex)
}
-func getDirs(uuid string, parentDir string) (string, error) {
- var dirs string
+func getDatasetDirs(uuid string, parentDir string) (string, error) {
var req string
if parentDir == "" {
req = "uuid=" + uuid
@@ -89,7 +89,13 @@ func getDirs(uuid string, parentDir string) (string, error) {
req = "uuid=" + uuid + "&parentDir=" + parentDir
}
- url := setting.DecompressAddress + "/dirs?" + req
+ return getDirs(req)
+}
+
+func getDirs(req string) (string, error) {
+ var dirs string
+
+ url := setting.DecompressAddress + "/dirs/dataset?" + req
reqHttp, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
log.Error("http.NewRequest failed:", err.Error())
@@ -127,6 +133,5 @@ func getDirs(uuid string, parentDir string) (string, error) {
}
dirs = resp.FileInfos
-
return dirs, nil
}
diff --git a/templates/repo/datasets/dirs/dir_list.tmpl b/templates/repo/datasets/dirs/dir_list.tmpl
index 98232e17e..9d10f509c 100755
--- a/templates/repo/datasets/dirs/dir_list.tmpl
+++ b/templates/repo/datasets/dirs/dir_list.tmpl
@@ -6,7 +6,7 @@
-
+
{{if .IsDir}} {{svg "octicon-file-directory" 16}}{{else}}{{svg "octicon-file" 16}}{{end}} {{.FileName}}
From ffb7b870977e343579c2079b4df1599b91ea8ba8 Mon Sep 17 00:00:00 2001
From: lewis <747342561@qq.com>
Date: Tue, 15 Jun 2021 17:48:08 +0800
Subject: [PATCH 04/17] download-model
---
modules/storage/minio.go | 2 +-
routers/repo/attachment.go | 2 +-
routers/repo/cloudbrain.go | 34 ++++++++++++++++------
routers/repo/dir.go | 15 ++++++----
templates/repo/datasets/dirs/dir_list.tmpl | 2 +-
5 files changed, 38 insertions(+), 17 deletions(-)
mode change 100644 => 100755 modules/storage/minio.go
diff --git a/modules/storage/minio.go b/modules/storage/minio.go
old mode 100644
new mode 100755
index 83a60f376..b14442d56
--- a/modules/storage/minio.go
+++ b/modules/storage/minio.go
@@ -83,7 +83,7 @@ func (m *MinioStorage) PresignedGetURL(path string, fileName string) (string, er
reqParams.Set("response-content-disposition", "attachment; filename=\""+fileName+"\"")
var preURL *url.URL
- preURL, err := m.client.PresignedGetObject(m.bucket, m.buildMinioPath(path), PresignedGetUrlExpireTime, reqParams)
+ preURL, err := m.client.PresignedGetObject(m.bucket, path, PresignedGetUrlExpireTime, reqParams)
if err != nil {
return "", err
}
diff --git a/routers/repo/attachment.go b/routers/repo/attachment.go
index 086965bdf..b59f4ffc7 100755
--- a/routers/repo/attachment.go
+++ b/routers/repo/attachment.go
@@ -205,7 +205,7 @@ func GetAttachment(ctx *context.Context) {
if setting.Attachment.StoreType == storage.MinioStorageType {
url := ""
if typeCloudBrain == models.TypeCloudBrainOne {
- url, err = storage.Attachments.PresignedGetURL(attach.RelativePath(), attach.Name)
+ url, err = storage.Attachments.PresignedGetURL(setting.Attachment.Minio.BasePath + attach.RelativePath(), attach.Name)
if err != nil {
ctx.ServerError("PresignedGetURL", err)
return
diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go
index 7cac900c6..e70944150 100755
--- a/routers/repo/cloudbrain.go
+++ b/routers/repo/cloudbrain.go
@@ -338,37 +338,53 @@ func CloudBrainDel(ctx *context.Context) {
func CloudBrainShowModels(ctx *context.Context) {
ctx.Data["PageIsCloudBrain"] = true
- var jobID = ctx.Params(":jobid")
+ jobID := ctx.Params(":jobid")
+ parentDir := ctx.Query("parentDir")
task, err := models.GetCloudbrainByJobID(jobID)
if err != nil {
log.Error("no such job!")
- ctx.RenderWithErr("no such job!", tplCloudBrainIndex, nil)
+ ctx.ServerError("no such job:", err)
return
}
//get dirs
+ dirs, err := getModelDirs(task.JobName, parentDir)
+ if err != nil {
+ log.Error("getModelDirs failed:", err.Error())
+ ctx.ServerError("getModelDirs failed:", err)
+ return
+ }
+ var fileInfos []FileInfo
+ err = json.Unmarshal([]byte(dirs), &fileInfos)
+ if err != nil {
+ log.Error("json.Unmarshal failed:", err.Error())
+ ctx.ServerError("json.Unmarshal failed:", err)
+ return
+ }
-
+ ctx.Data["Dirs"] = fileInfos
ctx.Data["task"] = task
- ctx.Data["jobID"] = jobID
ctx.HTML(200, tplCloudBrainShowModels)
}
-func getModelDirs(uuid string, parentDir string) (string, error) {
+func getModelDirs(jobName string, parentDir string) (string, error) {
var req string
+ modelActualPath := setting.JobPath + jobName + "/model/"
if parentDir == "" {
- req = "uuid=" + uuid
+ req = "baseDir=" + modelActualPath
} else {
- req = "uuid=" + uuid + "&parentDir=" + parentDir
+ req = "baseDir=" + modelActualPath + "&parentDir=" + parentDir
}
return getDirs(req)
}
func CloudBrainDownloadModel(ctx *context.Context) {
- filePath := ctx.Query("file_path")
- fileName := ctx.Query("file_name")
+ parentDir := ctx.Query("parentDir")
+ fileName := ctx.Query("fileName")
+ jobName := ctx.Query("jobName")
+ filePath := "jobs/" +jobName + "/model/" + parentDir
url, err := storage.Attachments.PresignedGetURL(filePath, fileName)
if err != nil {
log.Error("PresignedGetURL failed: %v", err.Error())
diff --git a/routers/repo/dir.go b/routers/repo/dir.go
index ea1f80498..d1dfbcd11 100755
--- a/routers/repo/dir.go
+++ b/routers/repo/dir.go
@@ -60,8 +60,8 @@ func DirIndex(ctx *context.Context) {
dirs, err := getDatasetDirs(uuid, parentDir)
if err != nil {
- log.Error("getDirs failed:", err.Error())
- ctx.ServerError("getDirs failed:", err)
+ log.Error("getDatasetDirs failed:", err.Error())
+ ctx.ServerError("getDatasetDirs failed:", err)
return
}
@@ -83,10 +83,15 @@ func DirIndex(ctx *context.Context) {
func getDatasetDirs(uuid string, parentDir string) (string, error) {
var req string
+ dataActualPath := setting.Attachment.Minio.RealPath +
+ setting.Attachment.Minio.Bucket + "/" +
+ setting.Attachment.Minio.BasePath +
+ models.AttachmentRelativePath(uuid) +
+ uuid + "/"
if parentDir == "" {
- req = "uuid=" + uuid
+ req = "baseDir=" + dataActualPath
} else {
- req = "uuid=" + uuid + "&parentDir=" + parentDir
+ req = "baseDir=" + dataActualPath + "&parentDir=" + parentDir
}
return getDirs(req)
@@ -95,7 +100,7 @@ func getDatasetDirs(uuid string, parentDir string) (string, error) {
func getDirs(req string) (string, error) {
var dirs string
- url := setting.DecompressAddress + "/dirs/dataset?" + req
+ url := setting.DecompressAddress + "/dirs?" + req
reqHttp, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
log.Error("http.NewRequest failed:", err.Error())
diff --git a/templates/repo/datasets/dirs/dir_list.tmpl b/templates/repo/datasets/dirs/dir_list.tmpl
index 9d10f509c..975dccef0 100755
--- a/templates/repo/datasets/dirs/dir_list.tmpl
+++ b/templates/repo/datasets/dirs/dir_list.tmpl
@@ -6,7 +6,7 @@
|
-
+
{{if .IsDir}} {{svg "octicon-file-directory" 16}}{{else}}{{svg "octicon-file" 16}}{{end}} {{.FileName}}
From 97a8ba270430a7089104533af35853a2a9490174 Mon Sep 17 00:00:00 2001
From: lewis <747342561@qq.com>
Date: Thu, 17 Jun 2021 09:43:42 +0800
Subject: [PATCH 05/17] html
---
routers/repo/cloudbrain.go | 3 +-
templates/repo/cloudbrain/index.tmpl | 10 +++----
.../repo/cloudbrain/models/dir_list.tmpl | 27 +++++++++++++++++
templates/repo/cloudbrain/models/index.tmpl | 29 +++++++++++++++++++
4 files changed, 63 insertions(+), 6 deletions(-)
create mode 100755 templates/repo/cloudbrain/models/dir_list.tmpl
create mode 100755 templates/repo/cloudbrain/models/index.tmpl
diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go
index e70944150..4b3162c28 100755
--- a/routers/repo/cloudbrain.go
+++ b/routers/repo/cloudbrain.go
@@ -25,7 +25,7 @@ const (
tplCloudBrainIndex base.TplName = "repo/cloudbrain/index"
tplCloudBrainNew base.TplName = "repo/cloudbrain/new"
tplCloudBrainShow base.TplName = "repo/cloudbrain/show"
- tplCloudBrainShowModels base.TplName = "repo/cloudbrain/show_models"
+ tplCloudBrainShowModels base.TplName = "repo/cloudbrain/models/index"
)
var (
@@ -365,6 +365,7 @@ func CloudBrainShowModels(ctx *context.Context) {
ctx.Data["Dirs"] = fileInfos
ctx.Data["task"] = task
+ ctx.Data["JobID"] = jobID
ctx.HTML(200, tplCloudBrainShowModels)
}
diff --git a/templates/repo/cloudbrain/index.tmpl b/templates/repo/cloudbrain/index.tmpl
index 9a58a05a6..f48f063e8 100755
--- a/templates/repo/cloudbrain/index.tmpl
+++ b/templates/repo/cloudbrain/index.tmpl
@@ -248,7 +248,7 @@
-
+
{{.Status}}
@@ -257,11 +257,11 @@
{{svg "octicon-flame" 16}} {{TimeSinceUnix .CreatedUnix $.Lang}}
-
-
+
+
diff --git a/templates/repo/cloudbrain/models/dir_list.tmpl b/templates/repo/cloudbrain/models/dir_list.tmpl
new file mode 100755
index 000000000..db397f13e
--- /dev/null
+++ b/templates/repo/cloudbrain/models/dir_list.tmpl
@@ -0,0 +1,27 @@
+{{if .Dirs}}
+
+
+{{end}}
diff --git a/templates/repo/cloudbrain/models/index.tmpl b/templates/repo/cloudbrain/models/index.tmpl
new file mode 100755
index 000000000..3b53ad78e
--- /dev/null
+++ b/templates/repo/cloudbrain/models/index.tmpl
@@ -0,0 +1,29 @@
+{{template "base/head" .}}
+
+ {{template "repo/header" .}}
+
+
+
+
+
+{{template "base/footer" .}}
From 4082282eae4d700232d5025cf692fab8d3a3fab4 Mon Sep 17 00:00:00 2001
From: lewis <747342561@qq.com>
Date: Thu, 17 Jun 2021 09:50:14 +0800
Subject: [PATCH 06/17] add type in explore dataset
---
templates/explore/dataset_list.tmpl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/explore/dataset_list.tmpl b/templates/explore/dataset_list.tmpl
index 9200274a9..48ae78127 100755
--- a/templates/explore/dataset_list.tmpl
+++ b/templates/explore/dataset_list.tmpl
@@ -25,7 +25,7 @@
{{range .Datasets}}
|