From 229aef3c366bbcaa7f88fad69d034634b05593b5 Mon Sep 17 00:00:00 2001 From: zouap Date: Fri, 15 Jul 2022 18:00:02 +0800 Subject: [PATCH 001/102] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- models/user_analysis_for_activity.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/user_analysis_for_activity.go b/models/user_analysis_for_activity.go index e69eecae0b..d8e4a55002 100644 --- a/models/user_analysis_for_activity.go +++ b/models/user_analysis_for_activity.go @@ -195,7 +195,7 @@ func queryPullRequestPublic(start_unix int64, end_unix int64, publicAllRepo map[ sess := x.NewSession() defer sess.Close() resultMap := make(map[int64]int) - cond := "pull_request.merged_unix>=" + fmt.Sprint(start_unix) + " and pull_request.merged_unix<=" + fmt.Sprint(end_unix) + cond := "issue.created_unix>=" + fmt.Sprint(start_unix) + " and issue.created_unix<=" + fmt.Sprint(end_unix) count, err := sess.Table("issue").Join("inner", "pull_request", "issue.id=pull_request.issue_id").Where(cond).Count(new(Issue)) if err != nil { log.Info("query issue error. return.") -- 2.34.1 From 0de0277d8f1f74651610295be1a9815895c6df41 Mon Sep 17 00:00:00 2001 From: zouap Date: Mon, 18 Jul 2022 10:29:26 +0800 Subject: [PATCH 002/102] =?UTF-8?q?GPU=E8=B0=83=E8=AF=95=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=95=B0=E6=8D=AE=E9=9B=86=E5=BF=85=E9=80=89?= =?UTF-8?q?=E9=A1=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- modules/cloudbrain/cloudbrain.go | 4 ++-- routers/repo/cloudbrain.go | 20 ++++++++++++-------- templates/repo/cloudbrain/new.tmpl | 4 ++-- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/modules/cloudbrain/cloudbrain.go b/modules/cloudbrain/cloudbrain.go index dbfff6027c..02c4dc0424 100755 --- a/modules/cloudbrain/cloudbrain.go +++ b/modules/cloudbrain/cloudbrain.go @@ -325,7 +325,7 @@ func GenerateTask(req GenerateCloudBrainTaskReq) error { ReadOnly: true, }, }) - } else { + } else if len(req.DatasetInfos) > 1 { for _, dataset := range req.DatasetInfos { volumes = append(volumes, models.Volume{ HostPath: models.StHostPath{ @@ -545,7 +545,7 @@ func RestartTask(ctx *context.Context, task *models.Cloudbrain, newID *string) e GPUNumber: resourceSpec.GpuNum, MemoryMB: resourceSpec.MemMiB, ShmMB: resourceSpec.ShareMemMiB, - Command: GetCloudbrainDebugCommand(),//Command, + Command: GetCloudbrainDebugCommand(), //Command, NeedIBDevice: false, IsMainRole: false, UseNNI: false, diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 20a1fcc073..71aafb3cde 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -285,13 +285,17 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { return } } - - datasetInfos, datasetNames, err := models.GetDatasetInfo(uuids) - if err != nil { - log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) - ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) - return + var datasetInfos map[string]models.DatasetInfo + var datasetNames string + //var + if uuids != "" { + datasetInfos, datasetNames, err = models.GetDatasetInfo(uuids) + if err != nil { + log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) + cloudBrainNewDataPrepare(ctx) + ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) + return + } } command := cloudbrain.GetCloudbrainDebugCommand() @@ -368,7 +372,6 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { } } - func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBrainInferencForm) { ctx.Data["PageIsCloudBrain"] = true displayJobName := form.DisplayJobName @@ -487,6 +490,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/modelarts/inference-job") } + /** 检查用户传输的参数是否符合专属资源池 */ diff --git a/templates/repo/cloudbrain/new.tmpl b/templates/repo/cloudbrain/new.tmpl index f0538261d4..c4f122c1e3 100755 --- a/templates/repo/cloudbrain/new.tmpl +++ b/templates/repo/cloudbrain/new.tmpl @@ -237,10 +237,10 @@ -
+
+ disabled autofocus maxlength="255" readonly="readonly">
-- 2.34.1 From 69e3ea800b662e9bb50db65d8878410654942251 Mon Sep 17 00:00:00 2001 From: zouap Date: Mon, 18 Jul 2022 14:29:39 +0800 Subject: [PATCH 003/102] =?UTF-8?q?GPU=E8=B0=83=E8=AF=95=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=95=B0=E6=8D=AE=E9=9B=86=E5=BF=85=E9=80=89?= =?UTF-8?q?=E9=A1=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- routers/repo/cloudbrain.go | 1 + templates/repo/cloudbrain/new.tmpl | 4 ++-- web_src/js/components/dataset/selectDataset.vue | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 71aafb3cde..7b7bae62d2 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -221,6 +221,7 @@ func CloudBrainNew(ctx *context.Context) { ctx.ServerError("get new cloudbrain info failed", err) return } + ctx.Data["PageIsGPUDebug"] = true ctx.HTML(200, tplCloudBrainNew) } diff --git a/templates/repo/cloudbrain/new.tmpl b/templates/repo/cloudbrain/new.tmpl index c4f122c1e3..f0538261d4 100755 --- a/templates/repo/cloudbrain/new.tmpl +++ b/templates/repo/cloudbrain/new.tmpl @@ -237,10 +237,10 @@
-
+
+ disabled autofocus required maxlength="255" readonly="readonly">
diff --git a/web_src/js/components/dataset/selectDataset.vue b/web_src/js/components/dataset/selectDataset.vue index 4c056094e5..3596fea1ff 100755 --- a/web_src/js/components/dataset/selectDataset.vue +++ b/web_src/js/components/dataset/selectDataset.vue @@ -955,7 +955,8 @@ export default { ) { this.benchmarkNew = true; } - if (location.href.indexOf("modelarts/notebook/create") !== -1) { + if (location.href.indexOf("modelarts/notebook/create") !== -1 || location.href.indexOf("/cloudbrain/create") !== -1) { + console.log("required is false;"); this.required = false; } window.onresize = () => { -- 2.34.1 From ac7aae247d6c959c0080833fe1748206f1455a8f Mon Sep 17 00:00:00 2001 From: zouap Date: Tue, 19 Jul 2022 14:44:53 +0800 Subject: [PATCH 004/102] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- models/user_business_analysis.go | 47 ++++++++++++++++++++++++++---- routers/repo/user_data_analysis.go | 10 ++++++- 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/models/user_business_analysis.go b/models/user_business_analysis.go index cb503d6697..99a9edfe8e 100644 --- a/models/user_business_analysis.go +++ b/models/user_business_analysis.go @@ -110,9 +110,9 @@ type UserBusinessAnalysisAll struct { } type UserBusinessAnalysis struct { - ID int64 `xorm:"pk"` - - CountDate int64 `xorm:"pk"` + ID int64 `xorm:"pk"` + DataDate string `xorm:"pk"` + CountDate int64 `xorm:"NULL"` //action :ActionMergePullRequest // 11 CodeMergeCount int `xorm:"NOT NULL DEFAULT 0"` @@ -171,8 +171,6 @@ type UserBusinessAnalysis struct { //user Name string `xorm:"NOT NULL"` - DataDate string `xorm:"NULL"` - CloudBrainTaskNum int `xorm:"NOT NULL DEFAULT 0"` GpuDebugJob int `xorm:"NOT NULL DEFAULT 0"` NpuDebugJob int `xorm:"NOT NULL DEFAULT 0"` @@ -411,6 +409,42 @@ func QueryUserStaticDataAll(opts *UserBusinessAnalysisQueryOptions) ([]*UserBusi return userBusinessAnalysisReturnList, allCount } +func QueryDataForUserDefineFromDb(opts *UserBusinessAnalysisQueryOptions, key string) ([]*UserBusinessAnalysis, int64) { + statictisSess := xStatistic.NewSession() + defer statictisSess.Close() + + allCount, err := statictisSess.Where("data_date=" + key).Count(new(UserBusinessAnalysis)) + if err == nil { + if allCount > 0 { + userBusinessAnalysisList := make([]*UserBusinessAnalysis, 0) + if err := statictisSess.Table("user_business_analysis").Where("data_date="+key).OrderBy("id desc").Limit(opts.PageSize, (opts.Page-1)*opts.PageSize). + Find(&userBusinessAnalysisList); err != nil { + return nil, 0 + } + return userBusinessAnalysisList, allCount + } + } + return nil, 0 +} + +func WriteDataToDb(dataList []*UserBusinessAnalysis, key string) { + statictisSess := xStatistic.NewSession() + defer statictisSess.Close() + log.Info("write to db, size=" + fmt.Sprint(len(dataList))) + userBusinessAnalysisList := make([]*UserBusinessAnalysis, 0) + for _, data := range dataList { + data.DataDate = key + userBusinessAnalysisList = append(userBusinessAnalysisList, data) + if len(userBusinessAnalysisList) > BATCH_INSERT_SIZE { + statictisSess.Insert(userBusinessAnalysisList) + userBusinessAnalysisList = make([]*UserBusinessAnalysis, 0) + } + } + if len(userBusinessAnalysisList) > 0 { + statictisSess.Insert(userBusinessAnalysisList) + } +} + func QueryUserStaticDataForUserDefine(opts *UserBusinessAnalysisQueryOptions, wikiCountMap map[string]int) ([]*UserBusinessAnalysis, int64) { log.Info("start to count other user info data") sess := x.NewSession() @@ -954,6 +988,9 @@ func CounDataByDateAndReCount(wikiCountMap map[string]int, startTime time.Time, statictisSess := xStatistic.NewSession() defer statictisSess.Close() + log.Info("truncate all data from table:user_business_analysis ") + statictisSess.Exec("TRUNCATE TABLE user_business_analysis") + cond := "type != 1" count, err := sess.Where(cond).Count(new(User)) if err != nil { diff --git a/routers/repo/user_data_analysis.go b/routers/repo/user_data_analysis.go index ac1265d045..bafe46878b 100755 --- a/routers/repo/user_data_analysis.go +++ b/routers/repo/user_data_analysis.go @@ -611,7 +611,15 @@ func QueryUserStaticDataPage(ctx *context.Context) { ctx.JSON(http.StatusOK, ctx.Tr("user.static.downloadinfo")+"/api/v1/download_user_define_file?filename="+filename) } else { mapInterface := make(map[string]interface{}) - re, count := models.QueryUserStaticDataPage(pageOpts) + key := startTime.Format("2006-01-02") + endTime.Format("2006-01-02") + log.Info("db key =" + key) + re, count := models.QueryDataForUserDefineFromDb(pageOpts, key) + if count == 0 { + wikiMap, _ := queryWikiCountMap(startTime, endTime) + re, count = models.QueryUserStaticDataForUserDefine(pageOpts, wikiMap) + models.WriteDataToDb(re, key) + } + re, count = models.QueryDataForUserDefineFromDb(pageOpts, key) mapInterface["data"] = re mapInterface["count"] = count ctx.JSON(http.StatusOK, mapInterface) -- 2.34.1 From e6abe7283b53eb1a13f1a328f9b92b699d8ca2b9 Mon Sep 17 00:00:00 2001 From: zouap Date: Tue, 19 Jul 2022 15:04:15 +0800 Subject: [PATCH 005/102] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- models/user_business_analysis.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models/user_business_analysis.go b/models/user_business_analysis.go index 99a9edfe8e..b514a4f336 100644 --- a/models/user_business_analysis.go +++ b/models/user_business_analysis.go @@ -412,12 +412,12 @@ func QueryUserStaticDataAll(opts *UserBusinessAnalysisQueryOptions) ([]*UserBusi func QueryDataForUserDefineFromDb(opts *UserBusinessAnalysisQueryOptions, key string) ([]*UserBusinessAnalysis, int64) { statictisSess := xStatistic.NewSession() defer statictisSess.Close() - - allCount, err := statictisSess.Where("data_date=" + key).Count(new(UserBusinessAnalysis)) + cond := "data_date='" + key + "'" + allCount, err := statictisSess.Where(cond).Count(new(UserBusinessAnalysis)) if err == nil { if allCount > 0 { userBusinessAnalysisList := make([]*UserBusinessAnalysis, 0) - if err := statictisSess.Table("user_business_analysis").Where("data_date="+key).OrderBy("id desc").Limit(opts.PageSize, (opts.Page-1)*opts.PageSize). + if err := statictisSess.Table("user_business_analysis").Where(cond).OrderBy("id desc").Limit(opts.PageSize, (opts.Page-1)*opts.PageSize). Find(&userBusinessAnalysisList); err != nil { return nil, 0 } -- 2.34.1 From 12e17d237c28404324ecce18bc808103a2228f95 Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Tue, 19 Jul 2022 15:50:24 +0800 Subject: [PATCH 006/102] fix-1956 --- templates/org/create.tmpl | 2 +- templates/repo/create.tmpl | 2 +- templates/repo/migrate.tmpl | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/org/create.tmpl b/templates/org/create.tmpl index 872140efaa..21b6ebdb46 100644 --- a/templates/org/create.tmpl +++ b/templates/org/create.tmpl @@ -48,7 +48,7 @@ - {{.i18n.Tr "cancel"}} + {{.i18n.Tr "cancel"}}
diff --git a/templates/repo/create.tmpl b/templates/repo/create.tmpl index 2fed8c1731..4d51b0120d 100644 --- a/templates/repo/create.tmpl +++ b/templates/repo/create.tmpl @@ -176,7 +176,7 @@ - {{.i18n.Tr "cancel"}} + {{.i18n.Tr "cancel"}}
diff --git a/templates/repo/migrate.tmpl b/templates/repo/migrate.tmpl index 481caaeae4..ef667361ed 100644 --- a/templates/repo/migrate.tmpl +++ b/templates/repo/migrate.tmpl @@ -102,7 +102,7 @@ - {{.i18n.Tr "cancel"}} + {{.i18n.Tr "cancel"}} -- 2.34.1 From 9d42e312d7a87d270cca3799106f42ffd835ecbc Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Tue, 19 Jul 2022 16:05:59 +0800 Subject: [PATCH 007/102] fix-2370 --- routers/repo/cloudbrain.go | 14 ++++++++++++++ routers/routes/routes.go | 1 + 2 files changed, 15 insertions(+) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 7af36641d4..628e1f776d 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -865,6 +865,20 @@ func CloudBrainCommitImageShow(ctx *context.Context) { ctx.HTML(200, tplCloudBrainImageSubmit) } +func GetImage(ctx *context.Context) { + + var ID = ctx.Params(":id") + id, _ := strconv.ParseInt(ID, 10, 64) + + image, err := models.GetImageByID(id) + if err != nil { + log.Error("GetImageByID failed:%v", err.Error()) + ctx.JSON(http.StatusNotFound, nil) + } + ctx.JSON(http.StatusOK, image) + +} + func CloudBrainImageEdit(ctx *context.Context) { ctx.Data["PageIsImageEdit"] = true ctx.Data["PageFrom"] = ctx.Params(":from") diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 35a26f5852..f917aebf12 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -1016,6 +1016,7 @@ func RegisterRoutes(m *macaron.Macaron) { }, context.RepoAssignment(), context.RepoMustNotBeArchived(), reqRepoAdmin) m.Group("/image/:id", func() { + m.Get("", repo.GetImage) m.Get("/:from", cloudbrain.AdminOrImageCreaterRight, repo.CloudBrainImageEdit) m.Post("", cloudbrain.AdminOrImageCreaterRight, bindIgnErr(auth.EditImageCloudBrainForm{}), repo.CloudBrainImageEditPost) m.Delete("", cloudbrain.AdminOrImageCreaterRight, repo.CloudBrainImageDelete) -- 2.34.1 From d0fc337ee7976c13733f3797f9f45959cfeab7d8 Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Wed, 20 Jul 2022 11:06:37 +0800 Subject: [PATCH 008/102] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routers/repo/cloudbrain.go | 70 ++++++++++++++++++++++---------------- routers/repo/grampus.go | 6 ++-- routers/repo/modelarts.go | 20 ++++++----- 3 files changed, 55 insertions(+), 41 deletions(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 48e7ece479..bee70965d3 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -636,6 +636,7 @@ func CloudBrainTrainJobShow(ctx *context.Context) { func cloudBrainShow(ctx *context.Context, tpName base.TplName, jobType models.JobType) { ctx.Data["PageIsCloudBrain"] = true debugListType := ctx.Query("debugListType") + cloudbrain.InitSpecialPool() var task *models.Cloudbrain var err error @@ -647,22 +648,22 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName, jobType models.Jo if err != nil { log.Info("error:" + err.Error()) - ctx.Data["error"] = err.Error() + ctx.NotFound(ctx.Req.URL.RequestURI(), nil) return } result, err := cloudbrain.GetJob(task.JobID) if err != nil { log.Info("error:" + err.Error()) - ctx.Data["error"] = err.Error() + ctx.NotFound(ctx.Req.URL.RequestURI(), nil) return } - + hasSpec := false if task.JobType == string(models.JobTypeTrain) { if cloudbrain.TrainResourceSpecs == nil { json.Unmarshal([]byte(setting.TrainResourceSpecs), &cloudbrain.TrainResourceSpecs) } - hasSpec := false + for _, tmp := range cloudbrain.TrainResourceSpecs.ResourceSpec { if tmp.Id == task.ResourceSpecId { hasSpec = true @@ -670,24 +671,7 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName, jobType models.Jo ctx.Data["CpuNum"] = tmp.CpuNum ctx.Data["MemMiB"] = tmp.MemMiB ctx.Data["ShareMemMiB"] = tmp.ShareMemMiB - } - } - - if !hasSpec && cloudbrain.SpecialPools != nil { - for _, specialPool := range cloudbrain.SpecialPools.Pools { - - if specialPool.ResourceSpec != nil { - - for _, spec := range specialPool.ResourceSpec { - if task.ResourceSpecId == spec.Id { - ctx.Data["GpuNum"] = spec.GpuNum - ctx.Data["CpuNum"] = spec.CpuNum - ctx.Data["MemMiB"] = spec.MemMiB - ctx.Data["ShareMemMiB"] = spec.ShareMemMiB - break - } - } - } + break } } @@ -697,10 +681,12 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName, jobType models.Jo } for _, tmp := range cloudbrain.InferenceResourceSpecs.ResourceSpec { if tmp.Id == task.ResourceSpecId { + hasSpec = true ctx.Data["GpuNum"] = tmp.GpuNum ctx.Data["CpuNum"] = tmp.CpuNum ctx.Data["MemMiB"] = tmp.MemMiB ctx.Data["ShareMemMiB"] = tmp.ShareMemMiB + break } } } else { @@ -709,10 +695,32 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName, jobType models.Jo } for _, tmp := range cloudbrain.ResourceSpecs.ResourceSpec { if tmp.Id == task.ResourceSpecId { + hasSpec = true ctx.Data["GpuNum"] = tmp.GpuNum ctx.Data["CpuNum"] = tmp.CpuNum ctx.Data["MemMiB"] = tmp.MemMiB ctx.Data["ShareMemMiB"] = tmp.ShareMemMiB + break + + } + } + } + + if !hasSpec && cloudbrain.SpecialPools != nil { + + for _, specialPool := range cloudbrain.SpecialPools.Pools { + + if specialPool.ResourceSpec != nil { + + for _, spec := range specialPool.ResourceSpec { + if task.ResourceSpecId == spec.Id { + ctx.Data["GpuNum"] = spec.GpuNum + ctx.Data["CpuNum"] = spec.CpuNum + ctx.Data["MemMiB"] = spec.MemMiB + ctx.Data["ShareMemMiB"] = spec.ShareMemMiB + break + } + } } } } @@ -731,14 +739,6 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName, jobType models.Jo ctx.Data["resource_type"] = resourceType.Value } } - for _, specialPool := range cloudbrain.SpecialPools.Pools { - - for _, resourceType := range specialPool.Pool { - if resourceType.Queue == jobRes.Config.GpuType { - ctx.Data["resource_type"] = resourceType.Value - } - } - } } else if task.JobType == string(models.JobTypeInference) { if inferenceGpuInfos == nil { @@ -770,6 +770,16 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName, jobType models.Jo } } } + + if cloudbrain.SpecialPools != nil { + for _, specialPool := range cloudbrain.SpecialPools.Pools { + for _, resourceType := range specialPool.Pool { + if resourceType.Queue == jobRes.Config.GpuType { + ctx.Data["resource_type"] = resourceType.Value + } + } + } + } taskRoles := jobRes.TaskRoles taskRes, _ := models.ConvertToTaskPod(taskRoles[cloudbrain.SubTaskName].(map[string]interface{})) ctx.Data["taskRes"] = taskRes diff --git a/routers/repo/grampus.go b/routers/repo/grampus.go index 978b7462de..7d6aa1c30c 100755 --- a/routers/repo/grampus.go +++ b/routers/repo/grampus.go @@ -626,7 +626,7 @@ func GrampusTrainJobShow(ctx *context.Context) { task, err := models.GetCloudbrainByJobIDWithDeleted(ctx.Params(":jobid")) if err != nil { log.Error("GetCloudbrainByJobID failed:" + err.Error()) - ctx.ServerError("system error", err) + ctx.NotFound(ctx.Req.URL.RequestURI(), nil) return } @@ -634,8 +634,8 @@ func GrampusTrainJobShow(ctx *context.Context) { result, err := grampus.GetJob(task.JobID) if err != nil { log.Error("GetJob failed:" + err.Error()) - //ctx.ServerError("GetJob failed", err) - //return + ctx.NotFound(ctx.Req.URL.RequestURI(), nil) + return } if result != nil { diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index b5afa47139..ccdc313370 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -257,15 +257,15 @@ func NotebookShow(ctx *context.Context) { var ID = ctx.Params(":id") task, err := models.GetCloudbrainByIDWithDeleted(ID) if err != nil { - ctx.Data["error"] = err.Error() - ctx.RenderWithErr(err.Error(), tplModelArtsNotebookShow, nil) + log.Error("GET job error", err.Error()) + ctx.NotFound(ctx.Req.URL.RequestURI(), nil) return } result, err := modelarts.GetNotebook2(task.JobID) if err != nil { - ctx.Data["error"] = err.Error() - ctx.RenderWithErr(err.Error(), tplModelArtsNotebookShow, nil) + log.Error("GET job error", err.Error()) + ctx.NotFound(ctx.Req.URL.RequestURI(), nil) return } @@ -276,8 +276,8 @@ func NotebookShow(ctx *context.Context) { models.ParseAndSetDurationFromModelArtsNotebook(result, task) err = models.UpdateJob(task) if err != nil { - ctx.Data["error"] = err.Error() - ctx.RenderWithErr(err.Error(), tplModelArtsNotebookShow, nil) + log.Error("GET job error", err.Error()) + ctx.NotFound(ctx.Req.URL.RequestURI(), nil) return } } @@ -1643,7 +1643,11 @@ func TrainJobShow(ctx *context.Context) { if err != nil { log.Error("GetVersionListTasks(%s) failed:%v", jobID, err.Error()) - ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobShow, nil) + ctx.NotFound(ctx.Req.URL.RequestURI(), nil) + return + } + if len(VersionListTasks) == 0 { + ctx.NotFound(ctx.Req.URL.RequestURI(), nil) return } //设置权限 @@ -2297,7 +2301,7 @@ func InferenceJobShow(ctx *context.Context) { if err != nil { log.Error("GetInferenceTask(%s) failed:%v", jobID, err.Error()) - ctx.RenderWithErr(err.Error(), tplModelArtsInferenceJobShow, nil) + ctx.NotFound(ctx.Req.URL.RequestURI(), nil) return } //设置权限 -- 2.34.1 From a143994177224cf461faf8cdf2152cbfd10d4c62 Mon Sep 17 00:00:00 2001 From: chenshihai Date: Wed, 20 Jul 2022 11:09:12 +0800 Subject: [PATCH 009/102] add kanban file --- public/kanban/index.html | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 public/kanban/index.html diff --git a/public/kanban/index.html b/public/kanban/index.html new file mode 100644 index 0000000000..0e44d84a38 --- /dev/null +++ b/public/kanban/index.html @@ -0,0 +1,12 @@ + + + + + + + + + +
kanban
+ + -- 2.34.1 From 1cc7f47767e7611374faa926699719df87a373b4 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Wed, 20 Jul 2022 14:21:56 +0800 Subject: [PATCH 010/102] #2477 add kanban index route --- routers/kanban/kanban.go | 24 ++++++++++++++++++++++++ routers/routes/routes.go | 2 ++ 2 files changed, 26 insertions(+) create mode 100644 routers/kanban/kanban.go diff --git a/routers/kanban/kanban.go b/routers/kanban/kanban.go new file mode 100644 index 0000000000..d6bb743bbd --- /dev/null +++ b/routers/kanban/kanban.go @@ -0,0 +1,24 @@ +package kanban + +import ( + "code.gitea.io/gitea/modules/base" + "code.gitea.io/gitea/modules/context" + "code.gitea.io/gitea/modules/setting" + "net/http" + "os" + "path" + "time" +) + +func Index(ctx *context.Context) { + file := path.Join(setting.StaticRootPath, "public/kanban/index.html") + name := "index.html" + f, err := os.Open(file) + if err != nil { + ctx.HTML(http.StatusNotFound, base.TplName("status/404")) + return + } + defer f.Close() + ctx.Resp.Header().Set("Content-Type", "text/html") + http.ServeContent(ctx.Resp, ctx.Req.Request, name, time.Now(), f) +} diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 35a26f5852..bdad935727 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -6,6 +6,7 @@ package routes import ( "bytes" + "code.gitea.io/gitea/routers/kanban" "encoding/gob" "net/http" "path" @@ -327,6 +328,7 @@ func RegisterRoutes(m *macaron.Macaron) { }) m.Get("/", routers.Home) m.Get("/dashboard", routers.Dashboard) + m.Get("/kanban/index", kanban.Index) go routers.SocketManager.Run() m.Get("/action/notification", routers.ActionNotification) m.Get("/recommend/home", routers.RecommendHomeInfo) -- 2.34.1 From 3bbe2b5de6b21baf00e7fa8dc03c04d738fb438f Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Wed, 20 Jul 2022 14:29:13 +0800 Subject: [PATCH 011/102] #2477 update kanban index route --- routers/routes/routes.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/routes/routes.go b/routers/routes/routes.go index bdad935727..e4481d3c19 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -328,7 +328,7 @@ func RegisterRoutes(m *macaron.Macaron) { }) m.Get("/", routers.Home) m.Get("/dashboard", routers.Dashboard) - m.Get("/kanban/index", kanban.Index) + m.Get("/panel", kanban.Index) go routers.SocketManager.Run() m.Get("/action/notification", routers.ActionNotification) m.Get("/recommend/home", routers.RecommendHomeInfo) -- 2.34.1 From 7c6824c3a2f51c8ebe2147dbd263b1ee6366e8dc Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Wed, 20 Jul 2022 16:06:51 +0800 Subject: [PATCH 012/102] fix issue --- templates/admin/dataset/list.tmpl | 4 +- templates/explore/dataset_list.tmpl | 13 +++-- templates/repo/cloudbrain/benchmark/show.tmpl | 10 +++- templates/repo/cloudbrain/inference/show.tmpl | 10 +++- templates/repo/cloudbrain/show.tmpl | 10 +++- templates/repo/cloudbrain/trainjob/show.tmpl | 10 +++- templates/repo/debugjob/index.tmpl | 4 +- templates/repo/modelarts/notebook/show.tmpl | 10 +++- templates/repo/modelarts/trainjob/show.tmpl | 2 +- templates/user/dashboard/cloudbrains.tmpl | 2 +- web_src/js/features/clipboard.js | 38 ++++++++++----- web_src/less/_dataset.less | 48 +++++++++++-------- web_src/less/openi.less | 1 + 13 files changed, 113 insertions(+), 49 deletions(-) diff --git a/templates/admin/dataset/list.tmpl b/templates/admin/dataset/list.tmpl index 9e4e72b683..9712f2e7b5 100644 --- a/templates/admin/dataset/list.tmpl +++ b/templates/admin/dataset/list.tmpl @@ -35,7 +35,7 @@ {{range .Datasets}} {{.ID}} - {{.Title}}{{if .Recommend}}{{end}} + {{.Title}}{{if .Recommend}}{{end}} {{.CreatedUnix.FormatShort}} {{if .Recommend}}{{$.i18n.Tr "admin.datasets.unrecommend"}}{{else}}{{$.i18n.Tr "admin.datasets.recommend"}}{{end}} @@ -48,4 +48,4 @@ {{template "base/paginate" .}} -{{template "base/footer" .}} +{{template "base/footer" .}} \ No newline at end of file diff --git a/templates/explore/dataset_list.tmpl b/templates/explore/dataset_list.tmpl index 1d22b62ec1..a0f1711950 100755 --- a/templates/explore/dataset_list.tmpl +++ b/templates/explore/dataset_list.tmpl @@ -24,9 +24,9 @@
{{range .Datasets}}
-
- - {{.Repo.OwnerName}} / {{.Repo.Alias}} +
+ + {{.Title}}
{{if .Task}} @@ -40,7 +40,7 @@
{{if .Description}} -

{{.Description}}

+

{{.Description}}

{{else if .Repo.DescriptionHTML}}

{{.Repo.DescriptionHTML}}

{{end}} @@ -53,4 +53,7 @@
{{end}}
-
\ No newline at end of file +
+ \ No newline at end of file diff --git a/templates/repo/cloudbrain/benchmark/show.tmpl b/templates/repo/cloudbrain/benchmark/show.tmpl index ff4e5e7ea2..4a73d1973b 100755 --- a/templates/repo/cloudbrain/benchmark/show.tmpl +++ b/templates/repo/cloudbrain/benchmark/show.tmpl @@ -353,7 +353,15 @@
- {{.Image}} + + {{.Image}} +
diff --git a/templates/repo/cloudbrain/inference/show.tmpl b/templates/repo/cloudbrain/inference/show.tmpl index 00ad256443..ac11b16a99 100644 --- a/templates/repo/cloudbrain/inference/show.tmpl +++ b/templates/repo/cloudbrain/inference/show.tmpl @@ -381,7 +381,15 @@
- {{.Image}} + + {{.Image}} +
diff --git a/templates/repo/cloudbrain/show.tmpl b/templates/repo/cloudbrain/show.tmpl index e4769c65c4..b43e6e0f50 100755 --- a/templates/repo/cloudbrain/show.tmpl +++ b/templates/repo/cloudbrain/show.tmpl @@ -390,7 +390,15 @@
- {{.Image}} + + {{.Image}} +
diff --git a/templates/repo/cloudbrain/trainjob/show.tmpl b/templates/repo/cloudbrain/trainjob/show.tmpl index 20e5cb55d9..9a01ea6c8a 100644 --- a/templates/repo/cloudbrain/trainjob/show.tmpl +++ b/templates/repo/cloudbrain/trainjob/show.tmpl @@ -384,7 +384,15 @@
- {{.Image}} + + {{.Image}} +
diff --git a/templates/repo/debugjob/index.tmpl b/templates/repo/debugjob/index.tmpl index 043816e9fc..bb1d1992a9 100755 --- a/templates/repo/debugjob/index.tmpl +++ b/templates/repo/debugjob/index.tmpl @@ -386,7 +386,7 @@ {{$.CsrfTokenHtml}} {{if .CanDel}} {{$.i18n.Tr "repo.stop"}} @@ -405,7 +405,7 @@ {{$.CsrfTokenHtml}} {{if .CanDel}} {{$.i18n.Tr "repo.delete"}} diff --git a/templates/repo/modelarts/notebook/show.tmpl b/templates/repo/modelarts/notebook/show.tmpl index 7d49ace865..cb0be133f6 100755 --- a/templates/repo/modelarts/notebook/show.tmpl +++ b/templates/repo/modelarts/notebook/show.tmpl @@ -357,7 +357,15 @@
- {{.Image}} + + {{.Image}} +
diff --git a/templates/repo/modelarts/trainjob/show.tmpl b/templates/repo/modelarts/trainjob/show.tmpl index 7a727cf4c7..e61fafcdda 100755 --- a/templates/repo/modelarts/trainjob/show.tmpl +++ b/templates/repo/modelarts/trainjob/show.tmpl @@ -270,7 +270,7 @@ {{end}} {{if .CanDel}} -
-{{template "base/footer" .}} \ No newline at end of file +{{template "base/footer" .}} diff --git a/web_src/js/features/clipboard.js b/web_src/js/features/clipboard.js index bd4a664c7a..34513ad27e 100644 --- a/web_src/js/features/clipboard.js +++ b/web_src/js/features/clipboard.js @@ -1,23 +1,37 @@ export default async function initClipboard() { - const els = document.querySelectorAll('.clipboard'); + const els = document.querySelectorAll(".clipboard"); if (!els || !els.length) return; - const { default: ClipboardJS } = await import(/* webpackChunkName: "clipboard" */'clipboard'); + const { default: ClipboardJS } = await import( + /* webpackChunkName: "clipboard" */ "clipboard" + ); const clipboard = new ClipboardJS(els); - clipboard.on('success', (e) => { + clipboard.on("success", (e) => { e.clearSelection(); - $(`#${e.trigger.getAttribute('id')}`).popup('destroy'); - e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-success')); - $(`#${e.trigger.getAttribute('id')}`).popup('show'); - e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')); + $(`#${e.trigger.getAttribute("id")}`).popup("destroy"); + e.trigger.setAttribute( + "data-content", + e.trigger.getAttribute("data-success") + ); + $(`#${e.trigger.getAttribute("id")}`).popup("show"); + e.trigger.setAttribute( + "data-content", + e.trigger.getAttribute("data-original") + ); }); - clipboard.on('error', (e) => { - $(`#${e.trigger.getAttribute('id')}`).popup('destroy'); - e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-error')); - $(`#${e.trigger.getAttribute('id')}`).popup('show'); - e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')); + clipboard.on("error", (e) => { + $(`#${e.trigger.getAttribute("id")}`).popup("destroy"); + e.trigger.setAttribute( + "data-content", + e.trigger.getAttribute("data-error") + ); + $(`#${e.trigger.getAttribute("id")}`).popup("show"); + e.trigger.setAttribute( + "data-content", + e.trigger.getAttribute("data-original") + ); }); } diff --git a/web_src/less/_dataset.less b/web_src/less/_dataset.less index 35a87f89fa..fff632d23d 100644 --- a/web_src/less/_dataset.less +++ b/web_src/less/_dataset.less @@ -140,27 +140,26 @@ border: 1px solid #ffffff; } } - } + } } .item { - border-bottom: 1px solid rgba(34,36,38,.15); + border-bottom: 1px solid rgba(34, 36, 38, 0.15); .ui.buttons { .button { box-shadow: none !important; } } - } - + .ui.grid > .row { align-items: center; } - + .title { font-size: 16px; font-weight: bold; - margin: 0 6px; + margin: 0 6px; overflow: hidden; padding-right: 15px; white-space: nowrap; @@ -195,7 +194,15 @@ .name { word-break: break-all; } - + .dataset-title-a { + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + min-width: 0; + word-break: inherit !important; + margin-right: 3rem; + white-space: nowrap; + } .metas { color: #888888; font-size: 14px; @@ -222,7 +229,7 @@ } } } -.panel_creator_reponam{ +.panel_creator_reponam { display: inline-block; border-radius: 4px; padding: 4px; @@ -231,29 +238,28 @@ background-color: rgba(161, 220, 255, 0.2); color: #101010; } -.panel_dataset_name{ +.panel_dataset_name { font-size: 15px; - color: #0366D6; + color: #0366d6; text-align: center; margin-left: 1rem; } -.panel_datset_desc{ +.panel_datset_desc { white-space: nowrap; display: inline-block; overflow: hidden; width: 90%; - + text-overflow: ellipsis; } -.el-dialog__body{ - padding-top:0 +.el-dialog__body { + padding-top: 0; } -#dataset-base{ - .active{ - color: #0087f5!important; - border: 1px solid #0087f5!important; +#dataset-base { + .active { + color: #0087f5 !important; + border: 1px solid #0087f5 !important; /* margin: -1px!important; */ - background: #fff!important; - + background: #fff !important; } -} \ No newline at end of file +} diff --git a/web_src/less/openi.less b/web_src/less/openi.less index 0c30d1c924..b9622924fe 100644 --- a/web_src/less/openi.less +++ b/web_src/less/openi.less @@ -311,6 +311,7 @@ footer .column { } .FAILED, .START_FAILED, +.DELETED, .CREATE_FAILED { display: inline-block; width: 18px; -- 2.34.1 From e5f416463160b09d7049fb1a8681a785f53a9fe1 Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 20 Jul 2022 16:39:57 +0800 Subject: [PATCH 013/102] fix-1968 --- routers/repo/cloudbrain.go | 269 ++++++++++++++++++++++++++++++++++--- routers/repo/grampus.go | 150 ++++++++++++++++----- 2 files changed, 369 insertions(+), 50 deletions(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 0d20f83f0c..18ad02e88d 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -218,6 +218,243 @@ func cloudBrainNewDataPrepare(ctx *context.Context) error { return nil } +func cloudBrainTrainJobErrorPrepare(ctx *context.Context, form auth.CreateCloudBrainForm) error { + ctx.Data["PageIsCloudBrain"] = true + + if categories == nil { + json.Unmarshal([]byte(setting.BenchmarkCategory), &categories) + } + ctx.Data["benchmark_categories"] = categories.Category + + ctx.Data["benchmark_types"] = GetBenchmarkTypes(ctx).BenchmarkType + queuesDetail, _ := cloudbrain.GetQueuesDetail() + if queuesDetail != nil { + ctx.Data["QueuesDetail"] = queuesDetail + } + + cloudbrain.InitSpecialPool() + + if gpuInfos == nil { + json.Unmarshal([]byte(setting.GpuTypes), &gpuInfos) + } + ctx.Data["gpu_types"] = gpuInfos.GpuInfo + + if trainGpuInfos == nil { + json.Unmarshal([]byte(setting.TrainGpuTypes), &trainGpuInfos) + } + ctx.Data["train_gpu_types"] = trainGpuInfos.GpuInfo + + if inferenceGpuInfos == nil && setting.InferenceGpuTypes != "" { + json.Unmarshal([]byte(setting.InferenceGpuTypes), &inferenceGpuInfos) + } + if inferenceGpuInfos != nil { + ctx.Data["inference_gpu_types"] = inferenceGpuInfos.GpuInfo + } + + if benchmarkGpuInfos == nil { + json.Unmarshal([]byte(setting.BenchmarkGpuTypes), &benchmarkGpuInfos) + } + ctx.Data["benchmark_gpu_types"] = benchmarkGpuInfos.GpuInfo + + if benchmarkResourceSpecs == nil { + json.Unmarshal([]byte(setting.BenchmarkResourceSpecs), &benchmarkResourceSpecs) + } + ctx.Data["benchmark_resource_specs"] = benchmarkResourceSpecs.ResourceSpec + + if cloudbrain.ResourceSpecs == nil { + json.Unmarshal([]byte(setting.ResourceSpecs), &cloudbrain.ResourceSpecs) + } + ctx.Data["resource_specs"] = cloudbrain.ResourceSpecs.ResourceSpec + + if cloudbrain.TrainResourceSpecs == nil { + json.Unmarshal([]byte(setting.TrainResourceSpecs), &cloudbrain.TrainResourceSpecs) + } + ctx.Data["train_resource_specs"] = cloudbrain.TrainResourceSpecs.ResourceSpec + + if cloudbrain.InferenceResourceSpecs == nil && setting.InferenceResourceSpecs != "" { + json.Unmarshal([]byte(setting.InferenceResourceSpecs), &cloudbrain.InferenceResourceSpecs) + } + if cloudbrain.InferenceResourceSpecs != nil { + ctx.Data["inference_resource_specs"] = cloudbrain.InferenceResourceSpecs.ResourceSpec + } + + if cloudbrain.SpecialPools != nil { + var debugGpuTypes []*models.GpuInfo + var trainGpuTypes []*models.GpuInfo + + for _, pool := range cloudbrain.SpecialPools.Pools { + org, _ := models.GetOrgByName(pool.Org) + if org != nil { + isOrgMember, _ := models.IsOrganizationMember(org.ID, ctx.User.ID) + if isOrgMember { + for _, jobType := range pool.JobType { + if jobType == string(models.JobTypeDebug) { + debugGpuTypes = append(debugGpuTypes, pool.Pool...) + if pool.ResourceSpec != nil { + ctx.Data["resource_specs"] = pool.ResourceSpec + } + } else if jobType == string(models.JobTypeTrain) { + trainGpuTypes = append(trainGpuTypes, pool.Pool...) + if pool.ResourceSpec != nil { + ctx.Data["train_resource_specs"] = pool.ResourceSpec + } + } + } + break + } + } + + } + + if len(debugGpuTypes) > 0 { + ctx.Data["gpu_types"] = debugGpuTypes + } + + if len(trainGpuTypes) > 0 { + ctx.Data["train_gpu_types"] = trainGpuTypes + } + + } + + var Parameters modelarts.Parameters + if err := json.Unmarshal([]byte(form.Params), &Parameters); err != nil { + ctx.ServerError("json.Unmarshal failed:", err) + return err + } + ctx.Data["run_para_list"] = Parameters.Parameter + ctx.Data["boot_file"] = form.BootFile + ctx.Data["attachment"] = form.Attachment + ctx.Data["branch_name"] = form.BranchName + ctx.Data["datasetType"] = models.TypeCloudBrainOne + + ctx.Data["display_job_name"] = form.DisplayJobName + ctx.Data["image"] = form.Image + ctx.Data["job_type"] = form.JobType + ctx.Data["gpu_type"] = form.GpuType + ctx.Data["resource_spec_id"] = form.ResourceSpecId + return nil +} + +func cloudBrainInferenceJobErrorPrepare(ctx *context.Context, form auth.CreateCloudBrainInferencForm) error { + ctx.Data["PageIsCloudBrain"] = true + + if categories == nil { + json.Unmarshal([]byte(setting.BenchmarkCategory), &categories) + } + ctx.Data["benchmark_categories"] = categories.Category + + ctx.Data["benchmark_types"] = GetBenchmarkTypes(ctx).BenchmarkType + queuesDetail, _ := cloudbrain.GetQueuesDetail() + if queuesDetail != nil { + ctx.Data["QueuesDetail"] = queuesDetail + } + + cloudbrain.InitSpecialPool() + + if gpuInfos == nil { + json.Unmarshal([]byte(setting.GpuTypes), &gpuInfos) + } + ctx.Data["gpu_types"] = gpuInfos.GpuInfo + + if trainGpuInfos == nil { + json.Unmarshal([]byte(setting.TrainGpuTypes), &trainGpuInfos) + } + ctx.Data["train_gpu_types"] = trainGpuInfos.GpuInfo + + if inferenceGpuInfos == nil && setting.InferenceGpuTypes != "" { + json.Unmarshal([]byte(setting.InferenceGpuTypes), &inferenceGpuInfos) + } + if inferenceGpuInfos != nil { + ctx.Data["inference_gpu_types"] = inferenceGpuInfos.GpuInfo + } + + if benchmarkGpuInfos == nil { + json.Unmarshal([]byte(setting.BenchmarkGpuTypes), &benchmarkGpuInfos) + } + ctx.Data["benchmark_gpu_types"] = benchmarkGpuInfos.GpuInfo + + if benchmarkResourceSpecs == nil { + json.Unmarshal([]byte(setting.BenchmarkResourceSpecs), &benchmarkResourceSpecs) + } + ctx.Data["benchmark_resource_specs"] = benchmarkResourceSpecs.ResourceSpec + + if cloudbrain.ResourceSpecs == nil { + json.Unmarshal([]byte(setting.ResourceSpecs), &cloudbrain.ResourceSpecs) + } + ctx.Data["resource_specs"] = cloudbrain.ResourceSpecs.ResourceSpec + + if cloudbrain.TrainResourceSpecs == nil { + json.Unmarshal([]byte(setting.TrainResourceSpecs), &cloudbrain.TrainResourceSpecs) + } + ctx.Data["train_resource_specs"] = cloudbrain.TrainResourceSpecs.ResourceSpec + + if cloudbrain.InferenceResourceSpecs == nil && setting.InferenceResourceSpecs != "" { + json.Unmarshal([]byte(setting.InferenceResourceSpecs), &cloudbrain.InferenceResourceSpecs) + } + if cloudbrain.InferenceResourceSpecs != nil { + ctx.Data["inference_resource_specs"] = cloudbrain.InferenceResourceSpecs.ResourceSpec + } + + if cloudbrain.SpecialPools != nil { + var debugGpuTypes []*models.GpuInfo + var trainGpuTypes []*models.GpuInfo + + for _, pool := range cloudbrain.SpecialPools.Pools { + org, _ := models.GetOrgByName(pool.Org) + if org != nil { + isOrgMember, _ := models.IsOrganizationMember(org.ID, ctx.User.ID) + if isOrgMember { + for _, jobType := range pool.JobType { + if jobType == string(models.JobTypeDebug) { + debugGpuTypes = append(debugGpuTypes, pool.Pool...) + if pool.ResourceSpec != nil { + ctx.Data["resource_specs"] = pool.ResourceSpec + } + } else if jobType == string(models.JobTypeTrain) { + trainGpuTypes = append(trainGpuTypes, pool.Pool...) + if pool.ResourceSpec != nil { + ctx.Data["train_resource_specs"] = pool.ResourceSpec + } + } + } + break + } + } + + } + if len(debugGpuTypes) > 0 { + ctx.Data["gpu_types"] = debugGpuTypes + } + + if len(trainGpuTypes) > 0 { + ctx.Data["train_gpu_types"] = trainGpuTypes + } + + } + var Parameters modelarts.Parameters + if err := json.Unmarshal([]byte(form.Params), &Parameters); err != nil { + ctx.ServerError("json.Unmarshal failed:", err) + return err + } + ctx.Data["run_para_list"] = Parameters.Parameter + ctx.Data["boot_file"] = form.BootFile + ctx.Data["attachment"] = form.Attachment + ctx.Data["branch_name"] = form.BranchName + ctx.Data["datasetType"] = models.TypeCloudBrainOne + + ctx.Data["display_job_name"] = form.DisplayJobName + ctx.Data["image"] = form.Image + ctx.Data["job_type"] = form.JobType + ctx.Data["gpu_type"] = form.GpuType + ctx.Data["resource_spec_id"] = form.ResourceSpecId + ctx.Data["label_names"] = form.LabelName + ctx.Data["train_url"] = form.TrainUrl + ctx.Data["ckpt_name"] = form.CkptName + ctx.Data["model_name"] = form.ModelName + ctx.Data["model_version"] = form.ModelVersion + ctx.Data["description"] = form.Description + return nil +} func CloudBrainNew(ctx *context.Context) { err := cloudBrainNewDataPrepare(ctx) @@ -250,28 +487,28 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { if err == nil { if len(tasks) != 0 { log.Error("the job name did already exist", ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) + cloudBrainTrainJobErrorPrepare(ctx, form) ctx.RenderWithErr("the job name did already exist", tpl, &form) return } } else { if !models.IsErrJobNotExist(err) { log.Error("system error, %v", err, ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) + cloudBrainTrainJobErrorPrepare(ctx, form) ctx.RenderWithErr("system error", tpl, &form) return } } if !jobNamePattern.MatchString(displayJobName) { - cloudBrainNewDataPrepare(ctx) + cloudBrainTrainJobErrorPrepare(ctx, form) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tpl, &form) return } if jobType != string(models.JobTypeBenchmark) && jobType != string(models.JobTypeDebug) && jobType != string(models.JobTypeTrain) { log.Error("jobtype error:", jobType, ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) + cloudBrainTrainJobErrorPrepare(ctx, form) ctx.RenderWithErr("jobtype error", tpl, &form) return } @@ -279,13 +516,13 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { count, err := models.GetCloudbrainCountByUserID(ctx.User.ID, jobType) if err != nil { log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) + cloudBrainTrainJobErrorPrepare(ctx, form) ctx.RenderWithErr("system error", tpl, &form) return } else { if count >= 1 { log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) + cloudBrainTrainJobErrorPrepare(ctx, form) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain.morethanonejob"), tpl, &form) return } @@ -294,7 +531,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { datasetInfos, datasetNames, err := models.GetDatasetInfo(uuids) if err != nil { log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) + cloudBrainTrainJobErrorPrepare(ctx, form) ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) return } @@ -315,7 +552,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { errStr := checkCloudBrainSpecialPool(ctx, jobType, gpuQueue, resourceSpecId) if errStr != "" { - cloudBrainNewDataPrepare(ctx) + cloudBrainTrainJobErrorPrepare(ctx, form) ctx.RenderWithErr(errStr, tpl, &form) return } @@ -361,7 +598,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { err = cloudbrain.GenerateTask(req) if err != nil { - cloudBrainNewDataPrepare(ctx) + cloudBrainTrainJobErrorPrepare(ctx, form) ctx.RenderWithErr(err.Error(), tpl, &form) return } @@ -373,7 +610,6 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { } } - func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBrainInferencForm) { ctx.Data["PageIsCloudBrain"] = true displayJobName := form.DisplayJobName @@ -402,14 +638,14 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra if err == nil { if len(tasks) != 0 { log.Error("the job name did already exist", ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) + cloudBrainInferenceJobErrorPrepare(ctx, form) ctx.RenderWithErr("the job name did already exist", tpl, &form) return } } else { if !models.IsErrJobNotExist(err) { log.Error("system error, %v", err, ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) + cloudBrainInferenceJobErrorPrepare(ctx, form) ctx.RenderWithErr("system error", tpl, &form) return } @@ -423,13 +659,13 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra count, err := models.GetCloudbrainCountByUserID(ctx.User.ID, jobType) if err != nil { log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) + cloudBrainInferenceJobErrorPrepare(ctx, form) ctx.RenderWithErr("system error", tpl, &form) return } else { if count >= 1 { log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) + cloudBrainInferenceJobErrorPrepare(ctx, form) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain.morethanonejob"), tpl, &form) return } @@ -449,7 +685,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra datasetInfos, datasetNames, err := models.GetDatasetInfo(uuid) if err != nil { log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) - cloudBrainNewDataPrepare(ctx) + cloudBrainInferenceJobErrorPrepare(ctx, form) ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) return } @@ -486,7 +722,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra err = cloudbrain.GenerateTask(req) if err != nil { - cloudBrainNewDataPrepare(ctx) + cloudBrainInferenceJobErrorPrepare(ctx, form) ctx.RenderWithErr(err.Error(), tpl, &form) return } @@ -494,6 +730,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/modelarts/inference-job") } + /** 检查用户传输的参数是否符合专属资源池 */ diff --git a/routers/repo/grampus.go b/routers/repo/grampus.go index 978b7462de..fa6e718142 100755 --- a/routers/repo/grampus.go +++ b/routers/repo/grampus.go @@ -1,15 +1,8 @@ package repo import ( - "code.gitea.io/gitea/modules/auth" - "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/grampus" - "code.gitea.io/gitea/modules/modelarts" - "code.gitea.io/gitea/modules/timeutil" - "code.gitea.io/gitea/modules/util" "encoding/json" "errors" - "github.com/unknwon/com" "io/ioutil" "net/http" "os" @@ -18,6 +11,14 @@ import ( "strings" "time" + "code.gitea.io/gitea/modules/auth" + "code.gitea.io/gitea/modules/git" + "code.gitea.io/gitea/modules/grampus" + "code.gitea.io/gitea/modules/modelarts" + "code.gitea.io/gitea/modules/timeutil" + "code.gitea.io/gitea/modules/util" + "github.com/unknwon/com" + "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/cloudbrain" @@ -136,6 +137,87 @@ func grampusTrainJobNewDataPrepare(ctx *context.Context, processType string) err return nil } +func grampusTrainJobErrorPrepare(ctx *context.Context, processType string, form auth.CreateGrampusTrainJobForm) error { + ctx.Data["PageIsCloudBrain"] = true + + //get valid images + images, err := grampus.GetImages(processType) + if err != nil { + log.Error("GetImages failed:", err.Error()) + } else { + ctx.Data["images"] = images.Infos + } + + grampus.InitSpecialPool() + + ctx.Data["GPUEnabled"] = true + ctx.Data["NPUEnabled"] = true + includeCenters := make(map[string]struct{}) + excludeCenters := make(map[string]struct{}) + if grampus.SpecialPools != nil { + for _, pool := range grampus.SpecialPools.Pools { + if pool.IsExclusive { + if !IsUserInOrgPool(ctx.User.ID, pool) { + ctx.Data[pool.Type+"Enabled"] = false + } + } else { + if strings.Contains(strings.ToLower(processType), strings.ToLower(pool.Type)) { + if IsUserInOrgPool(ctx.User.ID, pool) { + for _, center := range pool.Pool { + includeCenters[center.Queue] = struct{}{} + } + } else { + for _, center := range pool.Pool { + excludeCenters[center.Queue] = struct{}{} + } + + } + + } + + } + } + } + + //get valid resource specs + specs, err := grampus.GetResourceSpecs(processType) + + grampusSpecs := getFilterSpecBySpecialPool(specs, includeCenters, excludeCenters) + + if err != nil { + log.Error("GetResourceSpecs failed:", err.Error()) + } else { + ctx.Data["flavor_infos"] = grampusSpecs + } + + if processType == grampus.ProcessorTypeGPU { + ctx.Data["datasetType"] = models.TypeCloudBrainOne + } else if processType == grampus.ProcessorTypeNPU { + ctx.Data["datasetType"] = models.TypeCloudBrainTwo + } + + var Parameters modelarts.Parameters + if err := json.Unmarshal([]byte(form.Params), &Parameters); err != nil { + ctx.ServerError("json.Unmarshal failed:", err) + return err + } + ctx.Data["run_para_list"] = Parameters.Parameter + ctx.Data["boot_file"] = form.BootFile + ctx.Data["attachment"] = form.Attachment + ctx.Data["branch_name"] = form.BranchName + ctx.Data["image_id"] = form.ImageID + + ctx.Data["display_job_name"] = form.DisplayJobName + ctx.Data["image"] = form.Image + ctx.Data["flavor"] = form.FlavorID + ctx.Data["flavor_name"] = form.FlavorName + ctx.Data["description"] = form.Description + ctx.Data["engine_name"] = form.EngineName + ctx.Data["work_server_number"] = form.WorkServerNumber + + return nil +} + func getFilterSpecBySpecialPool(specs *models.GetGrampusResourceSpecsResult, includeCenters map[string]struct{}, excludeCenters map[string]struct{}) []models.GrampusSpec { if len(includeCenters) == 0 && len(excludeCenters) == 0 { return specs.Infos @@ -206,14 +288,14 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain image := strings.TrimSpace(form.Image) if !jobNamePattern.MatchString(displayJobName) { - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tplGrampusTrainJobGPUNew, &form) return } errStr := checkSpecialPool(ctx, "GPU") if errStr != "" { - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) ctx.RenderWithErr(errStr, tplGrampusTrainJobGPUNew, &form) return } @@ -222,13 +304,13 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain count, err := models.GetGrampusCountByUserID(ctx.User.ID, string(models.JobTypeTrain), models.GPUResource) if err != nil { log.Error("GetGrampusCountByUserID failed:%v", err, ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) ctx.RenderWithErr("system error", tplGrampusTrainJobGPUNew, &form) return } else { if count >= 1 { log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) ctx.RenderWithErr("you have already a running or waiting task, can not create more", tplGrampusTrainJobGPUNew, &form) return } @@ -237,7 +319,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain //check param if err := grampusParamCheckCreateTrainJob(form); err != nil { log.Error("paramCheckCreateTrainJob failed:(%v)", err, ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) ctx.RenderWithErr(err.Error(), tplGrampusTrainJobGPUNew, &form) return } @@ -247,14 +329,14 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain if err == nil { if len(tasks) != 0 { log.Error("the job name did already exist", ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) ctx.RenderWithErr("the job name did already exist", tplGrampusTrainJobGPUNew, &form) return } } else { if !models.IsErrJobNotExist(err) { log.Error("system error, %v", err, ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) ctx.RenderWithErr("system error", tplGrampusTrainJobGPUNew, &form) return } @@ -264,7 +346,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain attachment, err := models.GetAttachmentByUUID(uuid) if err != nil { log.Error("GetAttachmentByUUID failed:", err.Error(), ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) ctx.RenderWithErr("dataset is not exist", tplGrampusTrainJobGPUNew, &form) return } @@ -277,7 +359,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain if err := downloadZipCode(ctx, codeLocalPath, branchName); err != nil { log.Error("downloadZipCode failed, server timed out: %s (%v)", repo.FullName(), err, ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) ctx.RenderWithErr("Create task failed, internal error", tplGrampusTrainJobGPUNew, &form) return } @@ -286,7 +368,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain //upload code if err := uploadCodeToMinio(codeLocalPath+"/", jobName, cloudbrain.CodeMountPath+"/"); err != nil { log.Error("Failed to uploadCodeToMinio: %s (%v)", repo.FullName(), err, ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) ctx.RenderWithErr("Create task failed, internal error", tplGrampusTrainJobGPUNew, &form) return } @@ -294,7 +376,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain modelPath := setting.JobPath + jobName + cloudbrain.ModelMountPath + "/" if err := mkModelPath(modelPath); err != nil { log.Error("Failed to mkModelPath: %s (%v)", repo.FullName(), err, ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) ctx.RenderWithErr("Create task failed, internal error", tplGrampusTrainJobGPUNew, &form) return } @@ -302,7 +384,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain //init model readme if err := uploadCodeToMinio(modelPath, jobName, cloudbrain.ModelMountPath+"/"); err != nil { log.Error("Failed to uploadCodeToMinio: %s (%v)", repo.FullName(), err, ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) ctx.RenderWithErr("Create task failed, internal error", tplGrampusTrainJobGPUNew, &form) return } @@ -311,7 +393,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain command, err := generateCommand(repo.Name, grampus.ProcessorTypeGPU, codeMinioPath+cloudbrain.DefaultBranchName+".zip", dataMinioPath, bootFile, params, setting.CBCodePathPrefix+jobName+cloudbrain.ModelMountPath+"/", attachment.Name) if err != nil { log.Error("Failed to generateCommand: %s (%v)", displayJobName, err, ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) ctx.RenderWithErr("Create task failed, internal error", tplGrampusTrainJobGPUNew, &form) return } @@ -343,7 +425,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain err = grampus.GenerateTrainJob(ctx, req) if err != nil { log.Error("GenerateTrainJob failed:%v", err.Error(), ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) ctx.RenderWithErr(err.Error(), tplGrampusTrainJobGPUNew, &form) return } @@ -390,14 +472,14 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain engineName := form.EngineName if !jobNamePattern.MatchString(displayJobName) { - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tplGrampusTrainJobNPUNew, &form) return } errStr := checkSpecialPool(ctx, "NPU") if errStr != "" { - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) ctx.RenderWithErr(errStr, tplGrampusTrainJobGPUNew, &form) return } @@ -406,13 +488,13 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain count, err := models.GetGrampusCountByUserID(ctx.User.ID, string(models.JobTypeTrain), models.NPUResource) if err != nil { log.Error("GetGrampusCountByUserID failed:%v", err, ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) ctx.RenderWithErr("system error", tplGrampusTrainJobNPUNew, &form) return } else { if count >= 1 { log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) ctx.RenderWithErr("you have already a running or waiting task, can not create more", tplGrampusTrainJobNPUNew, &form) return } @@ -421,7 +503,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain //check param if err := grampusParamCheckCreateTrainJob(form); err != nil { log.Error("paramCheckCreateTrainJob failed:(%v)", err) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) ctx.RenderWithErr(err.Error(), tplGrampusTrainJobNPUNew, &form) return } @@ -431,14 +513,14 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain if err == nil { if len(tasks) != 0 { log.Error("the job name did already exist", ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) ctx.RenderWithErr("the job name did already exist", tplGrampusTrainJobNPUNew, &form) return } } else { if !models.IsErrJobNotExist(err) { log.Error("system error, %v", err, ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) ctx.RenderWithErr("system error", tplGrampusTrainJobNPUNew, &form) return } @@ -448,7 +530,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain attachment, err := models.GetAttachmentByUUID(uuid) if err != nil { log.Error("GetAttachmentByUUID failed:", err.Error(), ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) ctx.RenderWithErr("dataset is not exist", tplGrampusTrainJobNPUNew, &form) return } @@ -461,7 +543,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain if err := downloadZipCode(ctx, codeLocalPath, branchName); err != nil { log.Error("downloadZipCode failed, server timed out: %s (%v)", repo.FullName(), err) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) ctx.RenderWithErr("Create task failed, server timed out", tplGrampusTrainJobNPUNew, &form) return } @@ -469,14 +551,14 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain //todo: upload code (send to file_server todo this work?) if err := obsMkdir(setting.CodePathPrefix + jobName + modelarts.OutputPath); err != nil { log.Error("Failed to obsMkdir_output: %s (%v)", repo.FullName(), err) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) ctx.RenderWithErr("Failed to obsMkdir_output", tplGrampusTrainJobNPUNew, &form) return } if err := uploadCodeToObs(codeLocalPath, jobName, ""); err != nil { log.Error("Failed to uploadCodeToObs: %s (%v)", repo.FullName(), err) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) ctx.RenderWithErr("Failed to uploadCodeToObs", tplGrampusTrainJobNPUNew, &form) return } @@ -485,7 +567,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain command, err := generateCommand(repo.Name, grampus.ProcessorTypeNPU, codeObsPath+cloudbrain.DefaultBranchName+".zip", dataObsPath+"'"+attachment.Name+"'", bootFile, params, setting.CodePathPrefix+jobName+modelarts.OutputPath, attachment.Name) if err != nil { log.Error("Failed to generateCommand: %s (%v)", displayJobName, err, ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) ctx.RenderWithErr("Create task failed, internal error", tplGrampusTrainJobNPUNew, &form) return } @@ -521,7 +603,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain err = grampus.GenerateTrainJob(ctx, req) if err != nil { log.Error("GenerateTrainJob failed:%v", err.Error()) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) + grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) ctx.RenderWithErr(err.Error(), tplGrampusTrainJobNPUNew, &form) return } -- 2.34.1 From 366ffed3e1b709595ef458ac44f842d6e692a52c Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 20 Jul 2022 17:31:13 +0800 Subject: [PATCH 014/102] fix-2439 --- routers/api/v1/repo/cloudbrain.go | 1 + routers/api/v1/repo/modelarts.go | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/routers/api/v1/repo/cloudbrain.go b/routers/api/v1/repo/cloudbrain.go index d291024f99..0b1271c5c4 100755 --- a/routers/api/v1/repo/cloudbrain.go +++ b/routers/api/v1/repo/cloudbrain.go @@ -99,6 +99,7 @@ func GetCloudbrainTask(ctx *context.APIContext) { "SubState": result.JobStatus.SubState, "CreatedTime": time.Unix(result.JobStatus.CreatedTime/1000, 0).Format("2006-01-02 15:04:05"), "CompletedTime": time.Unix(result.JobStatus.CompletedTime/1000, 0).Format("2006-01-02 15:04:05"), + "JobDuration": job.TrainJobDuration, }) } diff --git a/routers/api/v1/repo/modelarts.go b/routers/api/v1/repo/modelarts.go index 187c16c50f..cb80861896 100755 --- a/routers/api/v1/repo/modelarts.go +++ b/routers/api/v1/repo/modelarts.go @@ -87,9 +87,10 @@ func GetModelArtsNotebook2(ctx *context.APIContext) { } ctx.JSON(http.StatusOK, map[string]interface{}{ - "ID": ID, - "JobName": job.JobName, - "JobStatus": result.Status, + "ID": ID, + "JobName": job.JobName, + "JobStatus": result.Status, + "JobDuration": job.TrainJobDuration, }) } -- 2.34.1 From 7dacce149aacd7a3381067a079ac19ad083bf97a Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 20 Jul 2022 18:16:33 +0800 Subject: [PATCH 015/102] fix-bug --- routers/repo/cloudbrain.go | 4 ++-- routers/repo/grampus.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 18ad02e88d..58087a4f67 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -321,7 +321,7 @@ func cloudBrainTrainJobErrorPrepare(ctx *context.Context, form auth.CreateCloudB ctx.ServerError("json.Unmarshal failed:", err) return err } - ctx.Data["run_para_list"] = Parameters.Parameter + ctx.Data["params"] = Parameters.Parameter ctx.Data["boot_file"] = form.BootFile ctx.Data["attachment"] = form.Attachment ctx.Data["branch_name"] = form.BranchName @@ -436,7 +436,7 @@ func cloudBrainInferenceJobErrorPrepare(ctx *context.Context, form auth.CreateCl ctx.ServerError("json.Unmarshal failed:", err) return err } - ctx.Data["run_para_list"] = Parameters.Parameter + ctx.Data["params"] = Parameters.Parameter ctx.Data["boot_file"] = form.BootFile ctx.Data["attachment"] = form.Attachment ctx.Data["branch_name"] = form.BranchName diff --git a/routers/repo/grampus.go b/routers/repo/grampus.go index fa6e718142..ed37a542b5 100755 --- a/routers/repo/grampus.go +++ b/routers/repo/grampus.go @@ -201,7 +201,7 @@ func grampusTrainJobErrorPrepare(ctx *context.Context, processType string, form ctx.ServerError("json.Unmarshal failed:", err) return err } - ctx.Data["run_para_list"] = Parameters.Parameter + ctx.Data["params"] = Parameters.Parameter ctx.Data["boot_file"] = form.BootFile ctx.Data["attachment"] = form.Attachment ctx.Data["branch_name"] = form.BranchName -- 2.34.1 From 56619790a56273d6a8df7de335859393027335e6 Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Thu, 21 Jul 2022 08:56:05 +0800 Subject: [PATCH 016/102] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routers/repo/ai_model_manage.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/routers/repo/ai_model_manage.go b/routers/repo/ai_model_manage.go index 0aef1a70c2..d01539a754 100644 --- a/routers/repo/ai_model_manage.go +++ b/routers/repo/ai_model_manage.go @@ -152,6 +152,10 @@ func saveModelByParameters(jobId string, versionName string, name string, versio } func SaveNewNameModel(ctx *context.Context) { + if !ctx.Repo.CanWrite(models.UnitTypeModelManage) { + ctx.Error(403, ctx.Tr("repo.model_noright")) + return + } name := ctx.Query("Name") if name == "" { ctx.Error(500, fmt.Sprintf("name or version is null.")) @@ -169,6 +173,10 @@ func SaveNewNameModel(ctx *context.Context) { } func SaveModel(ctx *context.Context) { + if !ctx.Repo.CanWrite(models.UnitTypeModelManage) { + ctx.Error(403, ctx.Tr("repo.model_noright")) + return + } log.Info("save model start.") JobId := ctx.Query("JobId") VersionName := ctx.Query("VersionName") @@ -177,16 +185,8 @@ func SaveModel(ctx *context.Context) { label := ctx.Query("Label") description := ctx.Query("Description") engine := ctx.QueryInt("Engine") - trainTaskCreate := ctx.QueryBool("trainTaskCreate") modelSelectedFile := ctx.Query("modelSelectedFile") log.Info("engine=" + fmt.Sprint(engine) + " modelSelectedFile=" + modelSelectedFile) - if !trainTaskCreate { - if !ctx.Repo.CanWrite(models.UnitTypeModelManage) { - //ctx.NotFound(ctx.Req.URL.RequestURI(), nil) - ctx.JSON(403, ctx.Tr("repo.model_noright")) - return - } - } if JobId == "" || VersionName == "" { ctx.Error(500, fmt.Sprintf("JobId or VersionName is null.")) -- 2.34.1 From 1ab81931330fb830da3ca542a577bb99a5d95a7d Mon Sep 17 00:00:00 2001 From: chenshihai Date: Thu, 21 Jul 2022 09:26:18 +0800 Subject: [PATCH 017/102] kanban --- .gitignore | 1 + public/kanban/index.html | 12 ------------ templates/base/head.tmpl | 5 +++++ templates/base/head_course.tmpl | 5 +++++ templates/base/head_fluid.tmpl | 5 +++++ templates/base/head_home.tmpl | 5 +++++ templates/base/head_pro.tmpl | 5 +++++ 7 files changed, 26 insertions(+), 12 deletions(-) delete mode 100644 public/kanban/index.html diff --git a/.gitignore b/.gitignore index 9f34fea2aa..02f379b0bc 100644 --- a/.gitignore +++ b/.gitignore @@ -80,6 +80,7 @@ coverage.all /public/css /public/fonts /public/fomantic +/public/kanban /public/img/svg /VERSION diff --git a/public/kanban/index.html b/public/kanban/index.html deleted file mode 100644 index 0e44d84a38..0000000000 --- a/public/kanban/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - -
kanban
- - diff --git a/templates/base/head.tmpl b/templates/base/head.tmpl index 937abd5887..4ab9da2319 100755 --- a/templates/base/head.tmpl +++ b/templates/base/head.tmpl @@ -109,6 +109,11 @@ ], {{end}} }; + {{if .IsSigned}} + window.sessionStorage.setItem('_csrf', '{{.CsrfToken}}'); + {{else}} + window.sessionStorage.removeItem('_csrf'); + {{end}} diff --git a/templates/base/head_course.tmpl b/templates/base/head_course.tmpl index 3fff0b8d2b..fe21a0e05b 100644 --- a/templates/base/head_course.tmpl +++ b/templates/base/head_course.tmpl @@ -109,6 +109,11 @@ ], {{end}} }; + {{if .IsSigned}} + window.sessionStorage.setItem('_csrf', '{{.CsrfToken}}'); + {{else}} + window.sessionStorage.removeItem('_csrf'); + {{end}} diff --git a/templates/base/head_fluid.tmpl b/templates/base/head_fluid.tmpl index 5340c7cb89..1c16e71402 100644 --- a/templates/base/head_fluid.tmpl +++ b/templates/base/head_fluid.tmpl @@ -109,6 +109,11 @@ ], {{end}} }; + {{if .IsSigned}} + window.sessionStorage.setItem('_csrf', '{{.CsrfToken}}'); + {{else}} + window.sessionStorage.removeItem('_csrf'); + {{end}} diff --git a/templates/base/head_home.tmpl b/templates/base/head_home.tmpl index 2def358f83..a77d7b00a9 100644 --- a/templates/base/head_home.tmpl +++ b/templates/base/head_home.tmpl @@ -109,6 +109,11 @@ ], {{end}} }; + {{if .IsSigned}} + window.sessionStorage.setItem('_csrf', '{{.CsrfToken}}'); + {{else}} + window.sessionStorage.removeItem('_csrf'); + {{end}} diff --git a/templates/base/head_pro.tmpl b/templates/base/head_pro.tmpl index 75292b6fc0..c643ea873e 100644 --- a/templates/base/head_pro.tmpl +++ b/templates/base/head_pro.tmpl @@ -109,6 +109,11 @@ ], {{end}} }; + {{if .IsSigned}} + window.sessionStorage.setItem('_csrf', '{{.CsrfToken}}'); + {{else}} + window.sessionStorage.removeItem('_csrf'); + {{end}} -- 2.34.1 From 794b72bd2ce75265d2c565d5f4e9668f84d838f7 Mon Sep 17 00:00:00 2001 From: zouap Date: Thu, 21 Jul 2022 09:29:16 +0800 Subject: [PATCH 018/102] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E4=BB=A3=E7=A0=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- models/dbsql/dataset_foreigntable_for_es.sql | 24 ++++++++++++-------- models/dbsql/repo_foreigntable_for_es.sql | 2 +- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/models/dbsql/dataset_foreigntable_for_es.sql b/models/dbsql/dataset_foreigntable_for_es.sql index 02e5f0ddf6..4a0cae70e0 100644 --- a/models/dbsql/dataset_foreigntable_for_es.sql +++ b/models/dbsql/dataset_foreigntable_for_es.sql @@ -158,16 +158,20 @@ DROP TRIGGER IF EXISTS es_update_dataset on public.dataset; CREATE OR REPLACE FUNCTION public.update_dataset() RETURNS trigger AS $def$ BEGIN - UPDATE public.dataset_es - SET description=NEW.description, - title=NEW.title, - category=NEW.category, - task=NEW.task, - download_times=NEW.download_times, - updated_unix=NEW.updated_unix, - file_name=(select array_to_string(array_agg(name order by created_unix desc),'-#,#-') from public.attachment where dataset_id=NEW.id and is_private=false), - file_desc=(select array_to_string(array_agg(description order by created_unix desc),'-#,#-') from public.attachment where dataset_id=NEW.id and is_private=false) - where id=NEW.id; + if (NEW.status=0) then + delete from public.dataset_es where id=NEW.id; + elsif (NEW.status=1) then + UPDATE public.dataset_es + SET description=NEW.description, + title=NEW.title, + category=NEW.category, + task=NEW.task, + download_times=NEW.download_times, + updated_unix=NEW.updated_unix, + file_name=(select array_to_string(array_agg(name order by created_unix desc),'-#,#-') from public.attachment where dataset_id=NEW.id and is_private=false), + file_desc=(select array_to_string(array_agg(description order by created_unix desc),'-#,#-') from public.attachment where dataset_id=NEW.id and is_private=false) + where id=NEW.id; + end if; return new; END $def$ diff --git a/models/dbsql/repo_foreigntable_for_es.sql b/models/dbsql/repo_foreigntable_for_es.sql index e927eb7c29..82c8781af1 100644 --- a/models/dbsql/repo_foreigntable_for_es.sql +++ b/models/dbsql/repo_foreigntable_for_es.sql @@ -461,7 +461,7 @@ $def$ if not OLD.is_private and NEW.is_private then delete from public.issue_es where repo_id=NEW.id; - delete from public.dataset_es where repo_id=NEW.id; + -- delete from public.dataset_es where repo_id=NEW.id; delete from public.repository_es where id=NEW.id; end if; -- 2.34.1 From 7d5cf069591cfdf351889a91dd2e64c33382dbc3 Mon Sep 17 00:00:00 2001 From: chenshihai Date: Thu, 21 Jul 2022 11:44:19 +0800 Subject: [PATCH 019/102] =?UTF-8?q?fix=20#1172=20=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=9C=892=E4=B8=AA=E5=B1=95=E5=BC=80?= =?UTF-8?q?=E7=9A=84=E6=A8=A1=E5=9E=8B=E8=8A=82=E7=82=B9=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E7=BB=99A=E5=88=9B=E5=BB=BA=E6=96=B0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=EF=BC=8CB=E7=9A=84=E5=B1=95=E5=BC=80=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E4=BC=9A=E6=B6=88=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web_src/js/components/Model.vue | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/web_src/js/components/Model.vue b/web_src/js/components/Model.vue index cb002e76a8..cf1210d596 100644 --- a/web_src/js/components/Model.vue +++ b/web_src/js/components/Model.vue @@ -6,7 +6,7 @@ ref="table" :data="tableData" style="min-width: 100%" - row-key="ID" + row-key="rowKey" lazy :load="load" :tree-props="{children: 'Children', hasChildren: 'hasChildren'}" @@ -171,6 +171,7 @@ export default { tableData[i].EngineName = this.getEngineName(tableData[i]) tableData[i].ComputeResource = TrainTaskInfo.ComputeResource tableData[i].cName=tableData[i].Name + tableData[i].rowKey = tableData[i].ID + Math.random() tableData[i].Name='' tableData[i].VersionCount = '' tableData[i].Children = true @@ -310,18 +311,18 @@ export default { const store = this.$refs.table.store if(!this.loadNodeMap.get(row.cName)){ const parent = store.states.data - const index = parent.findIndex(child => child.ID == row.ID) + const index = parent.findIndex(child => child.rowKey == row.rowKey) this.getModelList() }else{ let {tree,treeNode,resolve} = this.loadNodeMap.get(row.cName) const keys = Object.keys(store.states.lazyTreeNodeMap); - if(keys.includes(row.ID)){ + if(keys.includes(row.rowKey)){ this.getModelList() }else{ let parentRow = store.states.data.find(child => child.cName == row.cName); - let childrenIndex = store.states.lazyTreeNodeMap[parentRow.ID].findIndex(child => child.ID == row.ID) + let childrenIndex = store.states.lazyTreeNodeMap[parentRow.rowKey].findIndex(child => child.rowKey == row.rowKey) parentRow.VersionCount = parentRow.VersionCount-1 - const parent = store.states.lazyTreeNodeMap[parentRow.ID] + const parent = store.states.lazyTreeNodeMap[parentRow.rowKey] if(parent.length===1){ this.getModelList() }else{ @@ -379,8 +380,8 @@ export default { } }, getModelList(){ - try { - this.$refs.table.store.states.lazyTreeNodeMap = {} + try { + this.loadNodeMap.clear(); this.$axios.get(location.href+'_api',{ params:this.params }).then((res)=>{ @@ -391,6 +392,7 @@ export default { for(let i=0;i Date: Thu, 21 Jul 2022 11:51:50 +0800 Subject: [PATCH 020/102] #2479 add wechat template msg --- modules/auth/wechat/client.go | 50 +++++++++++++++ modules/auth/wechat/template.go | 110 ++++++++++++++++++++++++++++++++ modules/setting/setting.go | 4 ++ routers/repo/cloudbrain.go | 2 +- 4 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 modules/auth/wechat/template.go diff --git a/modules/auth/wechat/client.go b/modules/auth/wechat/client.go index 9ed4b543f8..e137c123fd 100644 --- a/modules/auth/wechat/client.go +++ b/modules/auth/wechat/client.go @@ -4,6 +4,7 @@ import ( "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" "encoding/json" + "errors" "fmt" "github.com/go-resty/resty/v2" "strconv" @@ -19,6 +20,7 @@ const ( ACCESS_TOKEN_PATH = "/cgi-bin/token" QR_CODE_PATH = "/cgi-bin/qrcode/create" GET_MATERIAL_PATH = "/cgi-bin/material/batchget_material" + SEND_TEMPLATE_PATH = "/cgi-bin/message/template/send" ACTION_QR_STR_SCENE = "QR_STR_SCENE" ERR_CODE_ACCESSTOKEN_EXPIRE = 42001 @@ -41,12 +43,33 @@ type QRCodeRequest struct { Action_info ActionInfo `json:"action_info"` Expire_seconds int `json:"expire_seconds"` } + type MaterialRequest struct { Type string `json:"type"` Offset int `json:"offset"` Count int `json:"count"` } +type TemplateMsgRequest struct { + ToUser string `json:"touser"` + TemplateId string `json:"template_id"` + Url string `json:"url"` + ClientMsgId string `json:"client_msg_id"` + Data interface{} `json:"data"` +} +type TemplateValue struct { + Value string `json:"value"` + Color string `json:"color"` +} + +type CloudbrainTaskData struct { + First TemplateValue `json:"first"` + Keyword1 TemplateValue `json:"keyword1"` + Keyword2 TemplateValue `json:"keyword2"` + Keyword3 TemplateValue `json:"keyword3"` + Remark TemplateValue `json:"remark"` +} + type ActionInfo struct { Scene Scene `json:"scene"` } @@ -161,3 +184,30 @@ func getErrorCodeFromResponse(r *resty.Response) int { c, _ := strconv.Atoi(fmt.Sprint(code)) return c } + +func sendTemplateMsg(req TemplateMsgRequest) (error, bool) { + client := getWechatRestyClient() + + bodyJson, _ := json.Marshal(req) + r, err := client.R(). + SetHeader("Content-Type", "application/json"). + SetQueryParam("access_token", GetWechatAccessToken()). + SetBody(bodyJson). + Post(setting.WechatApiHost + SEND_TEMPLATE_PATH) + if err != nil { + log.Error("sendTemplateMsg,e=%v", err) + return nil, false + } + a := r.Body() + resultMap := make(map[string]interface{}, 0) + json.Unmarshal(a, &resultMap) + errcode := resultMap["errcode"] + log.Info("sendTemplateMsg,%v", r) + if errcode == fmt.Sprint(ERR_CODE_ACCESSTOKEN_EXPIRE) || errcode == fmt.Sprint(ERR_CODE_ACCESSTOKEN_INVALID) { + return nil, true + } + if errcode != "" { + return errors.New(fmt.Sprintf("sendTemplateMsg error[%s]", errcode)), false + } + return nil, false +} diff --git a/modules/auth/wechat/template.go b/modules/auth/wechat/template.go new file mode 100644 index 0000000000..157f0d92ff --- /dev/null +++ b/modules/auth/wechat/template.go @@ -0,0 +1,110 @@ +package wechat + +import ( + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/setting" + "errors" + "fmt" + "time" +) + +type JobOperateType string + +const ( + JobOperateTypeStart JobOperateType = "start" + JobOperateTypeStop JobOperateType = "stop" + JobOperateTypeFailed JobOperateType = "failed" +) + +func SendCloudbrainTemplateMsg(operateType JobOperateType, cloudbrain models.Cloudbrain, date time.Time) error { + openId := models.GetUserWechatOpenId(cloudbrain.UserID) + if openId == "" { + return errors.New("Wechat openId not exist") + } + data := CloudbrainTaskData{ + First: TemplateValue{Value: getCloudbrainTemplateTitle(operateType)}, + Keyword1: TemplateValue{Value: cloudbrain.DisplayJobName}, + Keyword2: TemplateValue{Value: getJobTypeDisplayName(cloudbrain.JobType)}, + Keyword3: TemplateValue{Value: date.Format("2006-01-02 15:04:05")}, + Remark: TemplateValue{Value: cloudbrain.DisplayJobName}, + } + req := TemplateMsgRequest{ + ToUser: openId, + TemplateId: setting.CloudbrainTemplateId, + Url: getCloudbrainTemplateUrl(cloudbrain), + ClientMsgId: string(operateType) + "_" + fmt.Sprint(cloudbrain.ID), + Data: data, + } + err, retryFlag := sendTemplateMsg(req) + if retryFlag { + log.Info("retrySendCloudbrainTemplateMsg calling") + refreshAccessToken() + err, _ = sendTemplateMsg(req) + if err != nil { + log.Error("SendCloudbrainTemplateMsg err. %v", err) + return err + } + return nil + } + if err != nil { + log.Error("SendCloudbrainTemplateMsg err. %v", err) + return err + } + return nil +} + +func getCloudbrainTemplateUrl(cloudbrain models.Cloudbrain) string { + url := setting.AppURL + + switch cloudbrain.JobType { + case string(models.JobTypeDebug): + if cloudbrain.ComputeResource == "CPU/GPU" { + url += "/cloudbrain/" + fmt.Sprint(cloudbrain.ID) + } else { + url += "/modelarts/notebook/" + fmt.Sprint(cloudbrain.ID) + } + case string(models.JobTypeBenchmark): + url += "/cloudbrain/benchmark/" + fmt.Sprint(cloudbrain.ID) + case string(models.JobTypeTrain): + if cloudbrain.Type == models.TypeCloudBrainOne { + url += "/cloudbrain/train-job/" + fmt.Sprint(cloudbrain.JobID) + } else if cloudbrain.Type == models.TypeCloudBrainTwo { + url += "/modelarts/train-job" + fmt.Sprint(cloudbrain.JobID) + } else if cloudbrain.Type == models.TypeC2Net { + url += "/grampus/train-job/" + fmt.Sprint(cloudbrain.JobID) + } + case string(models.JobTypeInference): + url += "/modelarts/inference-job/" + fmt.Sprint(cloudbrain.JobID) + } + return url +} + +func getCloudbrainTemplateTitle(operateType JobOperateType) string { + var title string + switch operateType { + case JobOperateTypeStart: + title = "您好,您提交的算力资源申请已通过,任务已启动,请您关注运行情况。" + case JobOperateTypeFailed: + title = "您好,您提交的任务启动失败,您可以通过日志查看失败原因。" + case JobOperateTypeStop: + title = "您好,您提交的任务已运行结束。" + } + + return title + +} + +func getJobTypeDisplayName(jobType string) string { + switch jobType { + case string(models.JobTypeDebug): + return "调试任务" + case string(models.JobTypeBenchmark): + return "评测任务" + case string(models.JobTypeTrain): + return "训练任务" + case string(models.JobTypeInference): + return "推理任务" + } + return "" +} diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 6ec54fdffb..c0c5c715f2 100755 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -582,6 +582,9 @@ var ( TreePathOfAutoMsgReply string TreePathOfSubscribe string + //wechat template msg config + CloudbrainTemplateId string + //nginx proxy PROXYURL string RadarMap = struct { @@ -1440,6 +1443,7 @@ func NewContext() { RefNameOfWechatReply = sec.Key("AUTO_REPLY_REF_NAME").MustString("master") TreePathOfAutoMsgReply = sec.Key("AUTO_REPLY_TREE_PATH").MustString("wechat/auto_reply.json") TreePathOfSubscribe = sec.Key("SUBSCRIBE_TREE_PATH").MustString("wechat/subscribe_reply.json") + CloudbrainTemplateId = sec.Key("CLOUDBRAIN_TEMPLATE_ID").MustString("4qtOaImiFnzIrzLxxP99lYc12EYxvtAE1fNqd7fcihw") SetRadarMapConfig() diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index bee70965d3..59ee082786 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -373,7 +373,6 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { } } - func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBrainInferencForm) { ctx.Data["PageIsCloudBrain"] = true displayJobName := form.DisplayJobName @@ -494,6 +493,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/modelarts/inference-job") } + /** 检查用户传输的参数是否符合专属资源池 */ -- 2.34.1 From ed85b1d84a8814fdb641b76e97deb4d53791b4c7 Mon Sep 17 00:00:00 2001 From: chenshihai Date: Thu, 21 Jul 2022 11:57:54 +0800 Subject: [PATCH 021/102] =?UTF-8?q?fix=20#1347=20=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=96=B0=E6=A8=A1=E5=9E=8B=E6=97=B6=E8=B6=85=E9=95=BF=E8=AE=AD?= =?UTF-8?q?=E7=BB=83=E4=BB=BB=E5=8A=A1=E5=90=8D=E7=A7=B0=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E6=9C=89=E9=87=8D=E5=8F=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/repo/modelmanage/index.tmpl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/repo/modelmanage/index.tmpl b/templates/repo/modelmanage/index.tmpl index b54fa5cfa8..c42f1ba7be 100644 --- a/templates/repo/modelmanage/index.tmpl +++ b/templates/repo/modelmanage/index.tmpl @@ -6,7 +6,8 @@ text-align: right; } .inline .ui.dropdown .text { - color: rgba(0, 0, 0, .87) !important + color: rgba(0, 0, 0, .87) !important; + max-width: 360px; } .newtext{ left: 15px !important -- 2.34.1 From 2b91b1f8db054ed57dba9ed7ab2699c2a0911d60 Mon Sep 17 00:00:00 2001 From: chenshihai Date: Thu, 21 Jul 2022 12:33:04 +0800 Subject: [PATCH 022/102] =?UTF-8?q?fix=20#2478=20=E8=BF=81=E7=A7=BB?= =?UTF-8?q?=E5=A4=96=E9=83=A8=E9=A1=B9=E7=9B=AE=E6=97=B6=EF=BC=8C=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E7=94=9F=E6=88=90=E7=9A=84=E9=A1=B9=E7=9B=AE=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E6=9C=89=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/repo/migrate.tmpl | 2 +- web_src/js/index.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/repo/migrate.tmpl b/templates/repo/migrate.tmpl index ef667361ed..68c8f16d00 100644 --- a/templates/repo/migrate.tmpl +++ b/templates/repo/migrate.tmpl @@ -11,7 +11,7 @@ {{template "base/alert" .}}
- + {{.i18n.Tr "repo.migrate.clone_address_desc"}}{{if .ContextUser.CanImportLocal}} {{.i18n.Tr "repo.migrate.clone_local_path"}}{{end}}
{{.i18n.Tr "repo.migrate.migrate_items_options"}} diff --git a/web_src/js/index.js b/web_src/js/index.js index 53dba8a887..ce859e4df7 100755 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -2950,13 +2950,13 @@ $(document).ready(async () => { } const $cloneAddr = $("#clone_addr"); - $cloneAddr.on("change", () => { + $cloneAddr.on("input change", () => { const $repoName = $("#alias"); const $owner = $("#ownerDropdown div.text").attr("title"); const $urlAdd = location.href.split("/")[0] + "//" + location.href.split("/")[2]; - if ($cloneAddr.val().length > 0 && $repoName.val().length === 0) { - // Only modify if repo_name input is blank + if ($cloneAddr.val().length > 0 /* && $repoName.val().length === 0 */) { + // modify when clone address change const repoValue = $cloneAddr.val().match(/^(.*\/)?((.+?)(\.git)?)$/)[3]; $repoName.val($cloneAddr.val().match(/^(.*\/)?((.+?)(\.git)?)$/)[3]); $.get( -- 2.34.1 From ce57f0f98606141e94f44b9f9dd42493c761262b Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Thu, 21 Jul 2022 14:25:07 +0800 Subject: [PATCH 023/102] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- options/locale/locale_en-US.ini | 4 ++-- options/locale/locale_zh-CN.ini | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index b641f40117..105abf006b 100755 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1007,7 +1007,7 @@ cloudbrain.time.starttime=Start run time cloudbrain.time.endtime=End run time cloudbrain.datasetdownload=Dataset download url model_manager = Model -model_noright=No right +model_noright=You have no right to do the operation. model_rename=Duplicate model name, please modify model name. date=Date @@ -1225,7 +1225,7 @@ model.manage.create_new_convert_task=Create Model Transformation Task modelconvert.manage.create_error1=A model transformation task with the same name already exists. modelconvert.manage.create_error2=Only one running model transformation task can be created. modelconvert.manage.model_not_exist=The model does not exist. -modelconvert.manage.no_operate_right=No operation permission. +modelconvert.manage.no_operate_right=You have no right to do the operation. grampus.train_job.ai_center = AI Center grampus.dataset_path_rule = The code is storaged in /cache/code;the dataset is storaged in /cache/dataset;and please put your model into /cache/output, then you can download it online。 diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 87630d6c00..1717f5cfdd 100755 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -1006,7 +1006,7 @@ datasets.desc=数据集功能 cloudbrain_helper=使用GPU/NPU资源,开启Notebook、模型训练任务等 model_manager = 模型 -model_noright=无权限操作 +model_noright=您没有操作权限。 model_rename=模型名称重复,请修改模型名称 @@ -1237,7 +1237,7 @@ model.manage.create_new_convert_task=创建模型转换任务 modelconvert.manage.create_error1=相同的名称模型转换任务已经存在。 modelconvert.manage.create_error2=只能创建一个正在运行的模型转换任务。 modelconvert.manage.model_not_exist=选择的模型不存在。 -modelconvert.manage.no_operate_right=无操作权限。 +modelconvert.manage.no_operate_right=您没有操作权限。 grampus.train_job.ai_center=智算中心 grampus.dataset_path_rule = 训练脚本存储在/cache/code中,数据集存储在/cache/dataset中,训练输出请存储在/cache/output中以供后续下载。 -- 2.34.1 From abb39d7ce29d965ab5d4565048fa58ee2a7799e6 Mon Sep 17 00:00:00 2001 From: chenshihai Date: Thu, 21 Jul 2022 14:50:42 +0800 Subject: [PATCH 024/102] =?UTF-8?q?fix=20#2370=20=E3=80=90=E9=95=9C?= =?UTF-8?q?=E5=83=8F=E7=AE=A1=E7=90=86=E3=80=91=E6=8F=90=E4=BA=A4=E9=95=9C?= =?UTF-8?q?=E5=83=8F=E5=90=8E=E9=A1=B5=E9=9D=A2=E6=B2=A1=E6=9C=89=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E9=95=9C=E5=83=8F=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/repo/debugjob/index.tmpl | 1 + web_src/js/components/images/Images.vue | 40 ++++++++++++++++++++----- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/templates/repo/debugjob/index.tmpl b/templates/repo/debugjob/index.tmpl index 043816e9fc..5381602b98 100755 --- a/templates/repo/debugjob/index.tmpl +++ b/templates/repo/debugjob/index.tmpl @@ -427,6 +427,7 @@ {{if .CanDebug}}
{{$.i18n.Tr "repo.submit_image"}} {{else}} 私有 公开 - - + + - - + + - - + +
@@ -473,6 +473,7 @@ export default { tableDataCustom: [], starCustom:[], loadingCustom:false, + refreshCustomTimer: null, currentPageStar:1, pageSizeStar:10, @@ -485,6 +486,7 @@ export default { methods: { handleClick(tab, event) { this.search = '' + this.stopImageListCustomRefresh(); if(tab.name=="first"){ this.paramsPublic.q = '' this.getImageListPublic() @@ -560,9 +562,31 @@ export default { }); this.loadingCustom = false + this.getImageListCustomRefresh() }) }, + getImageListCustomRefresh() { + this.stopImageListCustomRefresh(); + this.refreshCustomTimer = setInterval(() => { + this.tableDataCustom.forEach(item => { + if (item.status === 0) { + this.$axios.get(`/image/${item.id}`, {}).then((res) => { + const newData = res.data; + this.tableDataCustom.forEach(it => { + if (it.id === newData.id) { + it.status = newData.status; + } + }); + }) + } + }); + }, 5000); + }, + + stopImageListCustomRefresh() { + this.refreshCustomTimer && clearInterval(this.refreshCustomTimer); + }, getImageListStar(){ this.loadingStar = true this.$axios.get('/explore/images/star',{ @@ -715,8 +739,10 @@ export default { else{ this.getImageListPublic() } + }, + beforeDestroy() { + this.stopImageListCustomRefresh(); } - }; -- 2.34.1 From 3b426c39b72bd92f337c776aff61cc684440742b Mon Sep 17 00:00:00 2001 From: zouap Date: Thu, 21 Jul 2022 15:07:30 +0800 Subject: [PATCH 025/102] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E6=98=BE=E7=A4=BA=E6=A8=A1=E5=9E=8B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- modules/storage/minio_ext.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/storage/minio_ext.go b/modules/storage/minio_ext.go index 4ad83da82d..5228230649 100755 --- a/modules/storage/minio_ext.go +++ b/modules/storage/minio_ext.go @@ -187,9 +187,9 @@ func GetOneLevelAllObjectUnderDirMinio(bucket string, prefixRootPath string, rel if val.Key == Prefix { continue } - if strings.Contains(val.Key[prefixLen:len(val.Key)-1], "/") { - continue - } + // if strings.Contains(val.Key[prefixLen:len(val.Key)-1], "/") { + // continue + // } if strings.HasSuffix(val.Key, "/") { isDir = true fileName = val.Key[prefixLen : len(val.Key)-1] -- 2.34.1 From f33089b213397cf34acac0acc44fdcd4e0fbe4cd Mon Sep 17 00:00:00 2001 From: chenshihai Date: Thu, 21 Jul 2022 15:29:23 +0800 Subject: [PATCH 026/102] =?UTF-8?q?fix=20#1345=20=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E6=A0=A1=E9=AA=8C=E4=B8=8D=E5=90=88=E6=B3=95?= =?UTF-8?q?=E7=9A=84=E4=BB=BB=E5=8A=A1=E5=90=8D=E7=A7=B0=E5=B9=B6=E7=BB=99?= =?UTF-8?q?=E5=87=BA=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/repo/cloudbrain/inference/new.tmpl | 4 ++-- templates/repo/cloudbrain/new.tmpl | 21 ++++++++++++++++++ templates/repo/cloudbrain/trainjob/new.tmpl | 4 ++-- templates/repo/grampus/trainjob/gpu/new.tmpl | 2 +- templates/repo/grampus/trainjob/npu/new.tmpl | 2 +- .../repo/modelarts/inferencejob/new.tmpl | 4 ++-- templates/repo/modelarts/notebook/new.tmpl | 22 +++++++++++++++++++ templates/repo/modelarts/trainjob/new.tmpl | 2 +- 8 files changed, 52 insertions(+), 9 deletions(-) diff --git a/templates/repo/cloudbrain/inference/new.tmpl b/templates/repo/cloudbrain/inference/new.tmpl index 223fcfe1c3..6d3da0be7a 100644 --- a/templates/repo/cloudbrain/inference/new.tmpl +++ b/templates/repo/cloudbrain/inference/new.tmpl @@ -421,7 +421,7 @@ identifier : 'display_job_name', rules: [ { - type: 'regExp[/^[a-zA-Z0-9-_]{1,64}[^-]$/]', + type: 'regExp[/^[a-zA-Z0-9-_]{1,64}[a-zA-Z0-9_]$/]', } ] }, @@ -472,9 +472,9 @@ document.getElementById("mask").style.display = "none" } } + validate(); $('.ui.create_train_job.green.button').click(function(e) { send_run_para() get_name() - validate() }) diff --git a/templates/repo/cloudbrain/new.tmpl b/templates/repo/cloudbrain/new.tmpl index f0538261d4..9552c80c04 100755 --- a/templates/repo/cloudbrain/new.tmpl +++ b/templates/repo/cloudbrain/new.tmpl @@ -294,6 +294,27 @@ context.value = '' $(".icon.icons").css("visibility", "hidden") } + function validate(){ + $('.ui.form').form({ + on: 'blur', + fields: { + display_job_name:{ + identifier : 'display_job_name', + rules: [ + { + type: 'regExp[/^[a-z0-9][a-z0-9-_]{1,34}[a-z0-9-]$/]', + } + ] + }, + }, + onSuccess: function(){ + }, + onFailure: function(e){ + return false; + } + }) + } + validate(); form.onsubmit = function (e) { let value_task = $("input[name='display_job_name']").val() let value_image = $("input[name='image']").val() diff --git a/templates/repo/cloudbrain/trainjob/new.tmpl b/templates/repo/cloudbrain/trainjob/new.tmpl index c410889b27..07540869d3 100755 --- a/templates/repo/cloudbrain/trainjob/new.tmpl +++ b/templates/repo/cloudbrain/trainjob/new.tmpl @@ -483,9 +483,9 @@ $("input#ai_flaver_name").val(name2) } + validate(); $('.ui.create_train_job.green.button').click(function (e) { get_name() - send_run_para() - validate() + send_run_para() }) \ No newline at end of file diff --git a/templates/repo/grampus/trainjob/gpu/new.tmpl b/templates/repo/grampus/trainjob/gpu/new.tmpl index 75b8bcff27..9321532bf8 100755 --- a/templates/repo/grampus/trainjob/gpu/new.tmpl +++ b/templates/repo/grampus/trainjob/gpu/new.tmpl @@ -433,9 +433,9 @@ $("input#ai_flavor_name").val(name2) } + validate(); $('.ui.create_train_job.green.button').click(function(e) { get_name() send_run_para() - validate() }) \ No newline at end of file diff --git a/templates/repo/grampus/trainjob/npu/new.tmpl b/templates/repo/grampus/trainjob/npu/new.tmpl index f23942e130..827a2ad8e3 100755 --- a/templates/repo/grampus/trainjob/npu/new.tmpl +++ b/templates/repo/grampus/trainjob/npu/new.tmpl @@ -425,9 +425,9 @@ $("input#trainjob_work_server_num").val(val_server_num_select) } + validate(); $('.ui.create_train_job.green.button').click(function(e) { get_name() send_run_para() - validate() }) diff --git a/templates/repo/modelarts/inferencejob/new.tmpl b/templates/repo/modelarts/inferencejob/new.tmpl index 89f4180c02..91d856bf70 100644 --- a/templates/repo/modelarts/inferencejob/new.tmpl +++ b/templates/repo/modelarts/inferencejob/new.tmpl @@ -438,7 +438,7 @@ identifier : 'display_job_name', rules: [ { - type: 'regExp[/^[a-zA-Z0-9-_]{1,64}[^-]$/]', + type: 'regExp[/^[a-zA-Z0-9-_]{1,64}[a-zA-Z0-9_]$/]', } ] }, @@ -489,9 +489,9 @@ document.getElementById("mask").style.display = "none" } } + validate(); $('.ui.create_train_job.green.button').click(function(e) { send_run_para() get_name() - validate() }) diff --git a/templates/repo/modelarts/notebook/new.tmpl b/templates/repo/modelarts/notebook/new.tmpl index 6ab16f9414..b81bdfdeca 100755 --- a/templates/repo/modelarts/notebook/new.tmpl +++ b/templates/repo/modelarts/notebook/new.tmpl @@ -110,6 +110,28 @@ $('#messageInfo').css('display','none') + function validate(){ + $('.ui.form').form({ + on: 'blur', + fields: { + display_job_name:{ + identifier : 'display_job_name', + rules: [ + { + type: 'regExp[/^[a-z0-9][a-z0-9-_]{1,36}$/]', + } + ] + }, + }, + onSuccess: function(){ + }, + onFailure: function(e){ + return false; + } + }) + } + validate(); + form.onsubmit = function(e){ let value_task = $("input[name='display_job_name']").val() diff --git a/templates/repo/modelarts/trainjob/new.tmpl b/templates/repo/modelarts/trainjob/new.tmpl index e89482dc2c..26c57327de 100755 --- a/templates/repo/modelarts/trainjob/new.tmpl +++ b/templates/repo/modelarts/trainjob/new.tmpl @@ -500,9 +500,9 @@ $("input#trainjob_work_server_num").val(val_server_num_select) } + validate(); $('.ui.create_train_job.green.button').click(function (e) { get_name() send_run_para() - validate() }) \ No newline at end of file -- 2.34.1 From 46a3354d6621db68a8d132f4eac605d03bbe6361 Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Thu, 21 Jul 2022 15:41:36 +0800 Subject: [PATCH 027/102] fix issue --- templates/repo/cloudbrain/inference/new.tmpl | 65 +++++++++++-------- templates/repo/cloudbrain/trainjob/new.tmpl | 65 +++++++++++-------- templates/repo/grampus/trainjob/gpu/new.tmpl | 34 ++++++---- templates/repo/grampus/trainjob/npu/new.tmpl | 58 +++++++++++++++-- .../repo/modelarts/inferencejob/new.tmpl | 36 +++++++++- templates/repo/modelarts/trainjob/new.tmpl | 38 +++++++++-- .../components/images/selectGrampusImages.vue | 3 + web_src/js/components/images/selectImages.vue | 3 + 8 files changed, 223 insertions(+), 79 deletions(-) diff --git a/templates/repo/cloudbrain/inference/new.tmpl b/templates/repo/cloudbrain/inference/new.tmpl index 223fcfe1c3..1126644ec0 100644 --- a/templates/repo/cloudbrain/inference/new.tmpl +++ b/templates/repo/cloudbrain/inference/new.tmpl @@ -58,18 +58,7 @@
{{.CsrfTokenHtml}} - - - {{if $.model_version}} - - {{else}} - - {{end}} - {{if $.label_names}} - - {{else}} - - {{end}} +

{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:

@@ -102,7 +91,11 @@
+ {{if .description}} + + {{else}} + {{end}}
@@ -186,8 +179,21 @@
@@ -196,8 +202,8 @@
- {{if .bootFile}} - + {{if .boot_file}} + {{else}} {{end}} @@ -244,9 +250,22 @@
@@ -397,13 +416,6 @@ msg = JSON.stringify(msg) $('#store_run_para').val(msg) } - function get_name(){ - let name1=$("#engine_name .text").text() - let name2=$("#flaver_name .text").text() - $("input#ai_engine_name").val(name1) - $("input#ai_flaver_name").val(name2) - - } function validate(){ $('.ui.form') .form({ @@ -474,7 +486,6 @@ } $('.ui.create_train_job.green.button').click(function(e) { send_run_para() - get_name() validate() }) diff --git a/templates/repo/cloudbrain/trainjob/new.tmpl b/templates/repo/cloudbrain/trainjob/new.tmpl index c410889b27..756a378ff5 100755 --- a/templates/repo/cloudbrain/trainjob/new.tmpl +++ b/templates/repo/cloudbrain/trainjob/new.tmpl @@ -89,8 +89,7 @@ {{.CsrfTokenHtml}} - - +

{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:

@@ -140,11 +139,11 @@
- + {{if .description}} + + {{else}} + + {{end}}
@@ -179,13 +178,25 @@
-
@@ -195,8 +206,8 @@
- {{if .bootFile}} - {{else}} {{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}}
- {{if .params}} {{if ne 0 (len .params)}} {{range $k ,$v := .params}}
@@ -238,17 +248,28 @@
{{end}} {{end}} - {{end}}
-
@@ -476,15 +497,7 @@ msg = JSON.stringify(msg) $('#store_run_para').val(msg) } - function get_name() { - let name1 = $("#engine_name .text").text() - let name2 = $("#flaver_name .text").text() - $("input#ai_engine_name").val(name1) - $("input#ai_flaver_name").val(name2) - - } $('.ui.create_train_job.green.button').click(function (e) { - get_name() send_run_para() validate() }) diff --git a/templates/repo/grampus/trainjob/gpu/new.tmpl b/templates/repo/grampus/trainjob/gpu/new.tmpl index 75b8bcff27..3b9d5cea9a 100755 --- a/templates/repo/grampus/trainjob/gpu/new.tmpl +++ b/templates/repo/grampus/trainjob/gpu/new.tmpl @@ -80,8 +80,7 @@ {{.CsrfTokenHtml}} - - +

{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:

@@ -123,7 +122,11 @@
+ {{if .description}} + + {{else}} + {{end}}
@@ -156,8 +159,8 @@
- {{if .bootFile}} - + {{if .boot_file}} + {{else}} {{end}} @@ -199,8 +202,21 @@
@@ -426,15 +442,7 @@ msg = JSON.stringify(msg) $('#store_run_para').val(msg) } - function get_name(){ - let name1=$("#engine_name .text").text() - let name2=$("#flavor_name .text").text() - $("input#ai_engine_name").val(name1) - $("input#ai_flavor_name").val(name2) - - } $('.ui.create_train_job.green.button').click(function(e) { - get_name() send_run_para() validate() }) diff --git a/templates/repo/grampus/trainjob/npu/new.tmpl b/templates/repo/grampus/trainjob/npu/new.tmpl index f23942e130..ebc52b6a15 100755 --- a/templates/repo/grampus/trainjob/npu/new.tmpl +++ b/templates/repo/grampus/trainjob/npu/new.tmpl @@ -119,7 +119,11 @@
+ {{if .description}} + + {{else}} + {{end}}
@@ -150,16 +154,29 @@
- {{if .bootFile}} - + {{if .boot_file}} + {{else}} {{end}} @@ -176,14 +193,45 @@ {{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}}
+ {{if .params}} + {{if ne 0 (len .params)}} + {{range $k ,$v := .params}} +
+
+ +
+
+ +
+ + + + +
+ {{end}} + {{end}} + {{end}}
diff --git a/templates/repo/modelarts/inferencejob/new.tmpl b/templates/repo/modelarts/inferencejob/new.tmpl index 89f4180c02..2a8ec9207c 100644 --- a/templates/repo/modelarts/inferencejob/new.tmpl +++ b/templates/repo/modelarts/inferencejob/new.tmpl @@ -99,8 +99,12 @@
-    + + {{if .description}} + + {{else}} + {{end}}
@@ -169,9 +173,22 @@
@@ -251,8 +268,21 @@
diff --git a/templates/repo/modelarts/trainjob/new.tmpl b/templates/repo/modelarts/trainjob/new.tmpl index e89482dc2c..74987a4e2d 100755 --- a/templates/repo/modelarts/trainjob/new.tmpl +++ b/templates/repo/modelarts/trainjob/new.tmpl @@ -128,7 +128,11 @@
+ {{if .description}} + + {{else}} + {{end}}
@@ -170,9 +174,22 @@
@@ -220,7 +237,6 @@
- diff --git a/web_src/js/components/images/selectGrampusImages.vue b/web_src/js/components/images/selectGrampusImages.vue index 5bbc3a43ed..f702c8cca8 100755 --- a/web_src/js/components/images/selectGrampusImages.vue +++ b/web_src/js/components/images/selectGrampusImages.vue @@ -225,6 +225,9 @@ export default { }, }, mounted() { + if (document.getElementById("ai_image_name")) { + this.imageAddress = document.getElementById("ai_image_name").value; + } this.getImageListPublic(); if ( location.href.indexOf("benchmark") !== -1 || diff --git a/web_src/js/components/images/selectImages.vue b/web_src/js/components/images/selectImages.vue index d4eb8d6136..8443034203 100755 --- a/web_src/js/components/images/selectImages.vue +++ b/web_src/js/components/images/selectImages.vue @@ -498,6 +498,9 @@ export default { }, }, mounted() { + if (document.getElementById("ai_image_name")) { + this.imageAddress = document.getElementById("ai_image_name").value; + } this.getImageListPublic(); if ( location.href.indexOf("train-job") !== -1 || -- 2.34.1 From 347bb1a217f49c4253d17552732c9da7838e3eaa Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Thu, 21 Jul 2022 16:06:21 +0800 Subject: [PATCH 028/102] fix issue --- templates/repo/cloudbrain/inference/new.tmpl | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/templates/repo/cloudbrain/inference/new.tmpl b/templates/repo/cloudbrain/inference/new.tmpl index 1126644ec0..d1ef193008 100644 --- a/templates/repo/cloudbrain/inference/new.tmpl +++ b/templates/repo/cloudbrain/inference/new.tmpl @@ -219,22 +219,7 @@ {{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}}
- {{if ne 0 (len .params)}} - {{range $k ,$v := .params}} -
-
- -
-
- -
- - - - -
- {{end}} - {{end}} + {{.params}}
-- 2.34.1 From 8930280c8c502d3187a15390ea8340cddc824980 Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 21 Jul 2022 16:17:39 +0800 Subject: [PATCH 029/102] update --- models/cloudbrain.go | 107 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 85338d2bcd..7b7693eb65 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -2014,3 +2014,110 @@ func GetDatasetInfo(uuidStr string) (map[string]DatasetInfo, string, error) { return datasetInfos, datasetNames, nil } + +var ( + SpecsMapInitFlag = false + CloudbrainDebugResourceSpecsMap map[int]*ResourceSpec + CloudbrainTrainResourceSpecsMap map[int]*ResourceSpec + CloudbrainBenchmarkResourceSpecsMap map[int]*ResourceSpec + ModelArtsDebugResourceSpecsMap map[string]*FlavorInfo + ModelArtsTrainResourceSpecsMap map[string]*FlavorInfo +) + +type ModelArtsFlavor struct { + Info []struct { + Code string `json:"code"` + Value string `json:"value"` + UnitPrice int64 `json:"unitPrice"` + } `json:"flavor"` +} + +func InitResourceSpecMap() { + if CloudbrainDebugResourceSpecsMap == nil || len(CloudbrainDebugResourceSpecsMap) == 0 { + t := ResourceSpecs{} + json.Unmarshal([]byte(setting.ResourceSpecs), &t) + CloudbrainDebugResourceSpecsMap = make(map[int]*ResourceSpec, len(t.ResourceSpec)) + for _, spec := range t.ResourceSpec { + CloudbrainDebugResourceSpecsMap[spec.Id] = spec + } + } + if CloudbrainTrainResourceSpecsMap == nil || len(CloudbrainTrainResourceSpecsMap) == 0 { + t := ResourceSpecs{} + json.Unmarshal([]byte(setting.TrainResourceSpecs), &t) + CloudbrainTrainResourceSpecsMap = make(map[int]*ResourceSpec, len(t.ResourceSpec)) + for _, spec := range t.ResourceSpec { + CloudbrainTrainResourceSpecsMap[spec.Id] = spec + } + } + if CloudbrainBenchmarkResourceSpecsMap == nil || len(CloudbrainBenchmarkResourceSpecsMap) == 0 { + t := ResourceSpecs{} + json.Unmarshal([]byte(setting.BenchmarkResourceSpecs), &t) + CloudbrainBenchmarkResourceSpecsMap = make(map[int]*ResourceSpec, len(t.ResourceSpec)) + for _, spec := range t.ResourceSpec { + CloudbrainBenchmarkResourceSpecsMap[spec.Id] = spec + } + } + if ModelArtsDebugResourceSpecsMap == nil || len(ModelArtsDebugResourceSpecsMap) == 0 { + t := FlavorInfos{} + json.Unmarshal([]byte(setting.FlavorInfos), &t) + ModelArtsDebugResourceSpecsMap = make(map[string]*FlavorInfo, len(t.FlavorInfo)) + for _, spec := range t.FlavorInfo { + ModelArtsDebugResourceSpecsMap[spec.Value] = spec + } + } + if ModelArtsTrainResourceSpecsMap == nil || len(ModelArtsTrainResourceSpecsMap) == 0 { + t := ModelArtsFlavor{} + json.Unmarshal([]byte(setting.TrainJobFLAVORINFOS), &t) + ModelArtsTrainResourceSpecsMap = make(map[string]*FlavorInfo, len(t.Info)) + for _, spec := range t.Info { + f := &FlavorInfo{ + Value: spec.Code, + Desc: spec.Value, + } + ModelArtsTrainResourceSpecsMap[spec.Value] = f + } + } + SpecsMapInitFlag = true +} + +type ResourceAndFlavor struct { + ResourceSpec *ResourceSpec + FlavorInfo *FlavorInfo +} + +func NewResourceAndFlavor(resourceSpec *ResourceSpec, flavorInfo *FlavorInfo) *ResourceAndFlavor { + return &ResourceAndFlavor{ + ResourceSpec: resourceSpec, + FlavorInfo: flavorInfo, + } +} + +func GetCloudbrainResourceSpec(jobType string, clusterType int, resourceSpecId int, flavorCode string) *ResourceAndFlavor { + if !SpecsMapInitFlag { + InitResourceSpecMap() + } + if clusterType == TypeCloudBrainOne { + switch jobType { + case string(JobTypeDebug): + return NewResourceAndFlavor(CloudbrainDebugResourceSpecsMap[resourceSpecId], nil) + case string(JobTypeTrain): + return NewResourceAndFlavor(CloudbrainTrainResourceSpecsMap[resourceSpecId], nil) + case string(JobTypeBenchmark): + return NewResourceAndFlavor(CloudbrainBenchmarkResourceSpecsMap[resourceSpecId], nil) + + } + } else if clusterType == TypeCloudBrainTwo { + switch jobType { + case string(JobTypeDebug): + return NewResourceAndFlavor(nil, ModelArtsDebugResourceSpecsMap[flavorCode]) + case string(JobTypeTrain): + return NewResourceAndFlavor(nil, ModelArtsTrainResourceSpecsMap[flavorCode]) + case string(JobTypeInference): + return NewResourceAndFlavor(nil, ModelArtsTrainResourceSpecsMap[flavorCode]) + + } + } + + return nil + +} -- 2.34.1 From aa631ec99a848aaa4e6dfc75d1e10ec1065556e6 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Thu, 21 Jul 2022 16:42:09 +0800 Subject: [PATCH 030/102] #2479 update wechat template msg --- models/cloudbrain.go | 11 ++++- modules/auth/wechat/client.go | 4 -- modules/auth/wechat/template.go | 64 +++++++++++++++++++++------ modules/notification/base/notifier.go | 2 + modules/notification/base/null.go | 4 ++ modules/notification/notification.go | 9 ++++ modules/notification/wechat/wechat.go | 38 ++++++++++++++++ modules/setting/setting.go | 4 +- routers/api/v1/repo/cloudbrain.go | 11 ++++- routers/api/v1/repo/modelarts.go | 20 +++++++-- routers/repo/cloudbrain.go | 33 +++++++++++++- routers/repo/grampus.go | 10 ++++- routers/repo/modelarts.go | 6 +++ 13 files changed, 189 insertions(+), 27 deletions(-) create mode 100644 modules/notification/wechat/wechat.go diff --git a/models/cloudbrain.go b/models/cloudbrain.go index af53bad325..f32ad5870f 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -206,7 +206,16 @@ func (task *Cloudbrain) CorrectCreateUnix() { func (task *Cloudbrain) IsTerminal() bool { status := task.Status - return status == string(ModelArtsTrainJobCompleted) || status == string(ModelArtsTrainJobFailed) || status == string(ModelArtsTrainJobKilled) || status == string(ModelArtsStopped) || status == string(JobStopped) || status == string(JobFailed) || status == string(JobSucceeded) + return status == string(ModelArtsTrainJobCompleted) || status == string(ModelArtsTrainJobFailed) || + status == string(ModelArtsTrainJobKilled) || status == string(ModelArtsStopped) || + status == string(JobStopped) || status == string(JobFailed) || + status == string(JobSucceeded) || status == GrampusStatusFailed || + status == GrampusStatusSucceeded || status == GrampusStatusStopped +} +func (task *Cloudbrain) IsRunning() bool { + status := task.Status + return status == string(ModelArtsTrainJobRunning) || status == string(ModelArtsRunning) || + status == string(JobRunning) || status == GrampusStatusRunning } func ConvertDurationToStr(duration int64) string { diff --git a/modules/auth/wechat/client.go b/modules/auth/wechat/client.go index e137c123fd..bb6db09d09 100644 --- a/modules/auth/wechat/client.go +++ b/modules/auth/wechat/client.go @@ -4,7 +4,6 @@ import ( "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" "encoding/json" - "errors" "fmt" "github.com/go-resty/resty/v2" "strconv" @@ -206,8 +205,5 @@ func sendTemplateMsg(req TemplateMsgRequest) (error, bool) { if errcode == fmt.Sprint(ERR_CODE_ACCESSTOKEN_EXPIRE) || errcode == fmt.Sprint(ERR_CODE_ACCESSTOKEN_INVALID) { return nil, true } - if errcode != "" { - return errors.New(fmt.Sprintf("sendTemplateMsg error[%s]", errcode)), false - } return nil, false } diff --git a/modules/auth/wechat/template.go b/modules/auth/wechat/template.go index 157f0d92ff..7e5f7cd060 100644 --- a/modules/auth/wechat/template.go +++ b/modules/auth/wechat/template.go @@ -12,12 +12,39 @@ import ( type JobOperateType string const ( - JobOperateTypeStart JobOperateType = "start" - JobOperateTypeStop JobOperateType = "stop" - JobOperateTypeFailed JobOperateType = "failed" + JobOperateTypeStart JobOperateType = "start" + JobOperateTypeStop JobOperateType = "stop" ) -func SendCloudbrainTemplateMsg(operateType JobOperateType, cloudbrain models.Cloudbrain, date time.Time) error { +func GetJobOperateTypeFromCloudbrainStatus(cloudbrain *models.Cloudbrain) JobOperateType { + if cloudbrain.IsTerminal() { + return JobOperateTypeStop + } + if cloudbrain.IsRunning() { + return JobOperateTypeStart + } + return "" +} + +func SendCloudbrainStartedMsg(operateType JobOperateType, cloudbrain models.Cloudbrain, date time.Time) error { + defer func() { + if err := recover(); err != nil { + combinedErr := fmt.Errorf("%s\n%s", err, log.Stack(2)) + log.Error("PANIC:", combinedErr) + } + }() + repo, err := models.GetRepositoryByID(cloudbrain.RepoID) + if err != nil { + log.Error("SendCloudbrainStartedMsg GetRepositoryByID error,%v", err) + } + + if setting.CloudbrainStartedTemplateId == "" { + return nil + } + + if date.IsZero() { + date = time.Now() + } openId := models.GetUserWechatOpenId(cloudbrain.UserID) if openId == "" { return errors.New("Wechat openId not exist") @@ -27,12 +54,12 @@ func SendCloudbrainTemplateMsg(operateType JobOperateType, cloudbrain models.Clo Keyword1: TemplateValue{Value: cloudbrain.DisplayJobName}, Keyword2: TemplateValue{Value: getJobTypeDisplayName(cloudbrain.JobType)}, Keyword3: TemplateValue{Value: date.Format("2006-01-02 15:04:05")}, - Remark: TemplateValue{Value: cloudbrain.DisplayJobName}, + Remark: TemplateValue{Value: getCloudbrainTemplateRemark(operateType)}, } req := TemplateMsgRequest{ ToUser: openId, - TemplateId: setting.CloudbrainTemplateId, - Url: getCloudbrainTemplateUrl(cloudbrain), + TemplateId: setting.CloudbrainStartedTemplateId, + Url: getCloudbrainTemplateUrl(cloudbrain, repo), ClientMsgId: string(operateType) + "_" + fmt.Sprint(cloudbrain.ID), Data: data, } @@ -42,20 +69,20 @@ func SendCloudbrainTemplateMsg(operateType JobOperateType, cloudbrain models.Clo refreshAccessToken() err, _ = sendTemplateMsg(req) if err != nil { - log.Error("SendCloudbrainTemplateMsg err. %v", err) + log.Error("SendCloudbrainStartedMsg err. %v", err) return err } return nil } if err != nil { - log.Error("SendCloudbrainTemplateMsg err. %v", err) + log.Error("SendCloudbrainStartedMsg err. %v", err) return err } return nil } -func getCloudbrainTemplateUrl(cloudbrain models.Cloudbrain) string { - url := setting.AppURL +func getCloudbrainTemplateUrl(cloudbrain models.Cloudbrain, repo *models.Repository) string { + url := setting.AppURL + repo.FullName() switch cloudbrain.JobType { case string(models.JobTypeDebug): @@ -85,8 +112,6 @@ func getCloudbrainTemplateTitle(operateType JobOperateType) string { switch operateType { case JobOperateTypeStart: title = "您好,您提交的算力资源申请已通过,任务已启动,请您关注运行情况。" - case JobOperateTypeFailed: - title = "您好,您提交的任务启动失败,您可以通过日志查看失败原因。" case JobOperateTypeStop: title = "您好,您提交的任务已运行结束。" } @@ -95,6 +120,19 @@ func getCloudbrainTemplateTitle(operateType JobOperateType) string { } +func getCloudbrainTemplateRemark(operateType JobOperateType) string { + var remark string + switch operateType { + case JobOperateTypeStart: + remark = "感谢您的耐心等待。" + case JobOperateTypeStop: + remark = "点击可查看运行结果" + } + + return remark + +} + func getJobTypeDisplayName(jobType string) string { switch jobType { case string(models.JobTypeDebug): diff --git a/modules/notification/base/notifier.go b/modules/notification/base/notifier.go index 8d6fdeb529..3bdc29d466 100644 --- a/modules/notification/base/notifier.go +++ b/modules/notification/base/notifier.go @@ -56,4 +56,6 @@ type Notifier interface { NotifySyncDeleteRef(doer *models.User, repo *models.Repository, refType, refFullName string) NotifyOtherTask(doer *models.User, repo *models.Repository, id string, name string, optype models.ActionType) + + NotifyChangeCloudbrainStatus(cloudbrain *models.Cloudbrain, oldStatus string) } diff --git a/modules/notification/base/null.go b/modules/notification/base/null.go index 0d3489882d..6a24963d25 100644 --- a/modules/notification/base/null.go +++ b/modules/notification/base/null.go @@ -158,3 +158,7 @@ func (*NullNotifier) NotifySyncDeleteRef(doer *models.User, repo *models.Reposit func (*NullNotifier) NotifyOtherTask(doer *models.User, repo *models.Repository, id string, name string, optype models.ActionType) { } + +func (*NullNotifier) NotifyChangeCloudbrainStatus(cloudbrain *models.Cloudbrain, oldStatus string) { + +} diff --git a/modules/notification/notification.go b/modules/notification/notification.go index 0fd6fa4719..b6d925f07c 100644 --- a/modules/notification/notification.go +++ b/modules/notification/notification.go @@ -12,6 +12,7 @@ import ( "code.gitea.io/gitea/modules/notification/mail" "code.gitea.io/gitea/modules/notification/ui" "code.gitea.io/gitea/modules/notification/webhook" + wechatNotifier "code.gitea.io/gitea/modules/notification/wechat" "code.gitea.io/gitea/modules/repository" "code.gitea.io/gitea/modules/setting" ) @@ -35,6 +36,7 @@ func NewContext() { RegisterNotifier(indexer.NewNotifier()) RegisterNotifier(webhook.NewNotifier()) RegisterNotifier(action.NewNotifier()) + RegisterNotifier(wechatNotifier.NewNotifier()) } // NotifyUploadAttachment notifies attachment upload message to notifiers @@ -269,3 +271,10 @@ func NotifySyncDeleteRef(pusher *models.User, repo *models.Repository, refType, notifier.NotifySyncDeleteRef(pusher, repo, refType, refFullName) } } + +// NotifyChangeCloudbrainStatus +func NotifyChangeCloudbrainStatus(cloudbrain *models.Cloudbrain, oldStatus string) { + for _, notifier := range notifiers { + notifier.NotifyChangeCloudbrainStatus(cloudbrain, oldStatus) + } +} diff --git a/modules/notification/wechat/wechat.go b/modules/notification/wechat/wechat.go new file mode 100644 index 0000000000..c995d9433c --- /dev/null +++ b/modules/notification/wechat/wechat.go @@ -0,0 +1,38 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package mail + +import ( + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/auth/wechat" + "code.gitea.io/gitea/modules/notification/base" + "time" +) + +type wechatNotifier struct { + base.NullNotifier +} + +var ( + _ base.Notifier = &wechatNotifier{} +) + +// NewNotifier create a new wechatNotifier notifier +func NewNotifier() base.Notifier { + return &wechatNotifier{} +} + +func (*wechatNotifier) NotifyChangeCloudbrainStatus(cloudbrain *models.Cloudbrain, oldStatus string) { + operateType := wechat.GetJobOperateTypeFromCloudbrainStatus(cloudbrain) + if operateType == "" { + return + } + switch operateType { + case wechat.JobOperateTypeStart: + if cloudbrain.JobType == string(models.JobTypeDebug) { + go wechat.SendCloudbrainStartedMsg(operateType, *cloudbrain, time.Unix(int64(cloudbrain.StartTime), 0)) + } + } +} diff --git a/modules/setting/setting.go b/modules/setting/setting.go index c0c5c715f2..35789c18be 100755 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -583,7 +583,7 @@ var ( TreePathOfSubscribe string //wechat template msg config - CloudbrainTemplateId string + CloudbrainStartedTemplateId string //nginx proxy PROXYURL string @@ -1443,7 +1443,7 @@ func NewContext() { RefNameOfWechatReply = sec.Key("AUTO_REPLY_REF_NAME").MustString("master") TreePathOfAutoMsgReply = sec.Key("AUTO_REPLY_TREE_PATH").MustString("wechat/auto_reply.json") TreePathOfSubscribe = sec.Key("SUBSCRIBE_TREE_PATH").MustString("wechat/subscribe_reply.json") - CloudbrainTemplateId = sec.Key("CLOUDBRAIN_TEMPLATE_ID").MustString("4qtOaImiFnzIrzLxxP99lYc12EYxvtAE1fNqd7fcihw") + CloudbrainStartedTemplateId = sec.Key("CLOUDBRAIN_STARTED_TEMPLATE_ID").MustString("") SetRadarMapConfig() diff --git a/routers/api/v1/repo/cloudbrain.go b/routers/api/v1/repo/cloudbrain.go index d291024f99..caa0660cd6 100755 --- a/routers/api/v1/repo/cloudbrain.go +++ b/routers/api/v1/repo/cloudbrain.go @@ -6,6 +6,7 @@ package repo import ( + "code.gitea.io/gitea/modules/notification" "encoding/json" "net/http" "sort" @@ -74,7 +75,7 @@ func GetCloudbrainTask(ctx *context.APIContext) { log.Error("ConvertToJobResultPayload failed:", err) return } - + oldStatus := job.Status job.Status = result.JobStatus.State taskRoles := result.TaskRoles taskRes, _ := models.ConvertToTaskPod(taskRoles[cloudbrain.SubTaskName].(map[string]interface{})) @@ -86,6 +87,9 @@ func GetCloudbrainTask(ctx *context.APIContext) { if result.JobStatus.State != string(models.JobWaiting) { models.ParseAndSetDurationFromCloudBrainOne(result, job) + if oldStatus != job.Status { + notification.NotifyChangeCloudbrainStatus(job, oldStatus) + } err = models.UpdateJob(job) if err != nil { log.Error("UpdateJob failed:", err) @@ -123,7 +127,7 @@ func GetCloudBrainInferenceJob(ctx *context.APIContext) { log.Error("ConvertToJobResultPayload failed:", err) return } - + oldStatus := job.Status job.Status = result.JobStatus.State if result.JobStatus.State != string(models.JobWaiting) && result.JobStatus.State != string(models.JobFailed) { taskRoles := result.TaskRoles @@ -136,6 +140,9 @@ func GetCloudBrainInferenceJob(ctx *context.APIContext) { if result.JobStatus.State != string(models.JobWaiting) { models.ParseAndSetDurationFromCloudBrainOne(result, job) + if oldStatus != job.Status { + notification.NotifyChangeCloudbrainStatus(job, oldStatus) + } err = models.UpdateJob(job) if err != nil { log.Error("UpdateJob failed:", err) diff --git a/routers/api/v1/repo/modelarts.go b/routers/api/v1/repo/modelarts.go index 187c16c50f..54220fbcae 100755 --- a/routers/api/v1/repo/modelarts.go +++ b/routers/api/v1/repo/modelarts.go @@ -6,6 +6,7 @@ package repo import ( + "code.gitea.io/gitea/modules/notification" "encoding/json" "net/http" "path" @@ -42,8 +43,11 @@ func GetModelArtsNotebook(ctx *context.APIContext) { ctx.NotFound(err) return } - + oldStatus := job.Status job.Status = result.Status + if oldStatus != result.Status { + notification.NotifyChangeCloudbrainStatus(job, oldStatus) + } err = models.UpdateJob(job) if err != nil { log.Error("UpdateJob failed:", err) @@ -75,12 +79,16 @@ func GetModelArtsNotebook2(ctx *context.APIContext) { if job.StartTime == 0 && result.Lease.UpdateTime > 0 { job.StartTime = timeutil.TimeStamp(result.Lease.UpdateTime / 1000) } + oldStatus := job.Status job.Status = result.Status if job.EndTime == 0 && models.IsModelArtsDebugJobTerminal(job.Status) { job.EndTime = timeutil.TimeStampNow() } job.CorrectCreateUnix() job.ComputeAndSetDuration() + if oldStatus != result.Status { + notification.NotifyChangeCloudbrainStatus(job, oldStatus) + } err = models.UpdateJob(job) if err != nil { log.Error("UpdateJob failed:", err) @@ -111,10 +119,13 @@ func GetModelArtsTrainJob(ctx *context.APIContext) { ctx.NotFound(err) return } - + oldStatus := job.Status job.Status = modelarts.TransTrainJobStatus(result.IntStatus) job.Duration = result.Duration job.TrainJobDuration = result.TrainJobDuration + if oldStatus != job.Status { + notification.NotifyChangeCloudbrainStatus(job, oldStatus) + } err = models.UpdateJob(job) if err != nil { log.Error("UpdateJob failed:", err) @@ -155,7 +166,7 @@ func GetModelArtsTrainJobVersion(ctx *context.APIContext) { log.Error("ConvertToJobResultPayload failed:", err) return } - + oldStatus := job.Status job.Status = result.JobStatus.State if result.JobStatus.State != string(models.JobWaiting) && result.JobStatus.State != string(models.JobFailed) { taskRoles := result.TaskRoles @@ -168,6 +179,9 @@ func GetModelArtsTrainJobVersion(ctx *context.APIContext) { if result.JobStatus.State != string(models.JobWaiting) { models.ParseAndSetDurationFromCloudBrainOne(result, job) + if oldStatus != job.Status { + notification.NotifyChangeCloudbrainStatus(job, oldStatus) + } err = models.UpdateJob(job) if err != nil { log.Error("UpdateJob failed:", err) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 59ee082786..da98016645 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -2,6 +2,7 @@ package repo import ( "bufio" + "code.gitea.io/gitea/modules/notification" "encoding/json" "errors" "fmt" @@ -784,12 +785,16 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName, jobType models.Jo taskRes, _ := models.ConvertToTaskPod(taskRoles[cloudbrain.SubTaskName].(map[string]interface{})) ctx.Data["taskRes"] = taskRes ctx.Data["ExitDiagnostics"] = taskRes.TaskStatuses[0].ExitDiagnostics + oldStatus := task.Status task.Status = taskRes.TaskStatuses[0].State task.ContainerID = taskRes.TaskStatuses[0].ContainerID task.ContainerIp = taskRes.TaskStatuses[0].ContainerIP models.ParseAndSetDurationFromCloudBrainOne(jobRes, task) if task.DeletedAt.IsZero() { //normal record + if oldStatus != task.Status { + notification.NotifyChangeCloudbrainStatus(task, oldStatus) + } err = models.UpdateJob(task) if err != nil { ctx.Data["error"] = err.Error() @@ -1143,12 +1148,15 @@ func CloudBrainStop(ctx *context.Context) { errorMsg = "cloudbrain.Stopped_failed" break } - + oldStatus := task.Status task.Status = string(models.JobStopped) if task.EndTime == 0 { task.EndTime = timeutil.TimeStampNow() } task.ComputeAndSetDuration() + if oldStatus != task.Status { + notification.NotifyChangeCloudbrainStatus(task, oldStatus) + } err = models.UpdateJob(task) if err != nil { log.Error("UpdateJob(%s) failed:%v", task.JobName, err, ctx.Data["msgID"]) @@ -1242,11 +1250,15 @@ func logErrorAndUpdateJobStatus(err error, taskInfo *models.Cloudbrain) { if err != nil { log.Warn("Failed to stop cloudBrain job:"+taskInfo.JobID, err) } else { + oldStatus := taskInfo.Status taskInfo.Status = string(models.JobStopped) if taskInfo.EndTime == 0 { taskInfo.EndTime = timeutil.TimeStampNow() } taskInfo.ComputeAndSetDuration() + if oldStatus != taskInfo.Status { + notification.NotifyChangeCloudbrainStatus(taskInfo, oldStatus) + } err = models.UpdateJob(taskInfo) if err != nil { log.Warn("UpdateJob failed", err) @@ -1726,9 +1738,13 @@ func SyncCloudbrainStatus() { jobRes, _ := models.ConvertToJobResultPayload(result.Payload) taskRoles := jobRes.TaskRoles taskRes, _ := models.ConvertToTaskPod(taskRoles[cloudbrain.SubTaskName].(map[string]interface{})) + oldStatus := task.Status task.Status = taskRes.TaskStatuses[0].State if task.Status != string(models.JobWaiting) { models.ParseAndSetDurationFromCloudBrainOne(jobRes, task) + if oldStatus != task.Status { + notification.NotifyChangeCloudbrainStatus(task, oldStatus) + } err = models.UpdateJob(task) if err != nil { log.Error("UpdateJob(%s) failed:%v", task.JobName, err) @@ -1755,6 +1771,9 @@ func SyncCloudbrainStatus() { task.EndTime = timeutil.TimeStampNow() } task.ComputeAndSetDuration() + if oldStatus != task.Status { + notification.NotifyChangeCloudbrainStatus(task, oldStatus) + } err = models.UpdateJob(task) if err != nil { log.Error("UpdateJob(%s) failed:%v", task.DisplayJobName, err) @@ -1773,6 +1792,7 @@ func SyncCloudbrainStatus() { } if result != nil { + oldStatus := task.Status task.Status = result.Status if task.StartTime == 0 && result.Lease.UpdateTime > 0 { task.StartTime = timeutil.TimeStamp(result.Lease.UpdateTime / 1000) @@ -1782,6 +1802,9 @@ func SyncCloudbrainStatus() { } task.CorrectCreateUnix() task.ComputeAndSetDuration() + if oldStatus != task.Status { + notification.NotifyChangeCloudbrainStatus(task, oldStatus) + } err = models.UpdateJob(task) if err != nil { log.Error("UpdateJob(%s) failed:%v", task.JobName, err) @@ -1796,6 +1819,7 @@ func SyncCloudbrainStatus() { } if result != nil { + oldStatus := task.Status task.Status = modelarts.TransTrainJobStatus(result.IntStatus) task.Duration = result.Duration / 1000 task.TrainJobDuration = result.TrainJobDuration @@ -1808,6 +1832,9 @@ func SyncCloudbrainStatus() { task.EndTime = task.StartTime.Add(task.Duration) } task.CorrectCreateUnix() + if oldStatus != task.Status { + notification.NotifyChangeCloudbrainStatus(task, oldStatus) + } err = models.UpdateJob(task) if err != nil { log.Error("UpdateJob(%s) failed:%v", task.JobName, err) @@ -1828,6 +1855,7 @@ func SyncCloudbrainStatus() { if len(result.JobInfo.Tasks[0].CenterID) == 1 && len(result.JobInfo.Tasks[0].CenterName) == 1 { task.AiCenter = result.JobInfo.Tasks[0].CenterID[0] + "+" + result.JobInfo.Tasks[0].CenterName[0] } + oldStatus := task.Status task.Status = grampus.TransTrainJobStatus(result.JobInfo.Status) task.Duration = result.JobInfo.RunSec task.TrainJobDuration = models.ConvertDurationToStr(task.Duration) @@ -1839,6 +1867,9 @@ func SyncCloudbrainStatus() { task.EndTime = task.StartTime.Add(task.Duration) } task.CorrectCreateUnix() + if oldStatus != task.Status { + notification.NotifyChangeCloudbrainStatus(task, oldStatus) + } err = models.UpdateJob(task) if err != nil { log.Error("UpdateJob(%s) failed:%v", task.JobName, err) diff --git a/routers/repo/grampus.go b/routers/repo/grampus.go index 7d6aa1c30c..53fd9be306 100755 --- a/routers/repo/grampus.go +++ b/routers/repo/grampus.go @@ -5,6 +5,7 @@ import ( "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/grampus" "code.gitea.io/gitea/modules/modelarts" + "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/util" "encoding/json" @@ -550,12 +551,15 @@ func GrampusStopJob(ctx *context.Context) { errorMsg = res.ErrorMsg break } - + oldStatus := task.Status task.Status = string(models.GrampusStatusStopped) if task.EndTime == 0 { task.EndTime = timeutil.TimeStampNow() } task.ComputeAndSetDuration() + if oldStatus != task.Status { + notification.NotifyChangeCloudbrainStatus(task, oldStatus) + } err = models.UpdateJob(task) if err != nil { log.Error("UpdateJob(%s) failed:%v", task.JobName, err, ctx.Data["msgID"]) @@ -642,6 +646,7 @@ func GrampusTrainJobShow(ctx *context.Context) { if len(result.JobInfo.Tasks[0].CenterID) == 1 && len(result.JobInfo.Tasks[0].CenterName) == 1 { task.AiCenter = result.JobInfo.Tasks[0].CenterID[0] + "+" + result.JobInfo.Tasks[0].CenterName[0] } + oldStatus := task.Status task.Status = grampus.TransTrainJobStatus(result.JobInfo.Status) if task.Status != result.JobInfo.Status || result.JobInfo.Status == models.GrampusStatusRunning { task.Duration = result.JobInfo.RunSec @@ -654,6 +659,9 @@ func GrampusTrainJobShow(ctx *context.Context) { task.EndTime = task.StartTime.Add(task.Duration) } task.CorrectCreateUnix() + if oldStatus != task.Status { + notification.NotifyChangeCloudbrainStatus(task, oldStatus) + } err = models.UpdateJob(task) if err != nil { log.Error("UpdateJob failed:" + err.Error()) diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index ccdc313370..88bf0d22ad 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -272,8 +272,10 @@ func NotebookShow(ctx *context.Context) { if result != nil { if task.DeletedAt.IsZero() { //normal record if task.Status != result.Status { + oldStatus := task.Status task.Status = result.Status models.ParseAndSetDurationFromModelArtsNotebook(result, task) + notification.NotifyChangeCloudbrainStatus(task, oldStatus) err = models.UpdateJob(task) if err != nil { log.Error("GET job error", err.Error()) @@ -510,11 +512,15 @@ func NotebookManage(ctx *context.Context) { ID = strconv.FormatInt(newTask.ID, 10) notification.NotifyOtherTask(ctx.User, ctx.Repo.Repository, ID, task.DisplayJobName, models.ActionCreateDebugNPUTask) } else { + oldStatus := task.Status task.Status = res.Status if task.EndTime == 0 && models.IsModelArtsDebugJobTerminal(task.Status) { task.EndTime = timeutil.TimeStampNow() } task.ComputeAndSetDuration() + if oldStatus != task.Status { + notification.NotifyChangeCloudbrainStatus(task, oldStatus) + } err = models.UpdateJob(task) if err != nil { log.Error("UpdateJob(%s) failed:%v", task.JobName, err.Error(), ctx.Data["MsgID"]) -- 2.34.1 From 11a1099cdee15b01b75d335dffc8454b213af730 Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Thu, 21 Jul 2022 17:16:32 +0800 Subject: [PATCH 031/102] fix issue --- templates/repo/cloudbrain/inference/new.tmpl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/templates/repo/cloudbrain/inference/new.tmpl b/templates/repo/cloudbrain/inference/new.tmpl index d1ef193008..cfdbc6e750 100644 --- a/templates/repo/cloudbrain/inference/new.tmpl +++ b/templates/repo/cloudbrain/inference/new.tmpl @@ -59,6 +59,16 @@ {{.CsrfTokenHtml}} + {{if $.model_version}} + + {{else}} + + {{end}} + {{if $.label_names}} + + {{else}} + + {{end}}

{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:

-- 2.34.1 From 132030bc04afca71075e4f7d6a63a8841c2ef86b Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Thu, 21 Jul 2022 17:18:43 +0800 Subject: [PATCH 032/102] #2479 update --- modules/auth/wechat/template.go | 7 ++----- modules/notification/wechat/wechat.go | 12 +++++++++--- modules/setting/setting.go | 2 ++ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/modules/auth/wechat/template.go b/modules/auth/wechat/template.go index 7e5f7cd060..0620aa7b9b 100644 --- a/modules/auth/wechat/template.go +++ b/modules/auth/wechat/template.go @@ -26,7 +26,7 @@ func GetJobOperateTypeFromCloudbrainStatus(cloudbrain *models.Cloudbrain) JobOpe return "" } -func SendCloudbrainStartedMsg(operateType JobOperateType, cloudbrain models.Cloudbrain, date time.Time) error { +func SendCloudbrainStartedMsg(operateType JobOperateType, cloudbrain models.Cloudbrain) error { defer func() { if err := recover(); err != nil { combinedErr := fmt.Errorf("%s\n%s", err, log.Stack(2)) @@ -42,9 +42,6 @@ func SendCloudbrainStartedMsg(operateType JobOperateType, cloudbrain models.Clou return nil } - if date.IsZero() { - date = time.Now() - } openId := models.GetUserWechatOpenId(cloudbrain.UserID) if openId == "" { return errors.New("Wechat openId not exist") @@ -53,7 +50,7 @@ func SendCloudbrainStartedMsg(operateType JobOperateType, cloudbrain models.Clou First: TemplateValue{Value: getCloudbrainTemplateTitle(operateType)}, Keyword1: TemplateValue{Value: cloudbrain.DisplayJobName}, Keyword2: TemplateValue{Value: getJobTypeDisplayName(cloudbrain.JobType)}, - Keyword3: TemplateValue{Value: date.Format("2006-01-02 15:04:05")}, + Keyword3: TemplateValue{Value: time.Unix(int64(cloudbrain.CreatedUnix), 0).Format("2006-01-02 15:04:05")}, Remark: TemplateValue{Value: getCloudbrainTemplateRemark(operateType)}, } req := TemplateMsgRequest{ diff --git a/modules/notification/wechat/wechat.go b/modules/notification/wechat/wechat.go index c995d9433c..c20be8e9b1 100644 --- a/modules/notification/wechat/wechat.go +++ b/modules/notification/wechat/wechat.go @@ -8,7 +8,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth/wechat" "code.gitea.io/gitea/modules/notification/base" - "time" + "code.gitea.io/gitea/modules/setting" ) type wechatNotifier struct { @@ -31,8 +31,14 @@ func (*wechatNotifier) NotifyChangeCloudbrainStatus(cloudbrain *models.Cloudbrai } switch operateType { case wechat.JobOperateTypeStart: - if cloudbrain.JobType == string(models.JobTypeDebug) { - go wechat.SendCloudbrainStartedMsg(operateType, *cloudbrain, time.Unix(int64(cloudbrain.StartTime), 0)) + if len(setting.CloudbrainStartedNotifyList) == 0 { + return + } + for _, v := range setting.CloudbrainStartedNotifyList { + if v == cloudbrain.JobType { + go wechat.SendCloudbrainStartedMsg(operateType, *cloudbrain) + return + } } } } diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 35789c18be..609832e7eb 100755 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -584,6 +584,7 @@ var ( //wechat template msg config CloudbrainStartedTemplateId string + CloudbrainStartedNotifyList []string //nginx proxy PROXYURL string @@ -1444,6 +1445,7 @@ func NewContext() { TreePathOfAutoMsgReply = sec.Key("AUTO_REPLY_TREE_PATH").MustString("wechat/auto_reply.json") TreePathOfSubscribe = sec.Key("SUBSCRIBE_TREE_PATH").MustString("wechat/subscribe_reply.json") CloudbrainStartedTemplateId = sec.Key("CLOUDBRAIN_STARTED_TEMPLATE_ID").MustString("") + CloudbrainStartedNotifyList = strings.Split(sec.Key("CLOUDBRAIN_STARTED_NOTIFY_LIST").MustString("DEBUG"), ",") SetRadarMapConfig() -- 2.34.1 From 17b5416cbb3b24546db36196b41098bc0c5ae003 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Thu, 21 Jul 2022 17:32:35 +0800 Subject: [PATCH 033/102] #2479 update --- modules/setting/setting.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 609832e7eb..f63088091a 100755 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -1436,7 +1436,7 @@ func NewContext() { WechatApiHost = sec.Key("HOST").MustString("https://api.weixin.qq.com") WechatApiTimeoutSeconds = sec.Key("TIMEOUT_SECONDS").MustInt(3) WechatAppId = sec.Key("APP_ID").MustString("wxba77b915a305a57d") - WechatAppSecret = sec.Key("APP_SECRET").MustString("e48e13f315adc32749ddc7057585f198") + WechatAppSecret = sec.Key("APP_SECRET").MustString("") WechatQRCodeExpireSeconds = sec.Key("QR_CODE_EXPIRE_SECONDS").MustInt(120) WechatAuthSwitch = sec.Key("AUTH_SWITCH").MustBool(true) UserNameOfWechatReply = sec.Key("AUTO_REPLY_USER_NAME").MustString("OpenIOSSG") -- 2.34.1 From cf09a72b8344d6a47be49218a0d3e3b5a91b91b8 Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 21 Jul 2022 18:02:00 +0800 Subject: [PATCH 034/102] updata --- routers/repo/cloudbrain.go | 1 + 1 file changed, 1 insertion(+) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 58087a4f67..9f985e2691 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -652,6 +652,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra } if !jobNamePattern.MatchString(displayJobName) { + cloudBrainInferenceJobErrorPrepare(ctx, form) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tpl, &form) return } -- 2.34.1 From ecce77575235be3124410408febd725eab49f643 Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Thu, 21 Jul 2022 19:07:16 +0800 Subject: [PATCH 035/102] fix issue --- templates/repo/cloudbrain/inference/new.tmpl | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/templates/repo/cloudbrain/inference/new.tmpl b/templates/repo/cloudbrain/inference/new.tmpl index cfdbc6e750..2dbb175bd6 100644 --- a/templates/repo/cloudbrain/inference/new.tmpl +++ b/templates/repo/cloudbrain/inference/new.tmpl @@ -229,7 +229,22 @@ {{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}}
- {{.params}} + {{if ne 0 (len .params)}} + {{range $k ,$v := .params}} +
+
+ +
+
+ +
+ + + + +
+ {{end}} + {{end}}
-- 2.34.1 From 88cee1d1d19642d3c7d2b2d7aa64752569ecc575 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Fri, 22 Jul 2022 09:11:15 +0800 Subject: [PATCH 036/102] #2479 update --- modules/auth/wechat/template.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/auth/wechat/template.go b/modules/auth/wechat/template.go index 0620aa7b9b..6c19651a66 100644 --- a/modules/auth/wechat/template.go +++ b/modules/auth/wechat/template.go @@ -94,7 +94,7 @@ func getCloudbrainTemplateUrl(cloudbrain models.Cloudbrain, repo *models.Reposit if cloudbrain.Type == models.TypeCloudBrainOne { url += "/cloudbrain/train-job/" + fmt.Sprint(cloudbrain.JobID) } else if cloudbrain.Type == models.TypeCloudBrainTwo { - url += "/modelarts/train-job" + fmt.Sprint(cloudbrain.JobID) + url += "/modelarts/train-job/" + fmt.Sprint(cloudbrain.JobID) } else if cloudbrain.Type == models.TypeC2Net { url += "/grampus/train-job/" + fmt.Sprint(cloudbrain.JobID) } -- 2.34.1 From bf813e8c6be531e2b53fc5f9e8117faf26467294 Mon Sep 17 00:00:00 2001 From: chenshihai Date: Fri, 22 Jul 2022 09:13:56 +0800 Subject: [PATCH 037/102] update kanban entry menu --- templates/base/head_navbar.tmpl | 6 ++++-- templates/base/head_navbar_fluid.tmpl | 6 ++++-- templates/base/head_navbar_home.tmpl | 6 ++++-- templates/base/head_navbar_pro.tmpl | 6 ++++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/templates/base/head_navbar.tmpl b/templates/base/head_navbar.tmpl index 51761a7e5e..8dcca349cb 100755 --- a/templates/base/head_navbar.tmpl +++ b/templates/base/head_navbar.tmpl @@ -42,7 +42,8 @@
{{.i18n.Tr "explore.organizations"}} {{.i18n.Tr "explore.images"}} {{if .IsOperator}} - {{.i18n.Tr "explore.data_analysis"}} + {{/* {{.i18n.Tr "explore.data_analysis"}} */}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} @@ -73,7 +74,8 @@ {{.i18n.Tr "explore.organizations"}} {{.i18n.Tr "explore.images"}} {{if .IsOperator}} - {{.i18n.Tr "explore.data_analysis"}} + {{/* {{.i18n.Tr "explore.data_analysis"}} */}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} diff --git a/templates/base/head_navbar_fluid.tmpl b/templates/base/head_navbar_fluid.tmpl index 6baeced54c..263e5333a4 100644 --- a/templates/base/head_navbar_fluid.tmpl +++ b/templates/base/head_navbar_fluid.tmpl @@ -41,7 +41,8 @@ {{.i18n.Tr "explore.organizations"}} {{.i18n.Tr "explore.images"}} {{if .IsOperator}} - {{.i18n.Tr "explore.data_analysis"}} + {{/* {{.i18n.Tr "explore.data_analysis"}} */}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} @@ -71,7 +72,8 @@ {{.i18n.Tr "explore.organizations"}} {{.i18n.Tr "explore.images"}} {{if .IsOperator}} - {{.i18n.Tr "explore.data_analysis"}} + {{/* {{.i18n.Tr "explore.data_analysis"}} */}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} diff --git a/templates/base/head_navbar_home.tmpl b/templates/base/head_navbar_home.tmpl index c9ea13b8a3..fb5868dcea 100644 --- a/templates/base/head_navbar_home.tmpl +++ b/templates/base/head_navbar_home.tmpl @@ -33,7 +33,8 @@ {{.i18n.Tr "explore.organizations"}} {{.i18n.Tr "explore.images"}} {{if .IsOperator}} - {{.i18n.Tr "explore.data_analysis"}} + {{/* {{.i18n.Tr "explore.data_analysis"}} */}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} @@ -64,7 +65,8 @@ {{.i18n.Tr "explore.organizations"}} {{.i18n.Tr "explore.images"}} {{if .IsOperator}} - {{.i18n.Tr "explore.data_analysis"}} + {{/* {{.i18n.Tr "explore.data_analysis"}} */}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} diff --git a/templates/base/head_navbar_pro.tmpl b/templates/base/head_navbar_pro.tmpl index e744508f09..340f50f6b1 100644 --- a/templates/base/head_navbar_pro.tmpl +++ b/templates/base/head_navbar_pro.tmpl @@ -43,7 +43,8 @@ {{.i18n.Tr "explore.organizations"}} {{.i18n.Tr "explore.images"}} {{if .IsOperator}} - {{.i18n.Tr "explore.data_analysis"}} + {{/* {{.i18n.Tr "explore.data_analysis"}} */}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} @@ -74,7 +75,8 @@ {{.i18n.Tr "explore.organizations"}} {{.i18n.Tr "explore.images"}} {{if .IsOperator}} - {{.i18n.Tr "explore.data_analysis"}} + {{/* {{.i18n.Tr "explore.data_analysis"}} */}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} -- 2.34.1 From cefdac00b17b4bc78b960f0351ac19b3e52d844a Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Fri, 22 Jul 2022 09:16:01 +0800 Subject: [PATCH 038/102] #2479 update --- modules/notification/wechat/wechat.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/notification/wechat/wechat.go b/modules/notification/wechat/wechat.go index c20be8e9b1..f77bfe7419 100644 --- a/modules/notification/wechat/wechat.go +++ b/modules/notification/wechat/wechat.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. -package mail +package wechat import ( "code.gitea.io/gitea/models" -- 2.34.1 From fc1164df88b5c2d90956c30673163715b3bfba83 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Fri, 22 Jul 2022 09:30:54 +0800 Subject: [PATCH 039/102] #2477 remove /panel path --- routers/kanban/kanban.go | 24 ------------------------ routers/routes/routes.go | 2 -- 2 files changed, 26 deletions(-) delete mode 100644 routers/kanban/kanban.go diff --git a/routers/kanban/kanban.go b/routers/kanban/kanban.go deleted file mode 100644 index d6bb743bbd..0000000000 --- a/routers/kanban/kanban.go +++ /dev/null @@ -1,24 +0,0 @@ -package kanban - -import ( - "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" - "net/http" - "os" - "path" - "time" -) - -func Index(ctx *context.Context) { - file := path.Join(setting.StaticRootPath, "public/kanban/index.html") - name := "index.html" - f, err := os.Open(file) - if err != nil { - ctx.HTML(http.StatusNotFound, base.TplName("status/404")) - return - } - defer f.Close() - ctx.Resp.Header().Set("Content-Type", "text/html") - http.ServeContent(ctx.Resp, ctx.Req.Request, name, time.Now(), f) -} diff --git a/routers/routes/routes.go b/routers/routes/routes.go index e4481d3c19..35a26f5852 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -6,7 +6,6 @@ package routes import ( "bytes" - "code.gitea.io/gitea/routers/kanban" "encoding/gob" "net/http" "path" @@ -328,7 +327,6 @@ func RegisterRoutes(m *macaron.Macaron) { }) m.Get("/", routers.Home) m.Get("/dashboard", routers.Dashboard) - m.Get("/panel", kanban.Index) go routers.SocketManager.Run() m.Get("/action/notification", routers.ActionNotification) m.Get("/recommend/home", routers.RecommendHomeInfo) -- 2.34.1 From ae3b50ad2ce597cfa156fd53f913158a32a86ca0 Mon Sep 17 00:00:00 2001 From: chenshihai Date: Fri, 22 Jul 2022 10:17:32 +0800 Subject: [PATCH 040/102] update kanban entry menu --- templates/base/head_navbar.tmpl | 4 ++-- templates/base/head_navbar_fluid.tmpl | 4 ++-- templates/base/head_navbar_home.tmpl | 4 ++-- templates/base/head_navbar_pro.tmpl | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/templates/base/head_navbar.tmpl b/templates/base/head_navbar.tmpl index 8dcca349cb..a5a898ad03 100755 --- a/templates/base/head_navbar.tmpl +++ b/templates/base/head_navbar.tmpl @@ -43,7 +43,7 @@ {{.i18n.Tr "explore.images"}} {{if .IsOperator}} {{/* {{.i18n.Tr "explore.data_analysis"}} */}} - {{.i18n.Tr "explore.data_analysis"}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} @@ -75,7 +75,7 @@ {{.i18n.Tr "explore.images"}} {{if .IsOperator}} {{/* {{.i18n.Tr "explore.data_analysis"}} */}} - {{.i18n.Tr "explore.data_analysis"}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} diff --git a/templates/base/head_navbar_fluid.tmpl b/templates/base/head_navbar_fluid.tmpl index 263e5333a4..84781db116 100644 --- a/templates/base/head_navbar_fluid.tmpl +++ b/templates/base/head_navbar_fluid.tmpl @@ -42,7 +42,7 @@ {{.i18n.Tr "explore.images"}} {{if .IsOperator}} {{/* {{.i18n.Tr "explore.data_analysis"}} */}} - {{.i18n.Tr "explore.data_analysis"}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} @@ -73,7 +73,7 @@ {{.i18n.Tr "explore.images"}} {{if .IsOperator}} {{/* {{.i18n.Tr "explore.data_analysis"}} */}} - {{.i18n.Tr "explore.data_analysis"}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} diff --git a/templates/base/head_navbar_home.tmpl b/templates/base/head_navbar_home.tmpl index fb5868dcea..64e04b4c3f 100644 --- a/templates/base/head_navbar_home.tmpl +++ b/templates/base/head_navbar_home.tmpl @@ -34,7 +34,7 @@ {{.i18n.Tr "explore.images"}} {{if .IsOperator}} {{/* {{.i18n.Tr "explore.data_analysis"}} */}} - {{.i18n.Tr "explore.data_analysis"}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} @@ -66,7 +66,7 @@ {{.i18n.Tr "explore.images"}} {{if .IsOperator}} {{/* {{.i18n.Tr "explore.data_analysis"}} */}} - {{.i18n.Tr "explore.data_analysis"}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} diff --git a/templates/base/head_navbar_pro.tmpl b/templates/base/head_navbar_pro.tmpl index 340f50f6b1..e9f662bbe6 100644 --- a/templates/base/head_navbar_pro.tmpl +++ b/templates/base/head_navbar_pro.tmpl @@ -44,7 +44,7 @@ {{.i18n.Tr "explore.images"}} {{if .IsOperator}} {{/* {{.i18n.Tr "explore.data_analysis"}} */}} - {{.i18n.Tr "explore.data_analysis"}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} @@ -76,7 +76,7 @@ {{.i18n.Tr "explore.images"}} {{if .IsOperator}} {{/* {{.i18n.Tr "explore.data_analysis"}} */}} - {{.i18n.Tr "explore.data_analysis"}} + {{.i18n.Tr "explore.data_analysis"}} {{end}} {{.i18n.Tr "custom.head.openi.repo"}} -- 2.34.1 From 8a35e507fe987f920bdbf07f3a4a29b36a68f5b6 Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Fri, 22 Jul 2022 10:47:40 +0800 Subject: [PATCH 041/102] fix issue --- templates/repo/cloudbrain/inference/new.tmpl | 46 ++++++---- .../repo/modelarts/inferencejob/new.tmpl | 87 ++++++++++++------- 2 files changed, 88 insertions(+), 45 deletions(-) diff --git a/templates/repo/cloudbrain/inference/new.tmpl b/templates/repo/cloudbrain/inference/new.tmpl index 2dbb175bd6..fedd9fa3cf 100644 --- a/templates/repo/cloudbrain/inference/new.tmpl +++ b/templates/repo/cloudbrain/inference/new.tmpl @@ -59,16 +59,13 @@ {{.CsrfTokenHtml}} - {{if $.model_version}} - - {{else}} - {{end}} - {{if $.label_names}} - - {{else}} - - {{end}} + + + + + +

{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:

@@ -298,6 +295,7 @@ - diff --git a/templates/repo/view_file.tmpl b/templates/repo/view_file.tmpl index 61d04570f3..91ec9b0bb8 100755 --- a/templates/repo/view_file.tmpl +++ b/templates/repo/view_file.tmpl @@ -103,20 +103,23 @@ {{end}}
{{else if .FileSize}} - + {{if .IsNoteBook}} +
+ + {{else}} +
{{if .IsFileTooLarge}} - {{else if .IsNoteBook}} - {{else}} {{end}} -
{{.i18n.Tr "repo.file_too_large"}}{{.LineNums}}
    {{.FileContent}}
+ + {{end}} {{end}} @@ -134,6 +137,9 @@ function showNoteBook(){ var isNoteBook = {{.IsNoteBook}} if (isNoteBook) { var jsonStr = "{{.FileContent}}" + nb.markdown.setOptions({ + baseUrl: {{.FileParentURL}} + }); var notebook = nb.parse(JSON.parse(jsonStr)); var rendered = notebook.render(); $("#notebook").append(rendered); -- 2.34.1 From 1865c868e7ef8e7726c6663d0649fccb2d706c58 Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Tue, 26 Jul 2022 17:51:27 +0800 Subject: [PATCH 073/102] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=86=97=E4=BD=99?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/self/js/notebook/notebook.js | 365 ---------------------------- 1 file changed, 365 deletions(-) delete mode 100644 public/self/js/notebook/notebook.js diff --git a/public/self/js/notebook/notebook.js b/public/self/js/notebook/notebook.js deleted file mode 100644 index 20c8c9b66b..0000000000 --- a/public/self/js/notebook/notebook.js +++ /dev/null @@ -1,365 +0,0 @@ -// http://github.com/jsvine/notebookjs -// notebook.js may be freely distributed under the MIT license. -(function () { - var VERSION = "0.6.7"; - var root = this; - var isBrowser = root.window !== undefined; - var doc; - - // Get browser or JSDOM document - if (isBrowser) { - doc = root.document; - } else { - var jsdom = require("jsdom"); - var dom = new jsdom.JSDOM(); - doc = dom.window.document; - } - - // Helper functions - var ident = function (x) { return x; }; - - var makeElement = function (tag, classNames) { - var el = doc.createElement(tag); - el.className = (classNames || []).map(function (cn) { - return nb.prefix + cn; - }).join(" "); - return el; - }; - - var escapeHTML = function (raw) { - var replaced = raw - .replace(//g, ">"); - return replaced; - }; - - var joinText = function (text) { - if (text.join) { - return text.map(joinText).join(""); - } else { - return text; - } - }; - - // Get supporting libraries - var getMarkdown = function () { - return root.marked || (typeof require === "function" && require("marked")); - }; - - var getAnsi = function () { - var lib = root.ansi_up || (typeof require === "function" && require("ansi_up")); - return lib && lib.ansi_to_html; - }; - - var getSanitizer = function () { - var lib = root.DOMPurify || (typeof require === "function" && require("dompurify")); - if (isBrowser) { - return lib && lib.sanitize; - } else { - return lib(dom.window).sanitize; - } - }; - - // Set up `nb` namespace - var nb = { - prefix: "nb-", - markdown: getMarkdown() || ident, - ansi: getAnsi() || ident, - sanitizer: getSanitizer() || ident, - highlighter: ident, - VERSION: VERSION - }; - - // Inputs - nb.Input = function (raw, cell) { - this.raw = raw; - this.cell = cell; - }; - - nb.Input.prototype.render = function () { - if (!this.raw.length) { return makeElement("div"); } - var holder = makeElement("div", [ "input" ]); - var cell = this.cell; - if (typeof cell.number === "number") { - holder.setAttribute("data-prompt-number", this.cell.number); - } - var pre_el = makeElement("pre"); - var code_el = makeElement("code"); - var notebook = cell.worksheet.notebook; - var m = notebook.metadata; - var lang = this.cell.raw.language || m.language || (m.kernelspec && m.kernelspec.language) || (m.language_info && m.language_info.name); - code_el.setAttribute("data-language", lang); - code_el.className = "lang-" + lang; - code_el.innerHTML = nb.highlighter(escapeHTML(joinText(this.raw)), pre_el, code_el, lang); - pre_el.appendChild(code_el); - holder.appendChild(pre_el); - this.el = holder; - return holder; - }; - - // Outputs and output-renderers - var imageCreator = function (format) { - return function (data) { - var el = makeElement("img", [ "image-output" ]); - el.src = "data:image/" + format + ";base64," + joinText(data).replace(/\n/g, ""); - return el; - }; - }; - - nb.display = {}; - nb.display.text = function (text) { - var el = makeElement("pre", [ "text-output" ]); - el.innerHTML = nb.highlighter(nb.ansi(joinText(text)), el); - return el; - }; - nb.display["text/plain"] = nb.display.text; - - nb.display.html = function (html) { - var el = makeElement("div", [ "html-output" ]); - el.innerHTML = nb.sanitizer(joinText(html)); - return el; - }; - nb.display["text/html"] = nb.display.html; - - nb.display.marked = function(md) { - return nb.display.html(nb.markdown(joinText(md))); - }; - nb.display["text/markdown"] = nb.display.marked; - - nb.display.svg = function (svg) { - var el = makeElement("div", [ "svg-output" ]); - el.innerHTML = joinText(svg); - return el; - }; - nb.display["text/svg+xml"] = nb.display.svg; - nb.display["image/svg+xml"] = nb.display.svg; - - nb.display.latex = function (latex) { - var el = makeElement("div", [ "latex-output" ]); - el.innerHTML = joinText(latex); - return el; - }; - nb.display["text/latex"] = nb.display.latex; - - nb.display.javascript = function (js) { - var el = makeElement("script"); - el.innerHTML = joinText(js); - return el; - }; - nb.display["application/javascript"] = nb.display.javascript; - - nb.display.png = imageCreator("png"); - nb.display["image/png"] = nb.display.png; - nb.display.jpeg = imageCreator("jpeg"); - nb.display["image/jpeg"] = nb.display.jpeg; - - nb.display_priority = [ - "png", "image/png", "jpeg", "image/jpeg", - "svg", "image/svg+xml", "text/svg+xml", "html", "text/html", - "text/markdown", "latex", "text/latex", - "javascript", "application/javascript", - "text", "text/plain" - ]; - - var render_display_data = function () { - var o = this; - var formats = nb.display_priority.filter(function (d) { - return o.raw.data ? o.raw.data[d] : o.raw[d]; - }); - var format = formats[0]; - if (format) { - if (nb.display[format]) { - return nb.display[format](o.raw[format] || o.raw.data[format]); - } - } - return makeElement("div", [ "empty-output" ]); - }; - - var render_error = function () { - var el = makeElement("pre", [ "pyerr" ]); - var raw = this.raw.traceback.join("\n"); - el.innerHTML = nb.highlighter(nb.ansi(escapeHTML(raw)), el); - return el; - }; - - nb.Output = function (raw, cell) { - this.raw = raw; - this.cell = cell; - this.type = raw.output_type; - }; - - nb.Output.prototype.renderers = { - "display_data": render_display_data, - "execute_result": render_display_data, - "pyout": render_display_data, - "pyerr": render_error, - "error": render_error, - "stream": function () { - var el = makeElement("pre", [ (this.raw.stream || this.raw.name) ]); - var raw = joinText(this.raw.text); - el.innerHTML = nb.highlighter(nb.ansi(escapeHTML(raw)), el); - return el; - } - }; - - nb.Output.prototype.render = function () { - var outer = makeElement("div", [ "output" ]); - if (typeof this.cell.number === "number") { - outer.setAttribute("data-prompt-number", this.cell.number); - } - var inner = this.renderers[this.type].call(this); - outer.appendChild(inner); - this.el = outer; - return outer; - }; - - // Post-processing - nb.coalesceStreams = function (outputs) { - if (!outputs.length) { return outputs; } - var last = outputs[0]; - var new_outputs = [ last ]; - outputs.slice(1).forEach(function (o) { - if (o.raw.output_type === "stream" && - last.raw.output_type === "stream" && - o.raw.stream === last.raw.stream && - o.raw.name === last.raw.name) { - last.raw.text = last.raw.text.concat(o.raw.text); - } else { - new_outputs.push(o); - last = o; - } - }); - return new_outputs; - }; - - // Cells - nb.Cell = function (raw, worksheet) { - var cell = this; - cell.raw = raw; - cell.worksheet = worksheet; - cell.type = raw.cell_type; - if (cell.type === "code") { - cell.number = raw.prompt_number > -1 ? raw.prompt_number : raw.execution_count; - var source = raw.input || [ raw.source ]; - cell.input = new nb.Input(source, cell); - var raw_outputs = (cell.raw.outputs || []).map(function (o) { - return new nb.Output(o, cell); - }); - cell.outputs = nb.coalesceStreams(raw_outputs); - } - }; - - var math_delimiters = [ - {left: "$$", right: "$$", display: true}, - {left: "\\[", right: "\\]", display: true}, - {left: "\\(", right: "\\)", display: false}, - {left: "$", right: "$", display: false} - ]; - - nb.Cell.prototype.renderers = { - markdown: function () { - var el = makeElement("div", [ "cell", "markdown-cell" ]); - - var joined = joinText(this.raw.source); - - // Pre-render math via KaTeX's auto-render extension, if available - if (root.renderMathInElement != null) { - el.innerHTML = nb.sanitizer(joined); - root.renderMathInElement(el, { delimiters: math_delimiters }); - el.innerHTML = nb.sanitizer(nb.markdown( - el.innerHTML - .replace(/>/g, ">") // Necessary to enable blockquote syntax - )); - } else { - el.innerHTML = nb.sanitizer(nb.markdown(joined)); - } - - return el; - }, - heading: function () { - var el = makeElement("h" + this.raw.level, [ "cell", "heading-cell" ]); - el.innerHTML = nb.sanitizer(joinText(this.raw.source)); - return el; - }, - raw: function () { - var el = makeElement("div", [ "cell", "raw-cell" ]); - el.innerHTML = escapeHTML(joinText(this.raw.source)); - return el; - }, - code: function () { - var cell_el = makeElement("div", [ "cell", "code-cell" ]); - cell_el.appendChild(this.input.render()); - var output_els = this.outputs.forEach(function (o) { - cell_el.appendChild(o.render()); - }); - return cell_el; - } - }; - - nb.Cell.prototype.render = function () { - var el = this.renderers[this.type].call(this); - this.el = el; - return el; - }; - - // Worksheets - nb.Worksheet = function (raw, notebook) { - var worksheet = this; - this.raw = raw; - this.notebook = notebook; - this.cells = raw.cells.map(function (c) { - return new nb.Cell(c, worksheet); - }); - this.render = function () { - var worksheet_el = makeElement("div", [ "worksheet" ]); - worksheet.cells.forEach(function (c) { - worksheet_el.appendChild(c.render()); - }); - this.el = worksheet_el; - return worksheet_el; - }; - }; - - // Notebooks - nb.Notebook = function (raw, config) { - var notebook = this; - this.raw = raw; - this.config = config; - var meta = this.metadata = raw.metadata || {}; - this.title = meta.title || meta.name; - var _worksheets = raw.worksheets || [ { cells: raw.cells } ]; - this.worksheets = _worksheets.map(function (ws) { - return new nb.Worksheet(ws, notebook); - }); - this.sheet = this.worksheets[0]; - }; - - nb.Notebook.prototype.render = function () { - var notebook_el = makeElement("div", [ "notebook" ]); - this.worksheets.forEach(function (w) { - notebook_el.appendChild(w.render()); - }); - this.el = notebook_el; - return notebook_el; - }; - - nb.parse = function (nbjson, config) { - return new nb.Notebook(nbjson, config); - }; - - // Exports - if (typeof define === 'function' && define.amd) { - define(function() { - return nb; - }); - } - if (typeof exports !== 'undefined') { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = nb; - } - exports.nb = nb; - } else { - root.nb = nb; - } - -}).call(this); -- 2.34.1 From 6272f23799121c4725ab94a1e402aba0d1ad8c07 Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 27 Jul 2022 09:18:03 +0800 Subject: [PATCH 074/102] fix-2357 --- models/cloudbrain.go | 32 ++++++++++++++++++++++++++++++++ models/cloudbrain_static.go | 15 --------------- routers/repo/cloudbrain.go | 28 ++++++++++++++++++++-------- 3 files changed, 52 insertions(+), 23 deletions(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index c1f798ea83..c0ef455747 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -1680,6 +1680,38 @@ func GetCloudbrainsNeededStopByUserID(userID int64) ([]*Cloudbrain, error) { return cloudBrains, err } +func GetWaittingTop() ([]*CloudbrainInfo, error) { + sess := x.NewSession() + defer sess.Close() + var cond = builder.NewCond() + cond = cond.And( + builder.Eq{"cloudbrain.status": string(JobWaiting)}, + ) + sess.OrderBy("cloudbrain.created_unix ASC limit 1") + cloudbrains := make([]*CloudbrainInfo, 0, 1) + if err := sess.Table(&Cloudbrain{}).Where(cond). + Find(&cloudbrains); err != nil { + log.Info("find error.") + } + return cloudbrains, nil +} +func GetModelartsReDebugTaskByJobId(jobID string) ([]*Cloudbrain, error) { + sess := x.NewSession() + defer sess.Close() + var cond = builder.NewCond() + cond = cond.And( + builder.Eq{"cloudbrain.job_id": jobID}, + ) + sess.OrderBy("cloudbrain.created_unix ASC limit 10") + // sess.OrderBy("cloudbrain.created_unix DSC limit 10") + cloudbrains := make([]*Cloudbrain, 0, 10) + if err := sess.Table(&Cloudbrain{}).Unscoped().Where(cond). + Find(&cloudbrains); err != nil { + log.Info("find error.") + } + return cloudbrains, nil +} + func GetCloudbrainsNeededStopByRepoID(repoID int64) ([]*Cloudbrain, error) { cloudBrains := make([]*Cloudbrain, 0) err := x.Cols("job_id", "status", "type", "job_type", "version_id", "start_time").Where("repo_id=? AND status !=?", repoID, string(JobStopped)).Find(&cloudBrains) diff --git a/models/cloudbrain_static.go b/models/cloudbrain_static.go index 86143d9955..e3ac5e9632 100644 --- a/models/cloudbrain_static.go +++ b/models/cloudbrain_static.go @@ -211,21 +211,6 @@ func GetAllStatusCloudBrain() map[string]int { return cloudBrainStatusResult } -func GetWaittingTop() ([]*CloudbrainInfo, error) { - sess := x.NewSession() - defer sess.Close() - var cond = builder.NewCond() - cond = cond.And( - builder.Eq{"cloudbrain.status": string(JobWaiting)}, - ) - sess.OrderBy("cloudbrain.created_unix ASC limit 10") - cloudbrains := make([]*CloudbrainInfo, 0, 10) - if err := sess.Table(&Cloudbrain{}).Where(cond). - Find(&cloudbrains); err != nil { - log.Info("find error.") - } - return cloudbrains, nil -} func GetRunningTop() ([]*CloudbrainInfo, error) { sess := x.NewSession() defer sess.Close() diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index d5a5e1a8ff..73c8582f14 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -3076,18 +3076,18 @@ func GetCloudbrainFlavorName(task models.Cloudbrain) (string, error) { ReplaceFlavorName := strings.ReplaceAll(task.FlavorName, ":", ":") return ReplaceFlavorName, nil } else if task.Type == models.TypeCloudBrainTwo && task.FlavorName == "" && task.FlavorCode != "" { - index := strings.LastIndex(task.FlavorCode, ".") - cardNum, err := strconv.Atoi(strings.TrimSpace(task.FlavorCode[index+1 : len(task.FlavorCode)])) + CloudbrainTwoFlavorName := getFlavorNameByFlavorCode(task.FlavorCode) + return CloudbrainTwoFlavorName, nil + } else if task.Type == models.TypeCloudBrainTwo && task.JobType == string(models.JobTypeDebug) && task.FlavorName == "" && task.FlavorCode == "" { + tasks, err := models.GetModelartsReDebugTaskByJobId(task.JobID) if err != nil { - log.Error("strconv.Atoi failed: %v", err) return "", err } - CloudbrainTwoFlavorName := "Ascend:" + strings.TrimSpace(task.FlavorCode[index+1:len(task.FlavorCode)]) + - "*Ascend-910(" + strconv.Itoa(cardNum*32) + "GB)|ARM:" + strconv.Itoa(cardNum*24) + - "核" + strconv.Itoa(cardNum*256) + "GB" - return CloudbrainTwoFlavorName, nil + if len(tasks) >= 1 { + return getFlavorNameByFlavorCode(tasks[0].FlavorCode), nil + } + return "", nil } - return "", nil } @@ -3112,3 +3112,15 @@ func getCloudBrainOneResourceSpec(task models.Cloudbrain) (*models.ResourceSpec, } return nil, nil, nil } +func getFlavorNameByFlavorCode(flavorCode string) string { + index := strings.LastIndex(flavorCode, ".") + cardNum, err := strconv.Atoi(strings.TrimSpace(flavorCode[index+1 : len(flavorCode)])) + if err != nil { + log.Error("strconv.Atoi failed: %v", err) + return "" + } + CloudbrainTwoFlavorName := "Ascend:" + strings.TrimSpace(flavorCode[index+1:len(flavorCode)]) + + "*Ascend-910(" + strconv.Itoa(cardNum*32) + "GB)|ARM:" + strconv.Itoa(cardNum*24) + + "核" + strconv.Itoa(cardNum*256) + "GB" + return CloudbrainTwoFlavorName +} -- 2.34.1 From 4835745f20bc756057a86b569ffbf5a1eae86964 Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 27 Jul 2022 09:31:04 +0800 Subject: [PATCH 075/102] fix --- models/cloudbrain.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index c0ef455747..f74fdd8255 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -1702,8 +1702,7 @@ func GetModelartsReDebugTaskByJobId(jobID string) ([]*Cloudbrain, error) { cond = cond.And( builder.Eq{"cloudbrain.job_id": jobID}, ) - sess.OrderBy("cloudbrain.created_unix ASC limit 10") - // sess.OrderBy("cloudbrain.created_unix DSC limit 10") + sess.OrderBy("cloudbrain.created_unix ASC limit 1") cloudbrains := make([]*Cloudbrain, 0, 10) if err := sess.Table(&Cloudbrain{}).Unscoped().Where(cond). Find(&cloudbrains); err != nil { -- 2.34.1 From 2c5daa1c1297c942f99bbfe3a5108053c3b4df82 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Wed, 27 Jul 2022 09:56:39 +0800 Subject: [PATCH 076/102] #2588 fix bug --- routers/repo/modelarts.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 25a76fa415..43f4a6e73b 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -294,6 +294,9 @@ func NotebookShow(ctx *context.Context) { } else { //deleted record } + if task.FlavorCode == "" { + task.FlavorCode = result.Flavor + } } datasetDownload := make([]models.DatasetDownload, 0) @@ -528,6 +531,8 @@ func NotebookManage(ctx *context.Context) { Description: task.Description, CreatedUnix: createTime, UpdatedUnix: createTime, + FlavorCode: task.FlavorCode, + FlavorName: task.FlavorName, } err = models.RestartCloudbrain(task, newTask) -- 2.34.1 From d91d790e1d693d415194d9e79f7216043e8f7d3f Mon Sep 17 00:00:00 2001 From: zouap Date: Wed, 27 Jul 2022 14:37:23 +0800 Subject: [PATCH 077/102] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=B6=8B=E5=8A=BF=E6=B4=BB=E5=8A=A8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- models/user_business_analysis.go | 1 + routers/repo/user_data_analysis.go | 14 +++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/models/user_business_analysis.go b/models/user_business_analysis.go index 06a15c884b..a36bd47363 100644 --- a/models/user_business_analysis.go +++ b/models/user_business_analysis.go @@ -1140,6 +1140,7 @@ func updateNewUserAcitivity(currentUserActivity map[int64]map[int64]int64, userA ",activate_regist_user=" + fmt.Sprint(useMetrics.ActivateRegistUser) + ",not_activate_regist_user=" + fmt.Sprint(useMetrics.CurrentDayRegistUser-useMetrics.ActivateRegistUser) + ",current_day_regist_user=" + fmt.Sprint(useMetrics.CurrentDayRegistUser) + + ",activate_index=" + fmt.Sprint(float64(useMetrics.ActivateRegistUser)/float64(useMetrics.CurrentDayRegistUser)) + ",data_date='" + time.Unix(key, 0).Format("2006-01-02") + "'" + " where count_date=" + fmt.Sprint(key) diff --git a/routers/repo/user_data_analysis.go b/routers/repo/user_data_analysis.go index be64fddf97..ed967af735 100755 --- a/routers/repo/user_data_analysis.go +++ b/routers/repo/user_data_analysis.go @@ -452,7 +452,7 @@ func DownloadUserDefineFile(ctx *context.Context) { func QueryUserMetricsCurrentMonth(ctx *context.Context) { currentTimeNow := time.Now() - pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), currentTimeNow.Day(), 23, 59, 59, 0, currentTimeNow.Location()) + pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), currentTimeNow.Day(), 0, 0, 0, 0, currentTimeNow.Location()) pageStartTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), 1, 0, 0, 0, 0, currentTimeNow.Location()) pageStartTime = getStartTime(pageStartTime) queryMetrics(ctx, "public.user_business_analysis_current_month", pageStartTime, pageEndTime) @@ -478,7 +478,7 @@ func QueryUserMetricsCurrentWeek(ctx *context.Context) { } pageStartTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), currentTimeNow.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, offset) pageStartTime = getStartTime(pageStartTime) - pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), currentTimeNow.Day(), 23, 59, 59, 0, currentTimeNow.Location()) + pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), currentTimeNow.Day(), 0, 0, 0, 0, currentTimeNow.Location()) queryMetrics(ctx, "public.user_business_analysis_current_week", pageStartTime, pageEndTime) } func QueryUserStaticCurrentWeek(ctx *context.Context) { @@ -492,7 +492,7 @@ func QueryUserMetricsCurrentYear(ctx *context.Context) { currentTimeNow := time.Now() pageStartTime := time.Date(currentTimeNow.Year(), 1, 1, 0, 0, 0, 0, currentTimeNow.Location()) pageStartTime = getStartTime(pageStartTime) - pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), currentTimeNow.Day(), 23, 59, 59, 0, currentTimeNow.Location()) + pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), currentTimeNow.Day(), 0, 0, 0, 0, currentTimeNow.Location()) queryMetrics(ctx, "public.user_business_analysis_current_year", pageStartTime, pageEndTime) } func QueryUserStaticCurrentYear(ctx *context.Context) { @@ -502,7 +502,7 @@ func QueryUserMetricsLast30Day(ctx *context.Context) { currentTimeNow := time.Now() pageStartTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), currentTimeNow.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, -30) pageStartTime = getStartTime(pageStartTime) - pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), currentTimeNow.Day(), 23, 59, 59, 0, currentTimeNow.Location()) + pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), currentTimeNow.Day(), 0, 0, 0, 0, currentTimeNow.Location()) queryMetrics(ctx, "public.user_business_analysis_last30_day", pageStartTime, pageEndTime) } func QueryUserStaticLast30Day(ctx *context.Context) { @@ -513,14 +513,14 @@ func QueryUserMetricsLastMonth(ctx *context.Context) { thisMonth := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), 1, 0, 0, 0, 0, currentTimeNow.Location()) pageStartTime := thisMonth.AddDate(0, -1, 0) pageStartTime = getStartTime(pageStartTime) - pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), 1, 23, 59, 59, 0, currentTimeNow.Location()).AddDate(0, 0, -1) + pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), 1, 0, 0, 0, 0, currentTimeNow.Location()).AddDate(0, 0, -1) queryMetrics(ctx, "public.user_business_analysis_last_month", pageStartTime, pageEndTime) } func QueryUserStaticLastMonth(ctx *context.Context) { queryUserDataPage(ctx, "public.user_business_analysis_last_month", new(models.UserBusinessAnalysisLastMonth)) } func QueryUserMetricsYesterday(ctx *context.Context) { - currentTimeNow := time.Now() + currentTimeNow := time.Now().AddDate(0, 0, -1) pageStartTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), currentTimeNow.Day(), 0, 0, 0, 0, time.Local) pageStartTime = getStartTime(pageStartTime) pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), currentTimeNow.Day(), 23, 59, 59, 0, currentTimeNow.Location()) @@ -533,7 +533,7 @@ func QueryUserMetricsAll(ctx *context.Context) { currentTimeNow := time.Now() pageStartTime := time.Date(2022, 4, 5, 0, 0, 0, 0, currentTimeNow.Location()) pageStartTime = getStartTime(pageStartTime) - pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), currentTimeNow.Day(), 23, 59, 59, 0, currentTimeNow.Location()) + pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), currentTimeNow.Day(), 0, 0, 0, 0, currentTimeNow.Location()) queryMetrics(ctx, "public.user_business_analysis_all", pageStartTime, pageEndTime) } func QueryUserStaticAll(ctx *context.Context) { -- 2.34.1 From 40f320f5a153b809d56049b8515cd92492d6e3f4 Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 27 Jul 2022 14:41:30 +0800 Subject: [PATCH 078/102] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routers/repo/cloudbrain.go | 60 +++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 73c8582f14..aa77e8d5c1 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -2993,33 +2993,33 @@ func GetCloudbrainCluster(task models.Cloudbrain, ctx *context.Context) string { return "" } func GetCloudbrainCardDuration(task models.Cloudbrain) string { - CardNum, _, _ := GetCloudbrainCardNumAndType(task) - CardDuration := models.ConvertDurationToStr(int64(CardNum) * task.Duration) - return CardDuration + cardNum, _, _ := GetCloudbrainCardNumAndType(task) + cardDuration := models.ConvertDurationToStr(int64(cardNum) * task.Duration) + return cardDuration } func GetCloudbrainWaitTime(task models.Cloudbrain) string { - var WaitTime string + var waitTime string if task.Status == string(models.JobWaiting) { - WaitTimeInt := time.Now().Unix() - task.CreatedUnix.AsTime().Unix() - WaitTime = models.ConvertDurationToStr(WaitTimeInt) - if WaitTimeInt < 0 { - WaitTime = "00:00:00" + waitTimeInt := time.Now().Unix() - task.CreatedUnix.AsTime().Unix() + waitTime = models.ConvertDurationToStr(waitTimeInt) + if waitTimeInt < 0 { + waitTime = "00:00:00" } } else if task.Status == string(models.JobStopped) && task.StartTime.AsTime().Unix() == 0 { - WaitTimeInt := task.EndTime.AsTime().Unix() - task.CreatedUnix.AsTime().Unix() - WaitTime = models.ConvertDurationToStr(WaitTimeInt) - if WaitTimeInt < 0 { - WaitTime = "00:00:00" + waitTimeInt := task.EndTime.AsTime().Unix() - task.CreatedUnix.AsTime().Unix() + waitTime = models.ConvertDurationToStr(waitTimeInt) + if waitTimeInt < 0 { + waitTime = "00:00:00" } } else { - WaitTimeInt := task.StartTime.AsTime().Unix() - task.CreatedUnix.AsTime().Unix() - WaitTime = models.ConvertDurationToStr(WaitTimeInt) - if WaitTimeInt < 0 { - WaitTime = "00:00:00" + waitTimeInt := task.StartTime.AsTime().Unix() - task.CreatedUnix.AsTime().Unix() + waitTime = models.ConvertDurationToStr(waitTimeInt) + if waitTimeInt < 0 { + waitTime = "00:00:00" } } - return WaitTime + return waitTime } func GetCloudbrainCardNumAndType(task models.Cloudbrain) (int, string, error) { @@ -3029,11 +3029,11 @@ func GetCloudbrainCardNumAndType(task models.Cloudbrain) (int, string, error) { if !models.GpuInfosMapInitFlag { models.InitCloudbrainOneGpuInfoMap() } - FlavorName, err := GetCloudbrainFlavorName(task) + flavorName, err := GetCloudbrainFlavorName(task) if err != nil { return 0, "", nil } - return getCardNumAndTypeByFlavorname(FlavorName) + return getCardNumAndTypeByFlavorname(flavorName) } func getCardNumAndTypeByFlavorname(FlavorName string) (int, string, error) { @@ -3058,26 +3058,26 @@ func getCardNumAndTypeByFlavorname(FlavorName string) (int, string, error) { func GetCloudbrainFlavorName(task models.Cloudbrain) (string, error) { if task.Type == models.TypeCloudBrainOne { - ResourceSpec, GpuInfo, err := getCloudBrainOneResourceSpec(task) + resourceSpec, gpuInfo, err := getCloudBrainOneResourceSpec(task) if err != nil { log.Info("getCloudBrainOneResourceSpec err:", err) return "", err } else { - if ResourceSpec == nil || GpuInfo == nil { - err := errors.New("ResourceSpec or GpuInfo is nil") + if resourceSpec == nil || gpuInfo == nil { + err := errors.New("resourceSpec or gpuInfo is nil") return "", err } else { - CloudbrainOneFlavorName := "GPU:" + strconv.Itoa(ResourceSpec.GpuNum) + "*Nvidia-" + GpuInfo.Value + - " | CPU:" + strconv.Itoa(ResourceSpec.CpuNum) + "核" + strconv.Itoa(ResourceSpec.MemMiB) + "MB" + CloudbrainOneFlavorName := "GPU:" + strconv.Itoa(resourceSpec.GpuNum) + "*Nvidia-" + gpuInfo.Value + + " | CPU:" + strconv.Itoa(resourceSpec.CpuNum) + "核" + strconv.Itoa(resourceSpec.MemMiB) + "MB" return CloudbrainOneFlavorName, nil } } } else if (task.Type == models.TypeCloudBrainTwo || task.Type == models.TypeC2Net) && task.FlavorName != "" { - ReplaceFlavorName := strings.ReplaceAll(task.FlavorName, ":", ":") - return ReplaceFlavorName, nil + replaceFlavorName := strings.ReplaceAll(task.FlavorName, ":", ":") + return replaceFlavorName, nil } else if task.Type == models.TypeCloudBrainTwo && task.FlavorName == "" && task.FlavorCode != "" { - CloudbrainTwoFlavorName := getFlavorNameByFlavorCode(task.FlavorCode) - return CloudbrainTwoFlavorName, nil + cloudbrainTwoFlavorName := getFlavorNameByFlavorCode(task.FlavorCode) + return cloudbrainTwoFlavorName, nil } else if task.Type == models.TypeCloudBrainTwo && task.JobType == string(models.JobTypeDebug) && task.FlavorName == "" && task.FlavorCode == "" { tasks, err := models.GetModelartsReDebugTaskByJobId(task.JobID) if err != nil { @@ -3119,8 +3119,8 @@ func getFlavorNameByFlavorCode(flavorCode string) string { log.Error("strconv.Atoi failed: %v", err) return "" } - CloudbrainTwoFlavorName := "Ascend:" + strings.TrimSpace(flavorCode[index+1:len(flavorCode)]) + + cloudbrainTwoFlavorName := "Ascend:" + strings.TrimSpace(flavorCode[index+1:len(flavorCode)]) + "*Ascend-910(" + strconv.Itoa(cardNum*32) + "GB)|ARM:" + strconv.Itoa(cardNum*24) + "核" + strconv.Itoa(cardNum*256) + "GB" - return CloudbrainTwoFlavorName + return cloudbrainTwoFlavorName } -- 2.34.1 From e7f3ccaa63953810e2bd6a7db9e4e37943cebf18 Mon Sep 17 00:00:00 2001 From: zouap Date: Wed, 27 Jul 2022 15:05:51 +0800 Subject: [PATCH 079/102] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=B8=8A=E6=9C=88?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=95=B0=E6=8D=AE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- routers/repo/user_data_analysis.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/repo/user_data_analysis.go b/routers/repo/user_data_analysis.go index ed967af735..557715d3a2 100755 --- a/routers/repo/user_data_analysis.go +++ b/routers/repo/user_data_analysis.go @@ -513,7 +513,7 @@ func QueryUserMetricsLastMonth(ctx *context.Context) { thisMonth := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), 1, 0, 0, 0, 0, currentTimeNow.Location()) pageStartTime := thisMonth.AddDate(0, -1, 0) pageStartTime = getStartTime(pageStartTime) - pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), 1, 0, 0, 0, 0, currentTimeNow.Location()).AddDate(0, 0, -1) + pageEndTime := time.Date(currentTimeNow.Year(), currentTimeNow.Month(), 1, 23, 59, 59, 0, currentTimeNow.Location()).AddDate(0, 0, -1) queryMetrics(ctx, "public.user_business_analysis_last_month", pageStartTime, pageEndTime) } func QueryUserStaticLastMonth(ctx *context.Context) { -- 2.34.1 From 253da886415f24b276ce89bcdbba9c944773b1c8 Mon Sep 17 00:00:00 2001 From: zouap Date: Wed, 27 Jul 2022 17:03:15 +0800 Subject: [PATCH 080/102] =?UTF-8?q?=E8=BF=90=E8=90=A5=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- routers/repo/user_data_analysis.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/repo/user_data_analysis.go b/routers/repo/user_data_analysis.go index 557715d3a2..9063e04582 100755 --- a/routers/repo/user_data_analysis.go +++ b/routers/repo/user_data_analysis.go @@ -406,7 +406,7 @@ func queryMetrics(ctx *context.Context, tableName string, startTime time.Time, e if tableName == "public.user_business_analysis_yesterday" { mapInterface["datarecordbegintime"] = setting.RadarMap.GrowthBeginTime if len(result) > 0 { - dateTime := time.Unix(result[0].CountDate, 0) + dateTime := time.Unix(result[0].CountDate, 0).AddDate(0, 0, 1) mapInterface["lastUpdatedTime"] = dateTime.Format("2006-01-02 15:04:05") } else { mapInterface["lastUpdatedTime"] = "" -- 2.34.1 From 38f7f15f112408c52e3665506a174e8cba977808 Mon Sep 17 00:00:00 2001 From: chenshihai Date: Wed, 27 Jul 2022 19:28:32 +0800 Subject: [PATCH 081/102] =?UTF-8?q?fix-2593=20=E9=80=89=E6=8B=A9=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=9B=86=E7=AA=97=E5=8F=A3=E7=9A=84=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=A1=86=E6=8C=89=E5=9B=9E=E8=BD=A6=E9=94=AE=E4=B8=8D=E5=BA=94?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E6=96=B0=E5=BB=BA=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/components/dataset/selectDataset.vue | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/web_src/js/components/dataset/selectDataset.vue b/web_src/js/components/dataset/selectDataset.vue index 3596fea1ff..ec09a0db81 100755 --- a/web_src/js/components/dataset/selectDataset.vue +++ b/web_src/js/components/dataset/selectDataset.vue @@ -76,7 +76,7 @@ type="text" placeholder="搜数据集名称/描述..." v-model="search" - @keyup.enter="searchName" + @keyup.enter.stop="searchName" /> @@ -727,7 +727,7 @@ export default { "currentTree", this.paramsCurrent.page ); - this.initCurrentTreeNode = [this.currentDatasetList[0].id]; + this.initCurrentTreeNode = this.currentDatasetList[0]?.id ? [this.currentDatasetList[0].id] : []; this.totalNumCurrent = parseInt(res.data.count); let setCheckedKeysList = this.currentDatasetList.reduce( (pre, cur) => { @@ -742,7 +742,7 @@ export default { ); this.$refs.currentTree.setCheckedKeys(setCheckedKeysList); }) - .catch(function (error) { + .catch((error) => { this.loadingCurrent = false; console.log(error); }); @@ -763,7 +763,7 @@ export default { "myTree", this.paramsMy.page ); - this.initMyTreeNode = [this.myDatasetList[0].id]; + this.initMyTreeNode = this.myDatasetList[0]?.id ? [this.myDatasetList[0].id] : []; this.totalNumMy = parseInt(res.data.count); let setCheckedKeysList = this.myDatasetList.reduce((pre, cur) => { cur.Attachments.forEach((item) => { @@ -775,7 +775,7 @@ export default { }, []); this.$refs.myTree.setCheckedKeys(setCheckedKeysList); }) - .catch(function (error) { + .catch((error) => { console.log(error); }); }, @@ -796,7 +796,7 @@ export default { "publicTree", this.paramsPublics.page ); - this.initPublicTreeNode = [this.publicDatasetList[0].id]; + this.initPublicTreeNode = this.publicDatasetList[0]?.id ? [this.publicDatasetList[0].id] : []; this.totalNumPublic = parseInt(res.data.count); let setCheckedKeysList = this.publicDatasetList.reduce((pre, cur) => { cur.Attachments.forEach((item) => { @@ -808,7 +808,7 @@ export default { }, []); this.$refs.publicTree.setCheckedKeys(setCheckedKeysList); }) - .catch(function (error) { + .catch((error) => { this.loadingPublic = false; console.log(error); }); @@ -830,7 +830,7 @@ export default { "favoriteTree", this.paramsFavorite.page ); - this.initFavoriteTreeNode = [this.MyFavoriteDatasetList[0].id]; + this.initFavoriteTreeNode = this.MyFavoriteDatasetList[0]?.id ? [this.MyFavoriteDatasetList[0].id] : []; this.totalNumFavorite = parseInt(res.data.count); let setCheckedKeysList = this.MyFavoriteDatasetList.reduce( (pre, cur) => { @@ -845,7 +845,7 @@ export default { ); this.$refs.favoriteTree.setCheckedKeys(setCheckedKeysList); }) - .catch(function (error) { + .catch((error) => { this.loadingFavorite = false; console.log(error); }); -- 2.34.1 From af7a63a19824d425ba4a1b0631e5cba10b10cc93 Mon Sep 17 00:00:00 2001 From: zouap Date: Thu, 28 Jul 2022 09:15:11 +0800 Subject: [PATCH 082/102] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=94=B9Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- modules/cloudbrain/cloudbrain.go | 40 ++++++++++--------- routers/repo/user_data_analysis.go | 2 +- .../js/components/dataset/selectDataset.vue | 2 +- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/modules/cloudbrain/cloudbrain.go b/modules/cloudbrain/cloudbrain.go index e09937df3a..1872375da6 100755 --- a/modules/cloudbrain/cloudbrain.go +++ b/modules/cloudbrain/cloudbrain.go @@ -466,11 +466,14 @@ func RestartTask(ctx *context.Context, task *models.Cloudbrain, newID *string) e log.Error("no such resourceSpecId(%d)", task.ResourceSpecId, ctx.Data["MsgID"]) return errors.New("no such resourceSpec") } - - datasetInfos, _, err := models.GetDatasetInfo(task.Uuid) - if err != nil { - log.Error("GetDatasetInfo failed:%v", err, ctx.Data["MsgID"]) - return err + var datasetInfos map[string]models.DatasetInfo + if task.Uuid != "" { + var err error + datasetInfos, _, err = models.GetDatasetInfo(task.Uuid) + if err != nil { + log.Error("GetDatasetInfo failed:%v", err, ctx.Data["MsgID"]) + return err + } } volumes := []models.Volume{ @@ -510,24 +513,25 @@ func RestartTask(ctx *context.Context, task *models.Cloudbrain, newID *string) e }, }, } - - if len(datasetInfos) == 1 { - volumes = append(volumes, models.Volume{ - HostPath: models.StHostPath{ - Path: datasetInfos[task.Uuid].DataLocalPath, - MountPath: DataSetMountPath, - ReadOnly: true, - }, - }) - } else { - for _, dataset := range datasetInfos { + if datasetInfos != nil { + if len(datasetInfos) == 1 { volumes = append(volumes, models.Volume{ HostPath: models.StHostPath{ - Path: dataset.DataLocalPath, - MountPath: DataSetMountPath + "/" + dataset.Name, + Path: datasetInfos[task.Uuid].DataLocalPath, + MountPath: DataSetMountPath, ReadOnly: true, }, }) + } else { + for _, dataset := range datasetInfos { + volumes = append(volumes, models.Volume{ + HostPath: models.StHostPath{ + Path: dataset.DataLocalPath, + MountPath: DataSetMountPath + "/" + dataset.Name, + ReadOnly: true, + }, + }) + } } } diff --git a/routers/repo/user_data_analysis.go b/routers/repo/user_data_analysis.go index 9063e04582..508addf755 100755 --- a/routers/repo/user_data_analysis.go +++ b/routers/repo/user_data_analysis.go @@ -896,7 +896,7 @@ func QueryUserLoginInfo(ctx *context.Context) { xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userLogin.IpAddr) tmp = tmp + 1 formatTime := userLogin.CreatedUnix.Format("2006-01-02 15:04:05") - xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, formatTime[0:len(formatTime)-3]) + xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, formatTime) } //设置默认打开的表单 xlsx.SetActiveSheet(index) diff --git a/web_src/js/components/dataset/selectDataset.vue b/web_src/js/components/dataset/selectDataset.vue index 3596fea1ff..cfc1cdd816 100755 --- a/web_src/js/components/dataset/selectDataset.vue +++ b/web_src/js/components/dataset/selectDataset.vue @@ -956,7 +956,7 @@ export default { this.benchmarkNew = true; } if (location.href.indexOf("modelarts/notebook/create") !== -1 || location.href.indexOf("/cloudbrain/create") !== -1) { - console.log("required is false;"); + //console.log("required is false;"); this.required = false; } window.onresize = () => { -- 2.34.1 From 29d0762246094b8aba9d57cd8ed647da74f6cb87 Mon Sep 17 00:00:00 2001 From: chenshihai Date: Thu, 28 Jul 2022 09:25:03 +0800 Subject: [PATCH 083/102] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=B1fix=20#1345?= =?UTF-8?q?=E5=BC=95=E5=85=A5=E7=9A=84=E8=A1=A8=E5=8D=95=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/repo/cloudbrain/inference/new.tmpl | 3 ++- templates/repo/cloudbrain/trainjob/new.tmpl | 3 ++- templates/repo/grampus/trainjob/gpu/new.tmpl | 3 ++- templates/repo/grampus/trainjob/npu/new.tmpl | 3 ++- templates/repo/modelarts/inferencejob/new.tmpl | 3 ++- templates/repo/modelarts/trainjob/new.tmpl | 3 ++- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/templates/repo/cloudbrain/inference/new.tmpl b/templates/repo/cloudbrain/inference/new.tmpl index b27ea05581..d4fa4c535a 100644 --- a/templates/repo/cloudbrain/inference/new.tmpl +++ b/templates/repo/cloudbrain/inference/new.tmpl @@ -497,6 +497,7 @@ } validate(); $('.ui.create_train_job.green.button').click(function(e) { - send_run_para() + send_run_para(); + validate(); }) diff --git a/templates/repo/cloudbrain/trainjob/new.tmpl b/templates/repo/cloudbrain/trainjob/new.tmpl index c22287d034..3a6bc0e0e6 100755 --- a/templates/repo/cloudbrain/trainjob/new.tmpl +++ b/templates/repo/cloudbrain/trainjob/new.tmpl @@ -499,6 +499,7 @@ } validate(); $('.ui.create_train_job.green.button').click(function (e) { - send_run_para() + send_run_para(); + validate(); }) \ No newline at end of file diff --git a/templates/repo/grampus/trainjob/gpu/new.tmpl b/templates/repo/grampus/trainjob/gpu/new.tmpl index ee0ceb84ab..85fc1ef677 100755 --- a/templates/repo/grampus/trainjob/gpu/new.tmpl +++ b/templates/repo/grampus/trainjob/gpu/new.tmpl @@ -446,6 +446,7 @@ } validate(); $('.ui.create_train_job.green.button').click(function(e) { - send_run_para() + send_run_para(); + validate(); }) \ No newline at end of file diff --git a/templates/repo/grampus/trainjob/npu/new.tmpl b/templates/repo/grampus/trainjob/npu/new.tmpl index 0397d07f60..612c618333 100755 --- a/templates/repo/grampus/trainjob/npu/new.tmpl +++ b/templates/repo/grampus/trainjob/npu/new.tmpl @@ -478,6 +478,7 @@ validate(); $('.ui.create_train_job.green.button').click(function(e) { get_name() - send_run_para() + send_run_para(); + validate(); }) diff --git a/templates/repo/modelarts/inferencejob/new.tmpl b/templates/repo/modelarts/inferencejob/new.tmpl index 419981c58e..3ab25fba94 100644 --- a/templates/repo/modelarts/inferencejob/new.tmpl +++ b/templates/repo/modelarts/inferencejob/new.tmpl @@ -522,6 +522,7 @@ validate(); $('.ui.create_train_job.green.button').click(function(e) { send_run_para() - get_name() + get_name(); + validate(); }) diff --git a/templates/repo/modelarts/trainjob/new.tmpl b/templates/repo/modelarts/trainjob/new.tmpl index 770e2df892..081d39f70f 100755 --- a/templates/repo/modelarts/trainjob/new.tmpl +++ b/templates/repo/modelarts/trainjob/new.tmpl @@ -531,6 +531,7 @@ validate(); $('.ui.create_train_job.green.button').click(function (e) { get_name() - send_run_para() + send_run_para(); + validate(); }) \ No newline at end of file -- 2.34.1 From a7c55788f4bb21f7097a4e2896bff29acbb88d35 Mon Sep 17 00:00:00 2001 From: zouap Date: Thu, 28 Jul 2022 09:25:22 +0800 Subject: [PATCH 084/102] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=94=B9Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- web_src/js/components/dataset/selectDataset.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/web_src/js/components/dataset/selectDataset.vue b/web_src/js/components/dataset/selectDataset.vue index cfc1cdd816..78d44f7755 100755 --- a/web_src/js/components/dataset/selectDataset.vue +++ b/web_src/js/components/dataset/selectDataset.vue @@ -956,7 +956,6 @@ export default { this.benchmarkNew = true; } if (location.href.indexOf("modelarts/notebook/create") !== -1 || location.href.indexOf("/cloudbrain/create") !== -1) { - //console.log("required is false;"); this.required = false; } window.onresize = () => { -- 2.34.1 From da9137d638bca9f136012ebeea13aa1ab906ca52 Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Thu, 28 Jul 2022 09:53:32 +0800 Subject: [PATCH 085/102] fix-1358 --- routers/routes/routes.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/routes/routes.go b/routers/routes/routes.go index f917aebf12..03b53c5cd8 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -1136,7 +1136,7 @@ func RegisterRoutes(m *macaron.Macaron) { }) }, context.RepoRef()) m.Group("/modelmanage", func() { - m.Post("/create_model", reqRepoModelManageWriter, repo.SaveModel) + m.Post("/create_model", repo.SaveModel) m.Post("/create_model_convert", reqRepoModelManageWriter, repo.SaveModelConvert) m.Post("/create_new_model", repo.SaveNewNameModel) m.Delete("/delete_model", repo.DeleteModel) -- 2.34.1 From e35374b6eeb694c9fdcd72d83caa1f3629c64406 Mon Sep 17 00:00:00 2001 From: zouap Date: Thu, 28 Jul 2022 10:23:16 +0800 Subject: [PATCH 086/102] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=B8=80=E4=B8=8B?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE=E9=9B=86=E5=8F=8A=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=88=97=E8=A1=A8=E7=9A=84=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- models/repo.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/models/repo.go b/models/repo.go index 4770e5415b..feb6fd3ef6 100755 --- a/models/repo.go +++ b/models/repo.go @@ -1603,13 +1603,6 @@ func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err e if err != nil { return err } - //If repo has become private, we need set dataset and dataset_file to private - _, err = e.Where("repo_id = ? and status <> 2", repo.ID).Cols("status").Update(&Dataset{ - Status: 0, - }) - if err != nil { - return err - } dataset, err := GetDatasetByRepo(repo) if err != nil && !IsErrNotExist(err) { @@ -1624,6 +1617,14 @@ func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err e } } + //If repo has become private, we need set dataset and dataset_file to private + _, err = e.Where("repo_id = ? and status <> 2", repo.ID).Cols("status").Update(&Dataset{ + Status: 0, + }) + if err != nil { + return err + } + } else { //If repo has become public, we need set dataset to public _, err = e.Where("repo_id = ? and status <> 2", repo.ID).Cols("status").Update(&Dataset{ -- 2.34.1 From 3d3c87767850bd09efbe52c45d1009a45be56a8a Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 28 Jul 2022 10:30:04 +0800 Subject: [PATCH 087/102] fix-2595 --- models/cloudbrain.go | 24 +++++++++++++++++++++++- routers/repo/cloudbrain.go | 20 ++++++++++++++------ 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index f74fdd8255..9dc5f0285c 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -2140,11 +2140,13 @@ var ( CloudbrainTrainResourceSpecsMap map[int]*ResourceSpec CloudbrainInferenceResourceSpecsMap map[int]*ResourceSpec CloudbrainBenchmarkResourceSpecsMap map[int]*ResourceSpec + CloudbrainSpecialResourceSpecsMap map[int]*ResourceSpec GpuInfosMapInitFlag = false CloudbrainDebugGpuInfosMap map[string]*GpuInfo CloudbrainTrainGpuInfosMap map[string]*GpuInfo CloudbrainInferenceGpuInfosMap map[string]*GpuInfo CloudbrainBenchmarkGpuInfosMap map[string]*GpuInfo + CloudbrainSpecialGpuInfosMap map[string]*GpuInfo ) func InitCloudbrainOneResourceSpecMap() { @@ -2180,7 +2182,17 @@ func InitCloudbrainOneResourceSpecMap() { CloudbrainBenchmarkResourceSpecsMap[spec.Id] = spec } } - SpecsMapInitFlag = true + if CloudbrainSpecialResourceSpecsMap == nil || len(CloudbrainSpecialResourceSpecsMap) == 0 { + t := SpecialPools{} + json.Unmarshal([]byte(setting.SpecialPools), &t) + for _, pool := range t.Pools { + CloudbrainSpecialResourceSpecsMap = make(map[int]*ResourceSpec, len(pool.ResourceSpec)) + for _, spec := range pool.ResourceSpec { + CloudbrainSpecialResourceSpecsMap[spec.Id] = spec + } + } + SpecsMapInitFlag = true + } } func InitCloudbrainOneGpuInfoMap() { @@ -2216,6 +2228,16 @@ func InitCloudbrainOneGpuInfoMap() { CloudbrainBenchmarkGpuInfosMap[GpuInfo.Queue] = GpuInfo } } + if CloudbrainSpecialGpuInfosMap == nil || len(CloudbrainSpecialGpuInfosMap) == 0 { + t := SpecialPools{} + json.Unmarshal([]byte(setting.SpecialPools), &t) + for _, pool := range t.Pools { + CloudbrainSpecialGpuInfosMap = make(map[string]*GpuInfo, len(pool.Pool)) + for _, GpuInfo := range pool.Pool { + CloudbrainSpecialGpuInfosMap[GpuInfo.Queue] = GpuInfo + } + } + } GpuInfosMapInitFlag = true } func GetNewestJobsByAiCenter() ([]int64, error) { diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index aa77e8d5c1..bd8b050884 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -3092,19 +3092,27 @@ func GetCloudbrainFlavorName(task models.Cloudbrain) (string, error) { } func getCloudBrainOneResourceSpec(task models.Cloudbrain) (*models.ResourceSpec, *models.GpuInfo, error) { - GpuQueueDefault := "openidebug" + gpuQueueDefault := "openidebug" if task.GpuQueue != "" { - GpuQueueDefault = task.GpuQueue + gpuQueueDefault = task.GpuQueue } if task.ResourceSpecId >= 0 { if task.JobType == string(models.JobTypeTrain) { - return models.CloudbrainTrainResourceSpecsMap[task.ResourceSpecId], models.CloudbrainTrainGpuInfosMap[GpuQueueDefault], nil + if models.CloudbrainTrainResourceSpecsMap[task.ResourceSpecId] != nil { + return models.CloudbrainTrainResourceSpecsMap[task.ResourceSpecId], models.CloudbrainTrainGpuInfosMap[gpuQueueDefault], nil + } else { + return models.CloudbrainSpecialResourceSpecsMap[task.ResourceSpecId], models.CloudbrainSpecialGpuInfosMap[gpuQueueDefault], nil + } } else if task.JobType == string(models.JobTypeDebug) { - return models.CloudbrainDebugResourceSpecsMap[task.ResourceSpecId], models.CloudbrainDebugGpuInfosMap[GpuQueueDefault], nil + if models.CloudbrainDebugResourceSpecsMap[task.ResourceSpecId] != nil { + return models.CloudbrainDebugResourceSpecsMap[task.ResourceSpecId], models.CloudbrainDebugGpuInfosMap[gpuQueueDefault], nil + } else { + return models.CloudbrainSpecialResourceSpecsMap[task.ResourceSpecId], models.CloudbrainSpecialGpuInfosMap[gpuQueueDefault], nil + } } else if task.JobType == string(models.JobTypeInference) { - return models.CloudbrainInferenceResourceSpecsMap[task.ResourceSpecId], models.CloudbrainInferenceGpuInfosMap[GpuQueueDefault], nil + return models.CloudbrainInferenceResourceSpecsMap[task.ResourceSpecId], models.CloudbrainInferenceGpuInfosMap[gpuQueueDefault], nil } else if task.JobType == string(models.JobTypeBenchmark) || task.JobType == string(models.JobTypeSnn4imagenet) || task.JobType == string(models.JobTypeBrainScore) { - return models.CloudbrainBenchmarkResourceSpecsMap[task.ResourceSpecId], models.CloudbrainBenchmarkGpuInfosMap[GpuQueueDefault], nil + return models.CloudbrainBenchmarkResourceSpecsMap[task.ResourceSpecId], models.CloudbrainBenchmarkGpuInfosMap[gpuQueueDefault], nil } } else { err := errors.New("ResourceSpecId is null") -- 2.34.1 From c67d453569b406165c72f0116d3b59c5e65c2d0e Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 28 Jul 2022 10:39:15 +0800 Subject: [PATCH 088/102] fix-bug --- models/cloudbrain.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 9dc5f0285c..5091a87626 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -2191,8 +2191,8 @@ func InitCloudbrainOneResourceSpecMap() { CloudbrainSpecialResourceSpecsMap[spec.Id] = spec } } - SpecsMapInitFlag = true } + SpecsMapInitFlag = true } func InitCloudbrainOneGpuInfoMap() { -- 2.34.1 From 3b75e56f0a57bdc6bce6ddfe082e4c77f8b01e26 Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 28 Jul 2022 11:01:37 +0800 Subject: [PATCH 089/102] fix-2357 --- routers/repo/cloudbrain.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index bd8b050884..31d0bb8d09 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -2980,10 +2980,18 @@ func GetCloudbrainAiCenter(task models.Cloudbrain, ctx *context.Context) string } else if task.Type == models.TypeCloudBrainTwo { return ctx.Tr("repo.cloudbrain2") } else if task.Type == models.TypeC2Net { - return task.AiCenter + return getCutStringAiCenterByAiCenter(task.AiCenter) } return "" } +func getCutStringAiCenterByAiCenter(aiCenter string) string { + if aiCenter == "" { + return "" + } + index := strings.LastIndex(aiCenter, "+") + return aiCenter[index+1:] + +} func GetCloudbrainCluster(task models.Cloudbrain, ctx *context.Context) string { if task.Type == models.TypeCloudBrainOne || task.Type == models.TypeCloudBrainTwo { return ctx.Tr("cloudbrain.resource_cluster_openi") -- 2.34.1 From 2dd5732ecd815d74f24475437ce9787c9bbe7700 Mon Sep 17 00:00:00 2001 From: chenshihai Date: Thu, 28 Jul 2022 11:51:30 +0800 Subject: [PATCH 090/102] =?UTF-8?q?fix-2593=20=E9=80=89=E6=8B=A9=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=9B=86=E7=AA=97=E5=8F=A3=E7=9A=84=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=A1=86=E6=8C=89=E5=9B=9E=E8=BD=A6=E9=94=AE=E4=B8=8D=E5=BA=94?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E6=96=B0=E5=BB=BA=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web_src/js/components/dataset/selectDataset.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web_src/js/components/dataset/selectDataset.vue b/web_src/js/components/dataset/selectDataset.vue index ba834bb884..43b3701f4d 100755 --- a/web_src/js/components/dataset/selectDataset.vue +++ b/web_src/js/components/dataset/selectDataset.vue @@ -75,8 +75,8 @@ -- 2.34.1 From 0b4c4b4c2210d35d2e95df6107655b3e82d352c3 Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 28 Jul 2022 14:18:51 +0800 Subject: [PATCH 091/102] fix-1968 --- routers/repo/cloudbrain.go | 284 +++---------------------------------- routers/repo/grampus.go | 141 ++++-------------- 2 files changed, 45 insertions(+), 380 deletions(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 2571013314..5f767086da 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -2,7 +2,6 @@ package repo import ( "bufio" - "code.gitea.io/gitea/modules/notification" "encoding/json" "errors" "fmt" @@ -16,6 +15,8 @@ import ( "time" "unicode/utf8" + "code.gitea.io/gitea/modules/notification" + "code.gitea.io/gitea/modules/grampus" "code.gitea.io/gitea/modules/timeutil" @@ -219,255 +220,6 @@ func cloudBrainNewDataPrepare(ctx *context.Context) error { return nil } -func cloudBrainTrainJobErrorPrepare(ctx *context.Context, form auth.CreateCloudBrainForm) error { - ctx.Data["PageIsCloudBrain"] = true - - if categories == nil { - json.Unmarshal([]byte(setting.BenchmarkCategory), &categories) - } - ctx.Data["benchmark_categories"] = categories.Category - - ctx.Data["benchmark_types"] = GetBenchmarkTypes(ctx).BenchmarkType - queuesDetail, _ := cloudbrain.GetQueuesDetail() - if queuesDetail != nil { - ctx.Data["QueuesDetail"] = queuesDetail - } - - cloudbrain.InitSpecialPool() - - if gpuInfos == nil { - json.Unmarshal([]byte(setting.GpuTypes), &gpuInfos) - } - ctx.Data["gpu_types"] = gpuInfos.GpuInfo - - if trainGpuInfos == nil { - json.Unmarshal([]byte(setting.TrainGpuTypes), &trainGpuInfos) - } - ctx.Data["train_gpu_types"] = trainGpuInfos.GpuInfo - - if inferenceGpuInfos == nil && setting.InferenceGpuTypes != "" { - json.Unmarshal([]byte(setting.InferenceGpuTypes), &inferenceGpuInfos) - } - if inferenceGpuInfos != nil { - ctx.Data["inference_gpu_types"] = inferenceGpuInfos.GpuInfo - } - - if benchmarkGpuInfos == nil { - json.Unmarshal([]byte(setting.BenchmarkGpuTypes), &benchmarkGpuInfos) - } - ctx.Data["benchmark_gpu_types"] = benchmarkGpuInfos.GpuInfo - - if benchmarkResourceSpecs == nil { - json.Unmarshal([]byte(setting.BenchmarkResourceSpecs), &benchmarkResourceSpecs) - } - ctx.Data["benchmark_resource_specs"] = benchmarkResourceSpecs.ResourceSpec - - if cloudbrain.ResourceSpecs == nil { - json.Unmarshal([]byte(setting.ResourceSpecs), &cloudbrain.ResourceSpecs) - } - ctx.Data["resource_specs"] = cloudbrain.ResourceSpecs.ResourceSpec - - if cloudbrain.TrainResourceSpecs == nil { - json.Unmarshal([]byte(setting.TrainResourceSpecs), &cloudbrain.TrainResourceSpecs) - } - ctx.Data["train_resource_specs"] = cloudbrain.TrainResourceSpecs.ResourceSpec - - if cloudbrain.InferenceResourceSpecs == nil && setting.InferenceResourceSpecs != "" { - json.Unmarshal([]byte(setting.InferenceResourceSpecs), &cloudbrain.InferenceResourceSpecs) - } - if cloudbrain.InferenceResourceSpecs != nil { - ctx.Data["inference_resource_specs"] = cloudbrain.InferenceResourceSpecs.ResourceSpec - } - - if cloudbrain.SpecialPools != nil { - var debugGpuTypes []*models.GpuInfo - var trainGpuTypes []*models.GpuInfo - - for _, pool := range cloudbrain.SpecialPools.Pools { - org, _ := models.GetOrgByName(pool.Org) - if org != nil { - isOrgMember, _ := models.IsOrganizationMember(org.ID, ctx.User.ID) - if isOrgMember { - for _, jobType := range pool.JobType { - if jobType == string(models.JobTypeDebug) { - debugGpuTypes = append(debugGpuTypes, pool.Pool...) - if pool.ResourceSpec != nil { - ctx.Data["resource_specs"] = pool.ResourceSpec - } - } else if jobType == string(models.JobTypeTrain) { - trainGpuTypes = append(trainGpuTypes, pool.Pool...) - if pool.ResourceSpec != nil { - ctx.Data["train_resource_specs"] = pool.ResourceSpec - } - } - } - break - } - } - - } - - if len(debugGpuTypes) > 0 { - ctx.Data["gpu_types"] = debugGpuTypes - } - - if len(trainGpuTypes) > 0 { - ctx.Data["train_gpu_types"] = trainGpuTypes - } - - } - - var Parameters modelarts.Parameters - if err := json.Unmarshal([]byte(form.Params), &Parameters); err != nil { - ctx.ServerError("json.Unmarshal failed:", err) - return err - } - ctx.Data["params"] = Parameters.Parameter - ctx.Data["boot_file"] = form.BootFile - ctx.Data["attachment"] = form.Attachment - _, datasetNames, err := models.GetDatasetInfo(form.Attachment) - if err != nil { - log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) - return nil - } - ctx.Data["dataset_name"] = datasetNames - ctx.Data["branch_name"] = form.BranchName - ctx.Data["datasetType"] = models.TypeCloudBrainOne - - ctx.Data["display_job_name"] = form.DisplayJobName - ctx.Data["image"] = form.Image - ctx.Data["job_type"] = form.JobType - ctx.Data["gpu_type"] = form.GpuType - ctx.Data["resource_spec_id"] = form.ResourceSpecId - return nil -} - -func cloudBrainInferenceJobErrorPrepare(ctx *context.Context, form auth.CreateCloudBrainInferencForm) error { - ctx.Data["PageIsCloudBrain"] = true - - if categories == nil { - json.Unmarshal([]byte(setting.BenchmarkCategory), &categories) - } - ctx.Data["benchmark_categories"] = categories.Category - - ctx.Data["benchmark_types"] = GetBenchmarkTypes(ctx).BenchmarkType - queuesDetail, _ := cloudbrain.GetQueuesDetail() - if queuesDetail != nil { - ctx.Data["QueuesDetail"] = queuesDetail - } - - cloudbrain.InitSpecialPool() - - if gpuInfos == nil { - json.Unmarshal([]byte(setting.GpuTypes), &gpuInfos) - } - ctx.Data["gpu_types"] = gpuInfos.GpuInfo - - if trainGpuInfos == nil { - json.Unmarshal([]byte(setting.TrainGpuTypes), &trainGpuInfos) - } - ctx.Data["train_gpu_types"] = trainGpuInfos.GpuInfo - - if inferenceGpuInfos == nil && setting.InferenceGpuTypes != "" { - json.Unmarshal([]byte(setting.InferenceGpuTypes), &inferenceGpuInfos) - } - if inferenceGpuInfos != nil { - ctx.Data["inference_gpu_types"] = inferenceGpuInfos.GpuInfo - } - - if benchmarkGpuInfos == nil { - json.Unmarshal([]byte(setting.BenchmarkGpuTypes), &benchmarkGpuInfos) - } - ctx.Data["benchmark_gpu_types"] = benchmarkGpuInfos.GpuInfo - - if benchmarkResourceSpecs == nil { - json.Unmarshal([]byte(setting.BenchmarkResourceSpecs), &benchmarkResourceSpecs) - } - ctx.Data["benchmark_resource_specs"] = benchmarkResourceSpecs.ResourceSpec - - if cloudbrain.ResourceSpecs == nil { - json.Unmarshal([]byte(setting.ResourceSpecs), &cloudbrain.ResourceSpecs) - } - ctx.Data["resource_specs"] = cloudbrain.ResourceSpecs.ResourceSpec - - if cloudbrain.TrainResourceSpecs == nil { - json.Unmarshal([]byte(setting.TrainResourceSpecs), &cloudbrain.TrainResourceSpecs) - } - ctx.Data["train_resource_specs"] = cloudbrain.TrainResourceSpecs.ResourceSpec - - if cloudbrain.InferenceResourceSpecs == nil && setting.InferenceResourceSpecs != "" { - json.Unmarshal([]byte(setting.InferenceResourceSpecs), &cloudbrain.InferenceResourceSpecs) - } - if cloudbrain.InferenceResourceSpecs != nil { - ctx.Data["inference_resource_specs"] = cloudbrain.InferenceResourceSpecs.ResourceSpec - } - - if cloudbrain.SpecialPools != nil { - var debugGpuTypes []*models.GpuInfo - var trainGpuTypes []*models.GpuInfo - - for _, pool := range cloudbrain.SpecialPools.Pools { - org, _ := models.GetOrgByName(pool.Org) - if org != nil { - isOrgMember, _ := models.IsOrganizationMember(org.ID, ctx.User.ID) - if isOrgMember { - for _, jobType := range pool.JobType { - if jobType == string(models.JobTypeDebug) { - debugGpuTypes = append(debugGpuTypes, pool.Pool...) - if pool.ResourceSpec != nil { - ctx.Data["resource_specs"] = pool.ResourceSpec - } - } else if jobType == string(models.JobTypeTrain) { - trainGpuTypes = append(trainGpuTypes, pool.Pool...) - if pool.ResourceSpec != nil { - ctx.Data["train_resource_specs"] = pool.ResourceSpec - } - } - } - break - } - } - - } - if len(debugGpuTypes) > 0 { - ctx.Data["gpu_types"] = debugGpuTypes - } - - if len(trainGpuTypes) > 0 { - ctx.Data["train_gpu_types"] = trainGpuTypes - } - - } - var Parameters modelarts.Parameters - if err := json.Unmarshal([]byte(form.Params), &Parameters); err != nil { - ctx.ServerError("json.Unmarshal failed:", err) - return err - } - ctx.Data["params"] = Parameters.Parameter - ctx.Data["boot_file"] = form.BootFile - ctx.Data["attachment"] = form.Attachment - _, datasetNames, err := models.GetDatasetInfo(form.Attachment) - if err != nil { - log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) - return nil - } - ctx.Data["dataset_name"] = datasetNames - ctx.Data["branch_name"] = form.BranchName - ctx.Data["datasetType"] = models.TypeCloudBrainOne - - ctx.Data["display_job_name"] = form.DisplayJobName - ctx.Data["image"] = form.Image - ctx.Data["job_type"] = form.JobType - ctx.Data["gpu_type"] = form.GpuType - ctx.Data["resource_spec_id"] = form.ResourceSpecId - ctx.Data["label_names"] = form.LabelName - ctx.Data["train_url"] = form.TrainUrl - ctx.Data["ckpt_name"] = form.CkptName - ctx.Data["model_name"] = form.ModelName - ctx.Data["model_version"] = form.ModelVersion - ctx.Data["description"] = form.Description - return nil -} func CloudBrainNew(ctx *context.Context) { err := cloudBrainNewDataPrepare(ctx) @@ -500,28 +252,28 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { if err == nil { if len(tasks) != 0 { log.Error("the job name did already exist", ctx.Data["MsgID"]) - cloudBrainTrainJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr("the job name did already exist", tpl, &form) return } } else { if !models.IsErrJobNotExist(err) { log.Error("system error, %v", err, ctx.Data["MsgID"]) - cloudBrainTrainJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr("system error", tpl, &form) return } } if !jobNamePattern.MatchString(displayJobName) { - cloudBrainTrainJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tpl, &form) return } if jobType != string(models.JobTypeBenchmark) && jobType != string(models.JobTypeDebug) && jobType != string(models.JobTypeTrain) { log.Error("jobtype error:", jobType, ctx.Data["MsgID"]) - cloudBrainTrainJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr("jobtype error", tpl, &form) return } @@ -529,13 +281,13 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { count, err := models.GetCloudbrainCountByUserID(ctx.User.ID, jobType) if err != nil { log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) - cloudBrainTrainJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr("system error", tpl, &form) return } else { if count >= 1 { log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) - cloudBrainTrainJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain.morethanonejob"), tpl, &form) return } @@ -544,7 +296,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { datasetInfos, datasetNames, err := models.GetDatasetInfo(uuids) if err != nil { log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) - cloudBrainTrainJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) return } @@ -565,7 +317,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { errStr := checkCloudBrainSpecialPool(ctx, jobType, gpuQueue, resourceSpecId) if errStr != "" { - cloudBrainTrainJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(errStr, tpl, &form) return } @@ -611,7 +363,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { err = cloudbrain.GenerateTask(req) if err != nil { - cloudBrainTrainJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(err.Error(), tpl, &form) return } @@ -651,21 +403,21 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra if err == nil { if len(tasks) != 0 { log.Error("the job name did already exist", ctx.Data["MsgID"]) - cloudBrainInferenceJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr("the job name did already exist", tpl, &form) return } } else { if !models.IsErrJobNotExist(err) { log.Error("system error, %v", err, ctx.Data["MsgID"]) - cloudBrainInferenceJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr("system error", tpl, &form) return } } if !jobNamePattern.MatchString(displayJobName) { - cloudBrainInferenceJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tpl, &form) return } @@ -673,13 +425,13 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra count, err := models.GetCloudbrainCountByUserID(ctx.User.ID, jobType) if err != nil { log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) - cloudBrainInferenceJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr("system error", tpl, &form) return } else { if count >= 1 { log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) - cloudBrainInferenceJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain.morethanonejob"), tpl, &form) return } @@ -699,7 +451,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra datasetInfos, datasetNames, err := models.GetDatasetInfo(uuid) if err != nil { log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) - cloudBrainInferenceJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) return } @@ -736,7 +488,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra err = cloudbrain.GenerateTask(req) if err != nil { - cloudBrainInferenceJobErrorPrepare(ctx, form) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(err.Error(), tpl, &form) return } diff --git a/routers/repo/grampus.go b/routers/repo/grampus.go index a41f884d92..014dccdef8 100755 --- a/routers/repo/grampus.go +++ b/routers/repo/grampus.go @@ -138,93 +138,6 @@ func grampusTrainJobNewDataPrepare(ctx *context.Context, processType string) err return nil } -func grampusTrainJobErrorPrepare(ctx *context.Context, processType string, form auth.CreateGrampusTrainJobForm) error { - ctx.Data["PageIsCloudBrain"] = true - - //get valid images - images, err := grampus.GetImages(processType) - if err != nil { - log.Error("GetImages failed:", err.Error()) - } else { - ctx.Data["images"] = images.Infos - } - - grampus.InitSpecialPool() - - ctx.Data["GPUEnabled"] = true - ctx.Data["NPUEnabled"] = true - includeCenters := make(map[string]struct{}) - excludeCenters := make(map[string]struct{}) - if grampus.SpecialPools != nil { - for _, pool := range grampus.SpecialPools.Pools { - if pool.IsExclusive { - if !IsUserInOrgPool(ctx.User.ID, pool) { - ctx.Data[pool.Type+"Enabled"] = false - } - } else { - if strings.Contains(strings.ToLower(processType), strings.ToLower(pool.Type)) { - if IsUserInOrgPool(ctx.User.ID, pool) { - for _, center := range pool.Pool { - includeCenters[center.Queue] = struct{}{} - } - } else { - for _, center := range pool.Pool { - excludeCenters[center.Queue] = struct{}{} - } - - } - - } - - } - } - } - - //get valid resource specs - specs, err := grampus.GetResourceSpecs(processType) - - grampusSpecs := getFilterSpecBySpecialPool(specs, includeCenters, excludeCenters) - - if err != nil { - log.Error("GetResourceSpecs failed:", err.Error()) - } else { - ctx.Data["flavor_infos"] = grampusSpecs - } - - if processType == grampus.ProcessorTypeGPU { - ctx.Data["datasetType"] = models.TypeCloudBrainOne - } else if processType == grampus.ProcessorTypeNPU { - ctx.Data["datasetType"] = models.TypeCloudBrainTwo - } - - var Parameters modelarts.Parameters - if err := json.Unmarshal([]byte(form.Params), &Parameters); err != nil { - ctx.ServerError("json.Unmarshal failed:", err) - return err - } - ctx.Data["params"] = Parameters.Parameter - ctx.Data["boot_file"] = form.BootFile - ctx.Data["attachment"] = form.Attachment - _, datasetNames, err := models.GetDatasetInfo(form.Attachment) - if err != nil { - log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) - return nil - } - ctx.Data["dataset_name"] = datasetNames - ctx.Data["branch_name"] = form.BranchName - ctx.Data["image_id"] = form.ImageID - - ctx.Data["display_job_name"] = form.DisplayJobName - ctx.Data["image"] = form.Image - ctx.Data["flavor"] = form.FlavorID - ctx.Data["flavor_name"] = form.FlavorName - ctx.Data["description"] = form.Description - ctx.Data["engine_name"] = form.EngineName - ctx.Data["work_server_number"] = form.WorkServerNumber - - return nil -} - func getFilterSpecBySpecialPool(specs *models.GetGrampusResourceSpecsResult, includeCenters map[string]struct{}, excludeCenters map[string]struct{}) []models.GrampusSpec { if len(includeCenters) == 0 && len(excludeCenters) == 0 { return specs.Infos @@ -295,14 +208,14 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain image := strings.TrimSpace(form.Image) if !jobNamePattern.MatchString(displayJobName) { - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tplGrampusTrainJobGPUNew, &form) return } errStr := checkSpecialPool(ctx, "GPU") if errStr != "" { - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr(errStr, tplGrampusTrainJobGPUNew, &form) return } @@ -311,13 +224,13 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain count, err := models.GetGrampusCountByUserID(ctx.User.ID, string(models.JobTypeTrain), models.GPUResource) if err != nil { log.Error("GetGrampusCountByUserID failed:%v", err, ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("system error", tplGrampusTrainJobGPUNew, &form) return } else { if count >= 1 { log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("you have already a running or waiting task, can not create more", tplGrampusTrainJobGPUNew, &form) return } @@ -326,7 +239,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain //check param if err := grampusParamCheckCreateTrainJob(form); err != nil { log.Error("paramCheckCreateTrainJob failed:(%v)", err, ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr(err.Error(), tplGrampusTrainJobGPUNew, &form) return } @@ -336,14 +249,14 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain if err == nil { if len(tasks) != 0 { log.Error("the job name did already exist", ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("the job name did already exist", tplGrampusTrainJobGPUNew, &form) return } } else { if !models.IsErrJobNotExist(err) { log.Error("system error, %v", err, ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("system error", tplGrampusTrainJobGPUNew, &form) return } @@ -353,7 +266,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain attachment, err := models.GetAttachmentByUUID(uuid) if err != nil { log.Error("GetAttachmentByUUID failed:", err.Error(), ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("dataset is not exist", tplGrampusTrainJobGPUNew, &form) return } @@ -366,7 +279,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain if err := downloadZipCode(ctx, codeLocalPath, branchName); err != nil { log.Error("downloadZipCode failed, server timed out: %s (%v)", repo.FullName(), err, ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("Create task failed, internal error", tplGrampusTrainJobGPUNew, &form) return } @@ -375,7 +288,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain //upload code if err := uploadCodeToMinio(codeLocalPath+"/", jobName, cloudbrain.CodeMountPath+"/"); err != nil { log.Error("Failed to uploadCodeToMinio: %s (%v)", repo.FullName(), err, ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("Create task failed, internal error", tplGrampusTrainJobGPUNew, &form) return } @@ -383,7 +296,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain modelPath := setting.JobPath + jobName + cloudbrain.ModelMountPath + "/" if err := mkModelPath(modelPath); err != nil { log.Error("Failed to mkModelPath: %s (%v)", repo.FullName(), err, ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("Create task failed, internal error", tplGrampusTrainJobGPUNew, &form) return } @@ -391,7 +304,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain //init model readme if err := uploadCodeToMinio(modelPath, jobName, cloudbrain.ModelMountPath+"/"); err != nil { log.Error("Failed to uploadCodeToMinio: %s (%v)", repo.FullName(), err, ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("Create task failed, internal error", tplGrampusTrainJobGPUNew, &form) return } @@ -400,7 +313,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain command, err := generateCommand(repo.Name, grampus.ProcessorTypeGPU, codeMinioPath+cloudbrain.DefaultBranchName+".zip", dataMinioPath, bootFile, params, setting.CBCodePathPrefix+jobName+cloudbrain.ModelMountPath+"/", attachment.Name) if err != nil { log.Error("Failed to generateCommand: %s (%v)", displayJobName, err, ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("Create task failed, internal error", tplGrampusTrainJobGPUNew, &form) return } @@ -432,7 +345,7 @@ func GrampusTrainJobGpuCreate(ctx *context.Context, form auth.CreateGrampusTrain err = grampus.GenerateTrainJob(ctx, req) if err != nil { log.Error("GenerateTrainJob failed:%v", err.Error(), ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeGPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr(err.Error(), tplGrampusTrainJobGPUNew, &form) return } @@ -479,14 +392,14 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain engineName := form.EngineName if !jobNamePattern.MatchString(displayJobName) { - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tplGrampusTrainJobNPUNew, &form) return } errStr := checkSpecialPool(ctx, "NPU") if errStr != "" { - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr(errStr, tplGrampusTrainJobGPUNew, &form) return } @@ -495,13 +408,13 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain count, err := models.GetGrampusCountByUserID(ctx.User.ID, string(models.JobTypeTrain), models.NPUResource) if err != nil { log.Error("GetGrampusCountByUserID failed:%v", err, ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("system error", tplGrampusTrainJobNPUNew, &form) return } else { if count >= 1 { log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("you have already a running or waiting task, can not create more", tplGrampusTrainJobNPUNew, &form) return } @@ -510,7 +423,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain //check param if err := grampusParamCheckCreateTrainJob(form); err != nil { log.Error("paramCheckCreateTrainJob failed:(%v)", err) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr(err.Error(), tplGrampusTrainJobNPUNew, &form) return } @@ -520,14 +433,14 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain if err == nil { if len(tasks) != 0 { log.Error("the job name did already exist", ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("the job name did already exist", tplGrampusTrainJobNPUNew, &form) return } } else { if !models.IsErrJobNotExist(err) { log.Error("system error, %v", err, ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("system error", tplGrampusTrainJobNPUNew, &form) return } @@ -537,7 +450,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain attachment, err := models.GetAttachmentByUUID(uuid) if err != nil { log.Error("GetAttachmentByUUID failed:", err.Error(), ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("dataset is not exist", tplGrampusTrainJobNPUNew, &form) return } @@ -550,7 +463,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain if err := downloadZipCode(ctx, codeLocalPath, branchName); err != nil { log.Error("downloadZipCode failed, server timed out: %s (%v)", repo.FullName(), err) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("Create task failed, server timed out", tplGrampusTrainJobNPUNew, &form) return } @@ -558,14 +471,14 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain //todo: upload code (send to file_server todo this work?) if err := obsMkdir(setting.CodePathPrefix + jobName + modelarts.OutputPath); err != nil { log.Error("Failed to obsMkdir_output: %s (%v)", repo.FullName(), err) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("Failed to obsMkdir_output", tplGrampusTrainJobNPUNew, &form) return } if err := uploadCodeToObs(codeLocalPath, jobName, ""); err != nil { log.Error("Failed to uploadCodeToObs: %s (%v)", repo.FullName(), err) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("Failed to uploadCodeToObs", tplGrampusTrainJobNPUNew, &form) return } @@ -574,7 +487,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain command, err := generateCommand(repo.Name, grampus.ProcessorTypeNPU, codeObsPath+cloudbrain.DefaultBranchName+".zip", dataObsPath+"'"+attachment.Name+"'", bootFile, params, setting.CodePathPrefix+jobName+modelarts.OutputPath, attachment.Name) if err != nil { log.Error("Failed to generateCommand: %s (%v)", displayJobName, err, ctx.Data["MsgID"]) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr("Create task failed, internal error", tplGrampusTrainJobNPUNew, &form) return } @@ -610,7 +523,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain err = grampus.GenerateTrainJob(ctx, req) if err != nil { log.Error("GenerateTrainJob failed:%v", err.Error()) - grampusTrainJobErrorPrepare(ctx, grampus.ProcessorTypeNPU, form) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) ctx.RenderWithErr(err.Error(), tplGrampusTrainJobNPUNew, &form) return } -- 2.34.1 From 467c8eaa369ec357782dcd411822dfc7e88912cf Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 28 Jul 2022 16:01:17 +0800 Subject: [PATCH 092/102] fix-1968 --- modules/auth/cloudbrain.go | 2 ++ modules/auth/grampus.go | 1 + modules/context/context.go | 5 ++++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/auth/cloudbrain.go b/modules/auth/cloudbrain.go index 160328b5b5..39685990d1 100755 --- a/modules/auth/cloudbrain.go +++ b/modules/auth/cloudbrain.go @@ -23,6 +23,7 @@ type CreateCloudBrainForm struct { BootFile string `form:"boot_file"` Params string `form:"run_para_list"` BranchName string `form:"branch_name"` + DatasetName string `form:"dataset_name"` } type CommitImageCloudBrainForm struct { @@ -70,6 +71,7 @@ type CreateCloudBrainInferencForm struct { ModelVersion string `form:"model_version" binding:"Required"` CkptName string `form:"ckpt_name" binding:"Required"` LabelName string `form:"label_names" binding:"Required"` + DatasetName string `form:"dataset_name"` } func (f *CreateCloudBrainForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { diff --git a/modules/auth/grampus.go b/modules/auth/grampus.go index ebf0defde0..0338d2ae7c 100755 --- a/modules/auth/grampus.go +++ b/modules/auth/grampus.go @@ -19,6 +19,7 @@ type CreateGrampusTrainJobForm struct { EngineName string `form:"engine_name" binding:"Required"` WorkServerNumber int `form:"work_server_number" binding:"Required"` Image string `form:"image"` + DatasetName string `form:"dataset_name"` } func (f *CreateGrampusTrainJobForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { diff --git a/modules/context/context.go b/modules/context/context.go index 2c935881c7..3f1de484ee 100755 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -6,7 +6,7 @@ package context import ( - "code.gitea.io/gitea/routers/notice" + "fmt" "html" "html/template" "io" @@ -16,6 +16,8 @@ import ( "strings" "time" + "code.gitea.io/gitea/routers/notice" + "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" @@ -146,6 +148,7 @@ func (ctx *Context) HTML(status int, name base.TplName) { func (ctx *Context) RenderWithErr(msg string, tpl base.TplName, form interface{}) { if form != nil { auth.AssignForm(form, ctx.Data) + fmt.Printf("ctx:", form) } ctx.Flash.ErrorMsg = msg ctx.Data["Flash"] = ctx.Flash -- 2.34.1 From fed029adc744d5d95f4c84fa2a9cf9570e9d08ca Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 28 Jul 2022 16:13:38 +0800 Subject: [PATCH 093/102] fix-2565 --- routers/api/v1/repo/cloudbrain_dashboard.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/routers/api/v1/repo/cloudbrain_dashboard.go b/routers/api/v1/repo/cloudbrain_dashboard.go index 5c4d53946e..c632f3c8ba 100755 --- a/routers/api/v1/repo/cloudbrain_dashboard.go +++ b/routers/api/v1/repo/cloudbrain_dashboard.go @@ -736,6 +736,7 @@ func GetCloudbrainsDetailData(ctx *context.Context) { var taskDetail models.TaskDetail taskDetail.ID = ciTasks[i].Cloudbrain.ID + taskDetail.JobID = ciTasks[i].Cloudbrain.JobID taskDetail.JobName = ciTasks[i].JobName taskDetail.DisplayJobName = ciTasks[i].DisplayJobName taskDetail.Status = ciTasks[i].Status @@ -758,9 +759,6 @@ func GetCloudbrainsDetailData(ctx *context.Context) { taskDetail.FlavorName, _ = repo.GetCloudbrainFlavorName(ciTasks[i].Cloudbrain) taskDetail.WaitTime = repo.GetCloudbrainWaitTime(ciTasks[i].Cloudbrain) - if ciTasks[i].Cloudbrain.Type == models.TypeCloudBrainTwo || (ciTasks[i].Cloudbrain.Type == models.TypeCloudBrainOne && ciTasks[i].Cloudbrain.JobType == "TRAIN") { - taskDetail.JobID = ciTasks[i].Cloudbrain.JobID - } if ciTasks[i].Cloudbrain.DeletedAt != nilTime { taskDetail.IsDelete = true -- 2.34.1 From 6d1b1b4ad65741079d947eb6590524b19b39ea5d Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 28 Jul 2022 16:30:23 +0800 Subject: [PATCH 094/102] fix-bug --- routers/repo/grampus.go | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/routers/repo/grampus.go b/routers/repo/grampus.go index 014dccdef8..f048506b1e 100755 --- a/routers/repo/grampus.go +++ b/routers/repo/grampus.go @@ -392,14 +392,14 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain engineName := form.EngineName if !jobNamePattern.MatchString(displayJobName) { - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tplGrampusTrainJobNPUNew, &form) return } errStr := checkSpecialPool(ctx, "NPU") if errStr != "" { - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) ctx.RenderWithErr(errStr, tplGrampusTrainJobGPUNew, &form) return } @@ -408,13 +408,13 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain count, err := models.GetGrampusCountByUserID(ctx.User.ID, string(models.JobTypeTrain), models.NPUResource) if err != nil { log.Error("GetGrampusCountByUserID failed:%v", err, ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) ctx.RenderWithErr("system error", tplGrampusTrainJobNPUNew, &form) return } else { if count >= 1 { log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) ctx.RenderWithErr("you have already a running or waiting task, can not create more", tplGrampusTrainJobNPUNew, &form) return } @@ -423,7 +423,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain //check param if err := grampusParamCheckCreateTrainJob(form); err != nil { log.Error("paramCheckCreateTrainJob failed:(%v)", err) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) ctx.RenderWithErr(err.Error(), tplGrampusTrainJobNPUNew, &form) return } @@ -433,14 +433,14 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain if err == nil { if len(tasks) != 0 { log.Error("the job name did already exist", ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) ctx.RenderWithErr("the job name did already exist", tplGrampusTrainJobNPUNew, &form) return } } else { if !models.IsErrJobNotExist(err) { log.Error("system error, %v", err, ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) ctx.RenderWithErr("system error", tplGrampusTrainJobNPUNew, &form) return } @@ -450,7 +450,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain attachment, err := models.GetAttachmentByUUID(uuid) if err != nil { log.Error("GetAttachmentByUUID failed:", err.Error(), ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) ctx.RenderWithErr("dataset is not exist", tplGrampusTrainJobNPUNew, &form) return } @@ -463,7 +463,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain if err := downloadZipCode(ctx, codeLocalPath, branchName); err != nil { log.Error("downloadZipCode failed, server timed out: %s (%v)", repo.FullName(), err) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) ctx.RenderWithErr("Create task failed, server timed out", tplGrampusTrainJobNPUNew, &form) return } @@ -478,7 +478,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain if err := uploadCodeToObs(codeLocalPath, jobName, ""); err != nil { log.Error("Failed to uploadCodeToObs: %s (%v)", repo.FullName(), err) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) ctx.RenderWithErr("Failed to uploadCodeToObs", tplGrampusTrainJobNPUNew, &form) return } @@ -487,7 +487,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain command, err := generateCommand(repo.Name, grampus.ProcessorTypeNPU, codeObsPath+cloudbrain.DefaultBranchName+".zip", dataObsPath+"'"+attachment.Name+"'", bootFile, params, setting.CodePathPrefix+jobName+modelarts.OutputPath, attachment.Name) if err != nil { log.Error("Failed to generateCommand: %s (%v)", displayJobName, err, ctx.Data["MsgID"]) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) ctx.RenderWithErr("Create task failed, internal error", tplGrampusTrainJobNPUNew, &form) return } @@ -523,7 +523,7 @@ func GrampusTrainJobNpuCreate(ctx *context.Context, form auth.CreateGrampusTrain err = grampus.GenerateTrainJob(ctx, req) if err != nil { log.Error("GenerateTrainJob failed:%v", err.Error()) - grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeGPU) + grampusTrainJobNewDataPrepare(ctx, grampus.ProcessorTypeNPU) ctx.RenderWithErr(err.Error(), tplGrampusTrainJobNPUNew, &form) return } -- 2.34.1 From 27677e8a15308e133e843200ed0196bdbce95eec Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Thu, 28 Jul 2022 16:40:05 +0800 Subject: [PATCH 095/102] fix issue --- templates/custom/select_dataset_train.tmpl | 1 + templates/repo/cloudbrain/inference/new.tmpl | 74 ++++---- templates/repo/cloudbrain/trainjob/new.tmpl | 141 ++++----------- templates/repo/grampus/trainjob/gpu/new.tmpl | 162 ++++------------- templates/repo/grampus/trainjob/npu/new.tmpl | 166 +++++------------- .../repo/modelarts/inferencejob/new.tmpl | 2 +- 6 files changed, 148 insertions(+), 398 deletions(-) diff --git a/templates/custom/select_dataset_train.tmpl b/templates/custom/select_dataset_train.tmpl index 27730cf16d..d7dbb055a5 100755 --- a/templates/custom/select_dataset_train.tmpl +++ b/templates/custom/select_dataset_train.tmpl @@ -9,6 +9,7 @@ {{end}} --> + {{if .benchmarkMode}}{{.i18n.Tr "repo.modelarts.infer_job.select_model"}}{{else}}{{.i18n.Tr "dataset.select_dataset"}}{{end}} diff --git a/templates/repo/cloudbrain/inference/new.tmpl b/templates/repo/cloudbrain/inference/new.tmpl index d4fa4c535a..bfc8b1c518 100644 --- a/templates/repo/cloudbrain/inference/new.tmpl +++ b/templates/repo/cloudbrain/inference/new.tmpl @@ -212,23 +212,8 @@ {{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}} -
- {{if ne 0 (len .params)}} - {{range $k ,$v := .params}} -
-
- -
-
- -
- - - +
-
- {{end}} - {{end}}
@@ -384,44 +369,59 @@ $(this).popup('show') }); + $(document).ready(function(){ + let params = $('.dynamic.field').data('params') + params&¶ms.parameter.forEach((item,index)=>{ + Add_parameter(index,flag=true,item) + }) + + }) // 参数增加、删除、修改、保存 - function Add_parameter(i){ - value = '
' + - '
' + - ' ' + - '
' + - '
' + - '' + - '
'+ - '' + - '' + - '' + - '' + - '
' + function Add_parameter(i,flag=false,paramsObject={}) { + let value = '' + value += `
` + value += '
' + if(flag){ + value +=`` + }else{ + value +='' + } + value += '
' + value += '
' + if(flag){ + value +=`` + }else{ + value +='' + } + value += '
' + value += '' + value += '
' $(".dynamic.field").append(value) + } - $('#add_run_para').click(function(){ + $('#add_run_para').click(function () { var len = $(".dynamic.field .two.fields").length Add_parameter(len) }); - $(".dynamic.field").on("click",".trash.icon", function() { + $(".dynamic.field").on("click", ".trash.icon", function () { var index = $(this).parent().parent().index() $(this).parent().parent().remove() var len = $(".dynamic.field .two.fields").length - $(".dynamic.field .two.fields").each(function(){ + $(".dynamic.field .two.fields").each(function () { var cur_index = $(this).index() $(this).attr('id', 'para' + cur_index) }) }); - function send_run_para(){ + + function send_run_para() { var run_parameters = [] var msg = {} - $(".dynamic.field .two.fields").each(function(){ - var para_name = $(this).find('input[name=shipping_first-name]').val() - var para_value = $(this).find('input[name=shipping_last-name]').val() - run_parameters.push({"label": para_name, "value": para_value}) + $(".dynamic.field .two.fields").each(function () { + var para_name = $(this).find('input.shipping_first-name').val() + var para_value = $(this).find('input.shipping_last-name').val() + run_parameters.push({ "label": para_name, "value": para_value }) }) msg["parameter"] = run_parameters msg = JSON.stringify(msg) diff --git a/templates/repo/cloudbrain/trainjob/new.tmpl b/templates/repo/cloudbrain/trainjob/new.tmpl index 3a6bc0e0e6..79a52d565b 100755 --- a/templates/repo/cloudbrain/trainjob/new.tmpl +++ b/templates/repo/cloudbrain/trainjob/new.tmpl @@ -231,23 +231,8 @@ style="margin-left: 0.5rem;cursor:pointer;color: rgba(3, 102, 214, 100);font-size: 14px;line-height: 26px;font-family: SourceHanSansSC-medium;">{{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}} -
- {{if ne 0 (len .params)}} - {{range $k ,$v := .params}} -
-
- -
-
- -
- - - - -
- {{end}} - {{end}} +
+
@@ -302,34 +287,35 @@ case 13:return false; } }); - let sever_num = $('#trainjob_work_server_num') - $('.add').click(function () { - sever_num.val(parseInt(sever_num.val()) + 1) - if (sever_num.val() >= 26) { - sever_num.val(parseInt(sever_num.val()) - 1) - } - }) - $('.min').click(function () { - sever_num.val(parseInt(sever_num.val()) - 1) - if (sever_num.val() <= 0) { - sever_num.val(parseInt(sever_num.val()) + 1) - } + $(document).ready(function(){ + let params = $('.dynamic.field').data('params') + params&¶ms.parameter.forEach((item,index)=>{ + Add_parameter(index,flag=true,item) + }) + }) // 参数增加、删除、修改、保存 - function Add_parameter(i) { - value = '
' + - '
' + - ' ' + - '
' + - '
' + - '' + - '
' + - '' + - '' + - '' + - '' + - '
' + function Add_parameter(i,flag=false,paramsObject={}) { + let value = '' + value += `
` + value += '
' + if(flag){ + value +=`` + }else{ + value +='' + } + value += '
' + value += '
' + if(flag){ + value +=`` + }else{ + value +='' + } + value += '
' + value += '' + value += '
' $(".dynamic.field").append(value) + } $('#add_run_para').click(function () { @@ -347,80 +333,13 @@ }) }); - $('.ui.parameter.green.button').click(function () { - var parameters = []; - $('table tr').each(function () { - $(this).find('td:eq(1)').each(function () { - parameters.push($(this).text()); - }) - $(this).find('input').each(function () { - parameters.push($(this).text()) - }) - - }); - $('.ui.parameter.modal') - .modal('hide'); - for (var i = 2; i < parameters.length; i++) { - switch (i) { - // 数据集uuid待完成 - // case (2): - // console.log(1) - // break; - // $("#trainjob_datasets").val(parameters[i]); - // console.log($("#trainjob_datasets").val()) - case (3): - $("input[name='boot_file']").val(parameters[i]); - break; - case (4): - var para = parameters[i].split(" ") - for (var j = 0; j < para.length; j++) { - var para_name = para[j].split('=')[0] - var para_value = para[j].split('=')[1] - var len = $(".dynamic.field .two.fields").length - Add_parameter(len) - var pid = 'para' + len - $(".dynamic.field" + " #" + pid + "").find("input[name=shipping_first-name]").val(para_name) - $(".dynamic.field" + " #" + pid + "").find("input[name=shipping_last-name]").val(para_value) - } - break; - // 数据集pool_id待完成 - // case (5): - // $("select[name='pool_id']").val(parameters[i]); - // break; - case (6): - $("input[name='work_server_number']").val(parameters[i]); - break; - } - } - }) - $('.ui.save.checkbox').click(function () { - $(this).checkbox({ - onChange: function () { - if ($('.ui.save.checkbox').checkbox('is checked')) { - $('#save_para').removeClass("disabled") - - } else { - $('#save_para').addClass("disabled") - } - } - }); - }) $('.question.circle.icon').hover(function () { $(this).popup('show') }); - $(".item.active.parameter_config").click(function () { - $('.ui.parameter.modal') - .modal('setting', 'closable', false) - .modal('show'); - }) - $('.ui.deny.button').click(function () { - $('.ui.parameter.modal') - .modal('hide'); - }) $('select.dropdown') .dropdown(); @@ -489,8 +408,8 @@ var run_parameters = [] var msg = {} $(".dynamic.field .two.fields").each(function () { - var para_name = $(this).find('input[name=shipping_first-name]').val() - var para_value = $(this).find('input[name=shipping_last-name]').val() + var para_name = $(this).find('input.shipping_first-name').val() + var para_value = $(this).find('input.shipping_last-name').val() run_parameters.push({ "label": para_name, "value": para_value }) }) msg["parameter"] = run_parameters diff --git a/templates/repo/grampus/trainjob/gpu/new.tmpl b/templates/repo/grampus/trainjob/gpu/new.tmpl index 85fc1ef677..142e5bd901 100755 --- a/templates/repo/grampus/trainjob/gpu/new.tmpl +++ b/templates/repo/grampus/trainjob/gpu/new.tmpl @@ -179,25 +179,8 @@ {{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}} -
- {{if .params}} - {{if ne 0 (len .params)}} - {{range $k ,$v := .params}} -
-
- -
-
- -
- - - - -
- {{end}} - {{end}} - {{end}} +
+
@@ -248,125 +231,58 @@ $('.menu .item') .tab(); - let sever_num = $('#trainjob_work_server_num') - $('.add').click(function(){ - sever_num.val(parseInt(sever_num.val())+1) - if(sever_num.val()>=26){ - sever_num.val(parseInt(sever_num.val())-1) - } - }) - $('.min').click(function(){ - sever_num.val(parseInt(sever_num.val())-1) - if(sever_num.val()<=0){ - sever_num.val(parseInt(sever_num.val())+1) - } + + $(document).ready(function(){ + let params = $('.dynamic.field').data('params') + params&¶ms.parameter.forEach((item,index)=>{ + Add_parameter(index,flag=true,item) + }) + }) // 参数增加、删除、修改、保存 - function Add_parameter(i){ - value = '
' + - '
' + - ' ' + - '
' + - '
' + - '' + - '
'+ - '' + - '' + - '' + - '' + - '
' + function Add_parameter(i,flag=false,paramsObject={}) { + let value = '' + value += `
` + value += '
' + if(flag){ + value +=`` + }else{ + value +='' + } + value += '
' + value += '
' + if(flag){ + value +=`` + }else{ + value +='' + } + value += '
' + value += '' + value += '
' $(".dynamic.field").append(value) - } - $('#add_run_para').click(function(){ + } + + $('#add_run_para').click(function () { var len = $(".dynamic.field .two.fields").length Add_parameter(len) }); - $(".dynamic.field").on("click",".trash.icon", function() { + $(".dynamic.field").on("click", ".trash.icon", function () { var index = $(this).parent().parent().index() $(this).parent().parent().remove() var len = $(".dynamic.field .two.fields").length - $(".dynamic.field .two.fields").each(function(){ + $(".dynamic.field .two.fields").each(function () { var cur_index = $(this).index() $(this).attr('id', 'para' + cur_index) }) }); - $('.ui.parameter.green.button').click(function(){ - var parameters = []; - $('table tr').each(function() { - $(this).find('td:eq(1)').each(function(){ - parameters.push($(this).text()); - }) - $(this).find('input').each(function(){ - parameters.push($(this).text()) - }) - - }); - $('.ui.parameter.modal') - .modal('hide'); - for(var i = 2; i < parameters.length; i++){ - switch(i) { - // 数据集uuid待完成 - // case (2): - // console.log(1) - // break; - // $("#trainjob_datasets").val(parameters[i]); - // console.log($("#trainjob_datasets").val()) - case (3): - $("input[name='boot_file']").val(parameters[i]); - break; - case (4): - var para = parameters[i].split(" ") - for(var j = 0; j < para.length; j++){ - var para_name = para[j].split('=')[0] - var para_value = para[j].split('=')[1] - var len = $(".dynamic.field .two.fields").length - Add_parameter(len) - var pid = 'para' + len - $(".dynamic.field"+ " #" + pid + "").find("input[name=shipping_first-name]").val(para_name) - $(".dynamic.field"+ " #" + pid + "").find("input[name=shipping_last-name]").val(para_value) - } - break; - // 数据集pool_id待完成 - // case (5): - // $("select[name='pool_id']").val(parameters[i]); - // break; - case (6): - $("input[name='work_server_number']").val(parameters[i]); - break; - } - } - }) - - $('.ui.save.checkbox').click(function(){ - $(this).checkbox({ - onChange: function(){ - if ($('.ui.save.checkbox').checkbox('is checked')){ - $('#save_para').removeClass("disabled") - - }else{ - $('#save_para').addClass("disabled") - } - } - }); - }) $('.question.circle.icon').hover(function(){ $(this).popup('show') }); - $(".item.active.parameter_config").click(function(){ - $('.ui.parameter.modal') - .modal('setting', 'closable', false) - .modal('show'); - }) - - $('.ui.deny.button').click(function(){ - $('.ui.parameter.modal') - .modal('hide'); - }) $('select.dropdown') .dropdown(); @@ -432,13 +348,13 @@ document.getElementById("mask").style.display = "none" } } - function send_run_para(){ + function send_run_para() { var run_parameters = [] var msg = {} - $(".dynamic.field .two.fields").each(function(){ - var para_name = $(this).find('input[name=shipping_first-name]').val() - var para_value = $(this).find('input[name=shipping_last-name]').val() - run_parameters.push({"label": para_name, "value": para_value}) + $(".dynamic.field .two.fields").each(function () { + var para_name = $(this).find('input.shipping_first-name').val() + var para_value = $(this).find('input.shipping_last-name').val() + run_parameters.push({ "label": para_name, "value": para_value }) }) msg["parameter"] = run_parameters msg = JSON.stringify(msg) @@ -446,7 +362,7 @@ } validate(); $('.ui.create_train_job.green.button').click(function(e) { - send_run_para(); + send_run_para() validate(); }) \ No newline at end of file diff --git a/templates/repo/grampus/trainjob/npu/new.tmpl b/templates/repo/grampus/trainjob/npu/new.tmpl index 612c618333..9b31f4c7a4 100755 --- a/templates/repo/grampus/trainjob/npu/new.tmpl +++ b/templates/repo/grampus/trainjob/npu/new.tmpl @@ -152,7 +152,6 @@ {{end}}
-
-
- {{if .params}} - {{if ne 0 (len .params)}} - {{range $k ,$v := .params}} -
-
- -
-
- -
- - - - -
- {{end}} - {{end}} - {{end}} +
+
@@ -276,126 +258,58 @@ $('.menu .item') .tab(); - // let sever_num = $("#trainjob_work_server_num_select .text").text() //$('#trainjob_work_server_num') - // console.log("sever_num:",sever_num) - // $('.add').click(function(){ - // sever_num.val(parseInt(sever_num.val())+1) - // if(sever_num.val()>=26){ - // sever_num.val(parseInt(sever_num.val())-1) - // } - // }) - // $('.min').click(function(){ - // sever_num.val(parseInt(sever_num.val())-1) - // if(sever_num.val()<=0){ - // sever_num.val(parseInt(sever_num.val())+1) - // } - // }) + + $(document).ready(function(){ + let params = $('.dynamic.field').data('params') + params&¶ms.parameter.forEach((item,index)=>{ + Add_parameter(index,flag=true,item) + }) + + }) // 参数增加、删除、修改、保存 - function Add_parameter(i){ - value = '
' + - '
' + - ' ' + - '
' + - '
' + - '' + - '
'+ - '' + - '' + - '' + - '' + - '
' + function Add_parameter(i,flag=false,paramsObject={}) { + let value = '' + value += `
` + value += '
' + if(flag){ + value +=`` + }else{ + value +='' + } + value += '
' + value += '
' + if(flag){ + value +=`` + }else{ + value +='' + } + value += '
' + value += '' + value += '
' $(".dynamic.field").append(value) + } - $('#add_run_para').click(function(){ + $('#add_run_para').click(function () { var len = $(".dynamic.field .two.fields").length Add_parameter(len) }); - $(".dynamic.field").on("click",".trash.icon", function() { + $(".dynamic.field").on("click", ".trash.icon", function () { var index = $(this).parent().parent().index() $(this).parent().parent().remove() var len = $(".dynamic.field .two.fields").length - $(".dynamic.field .two.fields").each(function(){ + $(".dynamic.field .two.fields").each(function () { var cur_index = $(this).index() $(this).attr('id', 'para' + cur_index) }) }); - $('.ui.parameter.green.button').click(function(){ - var parameters = []; - $('table tr').each(function() { - $(this).find('td:eq(1)').each(function(){ - parameters.push($(this).text()); - }) - $(this).find('input').each(function(){ - parameters.push($(this).text()) - }) - - }); - $('.ui.parameter.modal') - .modal('hide'); - for(var i = 2; i < parameters.length; i++){ - switch(i) { - // 数据集uuid待完成 - // case (2): - // console.log(1) - // break; - // $("#trainjob_datasets").val(parameters[i]); - // console.log($("#trainjob_datasets").val()) - case (3): - $("input[name='boot_file']").val(parameters[i]); - break; - case (4): - var para = parameters[i].split(" ") - for(var j = 0; j < para.length; j++){ - var para_name = para[j].split('=')[0] - var para_value = para[j].split('=')[1] - var len = $(".dynamic.field .two.fields").length - Add_parameter(len) - var pid = 'para' + len - $(".dynamic.field"+ " #" + pid + "").find("input[name=shipping_first-name]").val(para_name) - $(".dynamic.field"+ " #" + pid + "").find("input[name=shipping_last-name]").val(para_value) - } - break; - // 数据集pool_id待完成 - // case (5): - // $("select[name='pool_id']").val(parameters[i]); - // break; - case (6): - // $("input[name='work_server_number']").val(parameters[i]); - break; - } - } - }) - - $('.ui.save.checkbox').click(function(){ - $(this).checkbox({ - onChange: function(){ - if ($('.ui.save.checkbox').checkbox('is checked')){ - $('#save_para').removeClass("disabled") - - }else{ - $('#save_para').addClass("disabled") - } - } - }); - }) - $('.question.circle.icon').hover(function(){ $(this).popup('show') }); - $(".item.active.parameter_config").click(function(){ - $('.ui.parameter.modal') - .modal('setting', 'closable', false) - .modal('show'); - }) - - $('.ui.deny.button').click(function(){ - $('.ui.parameter.modal') - .modal('hide'); - }) + $('select.dropdown') .dropdown(); @@ -452,13 +366,13 @@ document.getElementById("mask").style.display = "none" } } - function send_run_para(){ + function send_run_para() { var run_parameters = [] var msg = {} - $(".dynamic.field .two.fields").each(function(){ - var para_name = $(this).find('input[name=shipping_first-name]').val() - var para_value = $(this).find('input[name=shipping_last-name]').val() - run_parameters.push({"label": para_name, "value": para_value}) + $(".dynamic.field .two.fields").each(function () { + var para_name = $(this).find('input.shipping_first-name').val() + var para_value = $(this).find('input.shipping_last-name').val() + run_parameters.push({ "label": para_name, "value": para_value }) }) msg["parameter"] = run_parameters msg = JSON.stringify(msg) @@ -478,7 +392,7 @@ validate(); $('.ui.create_train_job.green.button').click(function(e) { get_name() - send_run_para(); + send_run_para() validate(); }) diff --git a/templates/repo/modelarts/inferencejob/new.tmpl b/templates/repo/modelarts/inferencejob/new.tmpl index 3ab25fba94..05044d8ab5 100644 --- a/templates/repo/modelarts/inferencejob/new.tmpl +++ b/templates/repo/modelarts/inferencejob/new.tmpl @@ -522,7 +522,7 @@ validate(); $('.ui.create_train_job.green.button').click(function(e) { send_run_para() - get_name(); + get_name() validate(); }) -- 2.34.1 From 571b4138e2a060b6805b6900210cac0a6ce354ff Mon Sep 17 00:00:00 2001 From: liuzx Date: Thu, 28 Jul 2022 17:00:20 +0800 Subject: [PATCH 096/102] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/context/context.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/context/context.go b/modules/context/context.go index 3f1de484ee..8c78084665 100755 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -6,7 +6,6 @@ package context import ( - "fmt" "html" "html/template" "io" @@ -148,7 +147,6 @@ func (ctx *Context) HTML(status int, name base.TplName) { func (ctx *Context) RenderWithErr(msg string, tpl base.TplName, form interface{}) { if form != nil { auth.AssignForm(form, ctx.Data) - fmt.Printf("ctx:", form) } ctx.Flash.ErrorMsg = msg ctx.Data["Flash"] = ctx.Flash -- 2.34.1 From f15ed3c5fb3af0c1443ce4ff1fff8e1984845eea Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Thu, 28 Jul 2022 18:25:44 +0800 Subject: [PATCH 097/102] fix issue --- templates/repo/grampus/trainjob/gpu/new.tmpl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/templates/repo/grampus/trainjob/gpu/new.tmpl b/templates/repo/grampus/trainjob/gpu/new.tmpl index 142e5bd901..8860316f75 100755 --- a/templates/repo/grampus/trainjob/gpu/new.tmpl +++ b/templates/repo/grampus/trainjob/gpu/new.tmpl @@ -80,6 +80,8 @@ {{.CsrfTokenHtml}} + + @@ -360,8 +362,16 @@ msg = JSON.stringify(msg) $('#store_run_para').val(msg) } + function get_name(){ + let name1=$("#engine_name .text").text() + let name2=$("#flavor_name .text").text() + $("input#ai_engine_name").val(name1) + $("input#ai_flavor_name").val(name2) + + } validate(); $('.ui.create_train_job.green.button').click(function(e) { + get_name() send_run_para() validate(); }) -- 2.34.1 From 1c349b83b1e951e3415eb2a7fcc2bc43aede0e4e Mon Sep 17 00:00:00 2001 From: chenshihai Date: Fri, 29 Jul 2022 11:38:25 +0800 Subject: [PATCH 098/102] =?UTF-8?q?(=E8=BF=98=E5=8E=9F=E4=BF=AE=E6=94=B9)f?= =?UTF-8?q?ix-1940=20=E4=B8=8A=E4=BC=A0=E6=95=B0=E6=8D=AE=E9=9B=86?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E6=8A=A5=E9=94=99=E4=BA=86=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E8=BF=9B=E5=BA=A6=E6=9D=A1=E8=BF=98=E5=9C=A8=E6=B6=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web_src/js/components/MinioUploader.vue | 40 ++++++++----------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/web_src/js/components/MinioUploader.vue b/web_src/js/components/MinioUploader.vue index e657f6f9fa..167bb8c5a8 100755 --- a/web_src/js/components/MinioUploader.vue +++ b/web_src/js/components/MinioUploader.vue @@ -135,10 +135,10 @@ export default { allUploadLength(len){ if(len===this.uploadFiles.length){ setTimeout(() => { - this.dropzoneUploader.removeAllFiles(true) - this.btnFlag = false - this.$emit('setcluster',this.btnFlag) - }, 2000); + this.dropzoneUploader.removeAllFiles(true) + this.btnFlag = false + this.$emit('setcluster',this.btnFlag) + }, 2000); } } }, @@ -254,7 +254,7 @@ export default { (currentChunk / chunks) * 100 ).toFixed(2)}% (${currentChunk}/${chunks})`; - // this.updateProgress(file, ((currentChunk / chunks) * 100).toFixed(2)); + this.updateProgress(file, ((currentChunk / chunks) * 100).toFixed(2)); loadMd5Next(); return; } @@ -265,7 +265,7 @@ export default { file.size } 用时:${(new Date().getTime() - time) / 1000} s` ); - // this.updateProgress(file,100) + this.updateProgress(file,100) spark.destroy(); // 释放缓存 file.uniqueIdentifier = md5; // 将文件md5赋值给文件唯一标识 file.cmd5 = false; // 取消计算md5状态 @@ -297,11 +297,11 @@ export default { file.chunks = ''; this.multipartUpload(file); } else { - // 失败如何处理 - let info = "上传失败" - this.allUploadLength++ - this.uploadError(file,info) - this.allUploadFiles.push({name:file.name,status:2,info:info}) + // 失败如何处理 + let info = "上传失败" + this.allUploadLength++ + this.uploadError(file,info) + this.allUploadFiles.push({name:file.name,status:2,info:info}) return; } return; @@ -321,16 +321,12 @@ export default { this.uploadError(file,info) this.allUploadLength++ this.allUploadFiles.push({name:file.name,status:1,info:info}) - return; } - } + } console.log('文件已上传完成'); - this.allUploadLength++ - this.allUploadFiles.push({name:file.name,status:0,info:'上传成功'}) - this.updateProgress(file, 100); this.progress = 100; this.status = this.dropzoneParams.data('upload-complete'); - this.finishUpload(file); + // this.finishUpload(file); } else { // 断点续传 this.multipartUpload(file); @@ -338,10 +334,6 @@ export default { } catch (error) { this.emitDropzoneFailed(file); console.log(error); - let info = "上传失败" - this.allUploadLength++ - this.uploadError(file,info) - this.allUploadFiles.push({name:file.name,status:2,info:info}) } async function addAttachment(file) { @@ -511,7 +503,6 @@ export default { console.log(error); //this.emitDropzoneFailed(file); //console.log(error); - throw error; } } @@ -547,11 +538,6 @@ export default { await uploadChunk(e); }catch(err){ console.log(err) - let info = "上传失败" - this.allUploadLength++ - this.uploadError(file,info) - this.allUploadFiles.push({name:file.name,status:2,info:info}); - return; } fileReader.abort(); -- 2.34.1 From 1e326de85c7b47f347cfcadf4c2cc5cd6ff710ad Mon Sep 17 00:00:00 2001 From: liuzx Date: Fri, 29 Jul 2022 11:42:12 +0800 Subject: [PATCH 099/102] =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E6=97=A0=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routers/repo/cloudbrain.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 3e6f8e83c0..32c5ea9f63 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -309,6 +309,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { commandTrain, err := getTrainJobCommand(form) if err != nil { log.Error("getTrainJobCommand failed: %v", err) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(err.Error(), tpl, &form) return } @@ -397,6 +398,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra command, err := getInferenceJobCommand(form) if err != nil { log.Error("getTrainJobCommand failed: %v", err) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(err.Error(), tpl, &form) return } -- 2.34.1 From 3cf2e15ad4686db9c9d1ae6b5ae092a421d0dd97 Mon Sep 17 00:00:00 2001 From: avadesian Date: Fri, 29 Jul 2022 12:43:40 +0800 Subject: [PATCH 100/102] add reference repo url --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 99f6a6e8c5..5b455e3519 100644 --- a/README.md +++ b/README.md @@ -54,4 +54,7 @@ ## 平台引用 如果本平台对您的科研工作提供了帮助,可在论文致谢中加入: 英文版:```Thanks for the support provided by OpenI Community (https://git.openi.org.cn).``` -中文版:```感谢启智社区提供的技术支持(https://git.openi.org.cn)。``` \ No newline at end of file +中文版:```感谢启智社区提供的技术支持(https://git.openi.org.cn)。``` + +如果您的成果中引用了本平台,也欢迎在下述开源项目中提交您的成果信息: +```https://git.openi.org.cn/OpenIOSSG/references``` -- 2.34.1 From 3b12fcaf478728b7a28ae26cbe127aeb47259ee0 Mon Sep 17 00:00:00 2001 From: Chunxiang Xu Date: Fri, 29 Jul 2022 12:47:34 +0800 Subject: [PATCH 101/102] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20'README.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5b455e3519..1d9ab8d066 100644 --- a/README.md +++ b/README.md @@ -57,4 +57,4 @@ 中文版:```感谢启智社区提供的技术支持(https://git.openi.org.cn)。``` 如果您的成果中引用了本平台,也欢迎在下述开源项目中提交您的成果信息: -```https://git.openi.org.cn/OpenIOSSG/references``` +https://git.openi.org.cn/OpenIOSSG/references -- 2.34.1 From 7de4942280d6c845f89cecc5146099f27b80062b Mon Sep 17 00:00:00 2001 From: zouap Date: Mon, 1 Aug 2022 17:05:12 +0800 Subject: [PATCH 102/102] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E7=95=8C=E9=9D=A2=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- public/self/dataset_preview.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/public/self/dataset_preview.js b/public/self/dataset_preview.js index e6b79dd7db..81620e1a0d 100644 --- a/public/self/dataset_preview.js +++ b/public/self/dataset_preview.js @@ -123,13 +123,13 @@ function loadimg(uuid,filename){ function loadimg(){ var length = labeltastresult[fileindex].pic_image_field.length; -  if(labeltastresult[fileindex].pic_image_field.substring(length - 5) == ".json"  -     || labeltastresult[fileindex].pic_image_field.substring(length - 4) == ".xml" -     || labeltastresult[fileindex].pic_image_field.substring(length - 4) == ".txt" -     || labeltastresult[fileindex].pic_image_field.substring(length - 4) == ".csv" -     || labeltastresult[fileindex].pic_image_field.substring(length - 3) == ".md" -     || labeltastresult[fileindex].pic_image_field.substring(length - 3) == ".py" -     || labeltastresult[fileindex].pic_image_field.substring(length - 3) == ".sh"){ +  if(labeltastresult[fileindex].pic_image_field.substring(length - 5).toLowerCase() == ".json"  +     || labeltastresult[fileindex].pic_image_field.substring(length - 4).toLowerCase() == ".xml" +     || labeltastresult[fileindex].pic_image_field.substring(length - 4).toLowerCase() == ".txt" +     || labeltastresult[fileindex].pic_image_field.substring(length - 4).toLowerCase() == ".csv" +     || labeltastresult[fileindex].pic_image_field.substring(length - 3).toLowerCase() == ".md" +     || labeltastresult[fileindex].pic_image_field.substring(length - 3).toLowerCase() == ".py" +     || labeltastresult[fileindex].pic_image_field.substring(length - 3).toLowerCase() == ".sh"){ //文本 canvas.style.display="none"; @@ -138,11 +138,11 @@ function loadimg(){ $('#textcontent').height(canvas.height-40) $("#textcontent").text(textContent); }else{ - if(labeltastresult[fileindex].pic_image_field.substring(length - 5) == ".jpeg"  -    || labeltastresult[fileindex].pic_image_field.substring(length - 4) == ".jpg" -    || labeltastresult[fileindex].pic_image_field.substring(length - 4) == ".bmp" -    || labeltastresult[fileindex].pic_image_field.substring(length - 4) == ".gif" -    || labeltastresult[fileindex].pic_image_field.substring(length - 4) == ".png"){ + if(labeltastresult[fileindex].pic_image_field.substring(length - 5).toLowerCase() == ".jpeg"  +    || labeltastresult[fileindex].pic_image_field.substring(length - 4).toLowerCase() == ".jpg" +    || labeltastresult[fileindex].pic_image_field.substring(length - 4).toLowerCase() == ".bmp" +    || labeltastresult[fileindex].pic_image_field.substring(length - 4).toLowerCase() == ".gif" +    || labeltastresult[fileindex].pic_image_field.substring(length - 4).toLowerCase() == ".png"){ canvas.style.display="block"; document.getElementById("textcontent").style.display="none"; img.src = ip + "/getgiteaimage?uuid=" + dataset_id + "&filename=" + labeltastresult[fileindex].pic_image_field; -- 2.34.1