From 1a37b355239b2b880eadde2992a813e2c0dff5ed Mon Sep 17 00:00:00 2001 From: zouap Date: Fri, 19 Aug 2022 11:33:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4GPU=E8=AE=AD=E7=BB=83?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=9A=84=E6=97=A5=E5=BF=97=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E3=80=82#2706?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- routers/api/v1/repo/cloudbrain.go | 59 +++++++++++++++++++++++++++++-- routers/routes/routes.go | 2 +- 2 files changed, 57 insertions(+), 4 deletions(-) diff --git a/routers/api/v1/repo/cloudbrain.go b/routers/api/v1/repo/cloudbrain.go index c3a803f70..332a70e6c 100755 --- a/routers/api/v1/repo/cloudbrain.go +++ b/routers/api/v1/repo/cloudbrain.go @@ -6,13 +6,17 @@ package repo import ( - "code.gitea.io/gitea/modules/notification" + "bufio" "encoding/json" + "io" "net/http" + "os" "sort" "strings" "time" + "code.gitea.io/gitea/modules/notification" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/models" @@ -368,14 +372,16 @@ func CloudbrainForModelConvertGetLog(ctx *context.Context) { func CloudbrainGetLog(ctx *context.Context) { ID := ctx.Params(":id") + startLine := ctx.QueryInt("startLine") + endLine := ctx.QueryInt("endLine") job, err := models.GetCloudbrainByID(ID) if err != nil { log.Error("GetCloudbrainByJobName failed: %v", err, ctx.Data["MsgID"]) ctx.ServerError(err.Error(), err) return } - - result := CloudbrainGetLogByJobId(job.JobID, job.JobName) + result := GetLogFromModelDir(job.JobName, startLine, endLine) + //result := CloudbrainGetLogByJobId(job.JobID, job.JobName) if result == nil { log.Error("GetJobLog failed: %v", err, ctx.Data["MsgID"]) ctx.ServerError(err.Error(), err) @@ -384,6 +390,53 @@ func CloudbrainGetLog(ctx *context.Context) { ctx.JSON(http.StatusOK, result) } +func GetLogFromModelDir(jobName string, startLine int, endLine int) map[string]interface{} { + prefix := "/" + setting.CBCodePathPrefix + jobName + "/model" + files, err := storage.GetOneLevelAllObjectUnderDirMinio(setting.Attachment.Minio.Bucket, prefix, "") + if err != nil { + log.Error("query cloudbrain model failed: %v", err) + return nil + } + + re := "" + for _, file := range files { + if strings.HasSuffix(file.FileName, "log.txt") { + path := storage.GetMinioPath(jobName+"/model/", file.FileName) + log.Info("path=" + path) + reader, err := os.Open(path) + defer reader.Close() + if err == nil { + r := bufio.NewReader(reader) + for i := 0; i < endLine; i++ { + line, error := r.ReadString('\n') + log.Info("line=" + line) + if error == io.EOF { + log.Info("read file completed.") + break + } + if error != nil { + log.Info("read file error." + error.Error()) + break + } + if error == nil { + if i >= startLine { + re = re + line + } + } + } + } else { + log.Info("error:" + err.Error()) + } + break + } + } + + return map[string]interface{}{ + "JobName": jobName, + "Content": re, + } +} + func CloudBrainModelConvertList(ctx *context.APIContext) { var ( err error diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 8c2020e05..41d34b937 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -1100,7 +1100,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Post("/del", cloudbrain.AdminOrOwnerOrJobCreaterRightForTrain, repo.CloudBrainTrainJobDel) //m.Get("/models", reqRepoCloudBrainReader, repo.CloudBrainShowModels) m.Get("/download_model", cloudbrain.AdminOrOwnerOrJobCreaterRightForTrain, repo.CloudBrainDownloadModel) - m.Get("/get_log", cloudbrain.AdminOrJobCreaterRightForTrain, repo.GetLogFromModelDir) + //m.Get("/get_log", cloudbrain.AdminOrJobCreaterRightForTrain, repo.GetLogFromModelDir) //m.Post("/create_version", reqWechatBind, cloudbrain.AdminOrJobCreaterRightForTrain, bindIgnErr(auth.CreateModelArtsTrainJobForm{}), repo.TrainJobCreateVersion) }) m.Get("/create", reqWechatBind, reqRepoCloudBrainWriter, repo.CloudBrainTrainJobNew)