From 3f8e041035b3ed93ba35568ff27025af0f7f5eed Mon Sep 17 00:00:00 2001 From: hit172587zpz Date: Mon, 9 Aug 2021 10:24:55 +0800 Subject: [PATCH 01/45] fix the issue-208 --- templates/user/settings/profile.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/user/settings/profile.tmpl b/templates/user/settings/profile.tmpl index 995bdfd63..f6fb7a7ae 100644 --- a/templates/user/settings/profile.tmpl +++ b/templates/user/settings/profile.tmpl @@ -23,7 +23,7 @@
- +
From c54959e9e407abe85b4d157bd137eef9308b0f40 Mon Sep 17 00:00:00 2001 From: hit172587zpz Date: Wed, 11 Aug 2021 15:06:16 +0800 Subject: [PATCH 02/45] fix-bug 231 --- templates/repo/home.tmpl | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/templates/repo/home.tmpl b/templates/repo/home.tmpl index f5bf6253d..b48efd498 100644 --- a/templates/repo/home.tmpl +++ b/templates/repo/home.tmpl @@ -12,6 +12,15 @@ float: left; margin: .25em; } +.edit-link{ + vertical-align: top; + display: inline-block; + overflow: hidden; + word-break: keep-all; + white-space: nowrap; + text-overflow: ellipsis; + width: 16.5em; +} #contributorInfo > a.circular{ height: 2.0em; padding: 0; @@ -218,7 +227,7 @@ {{if .Repository.Website}}

- {{.Repository.Website}} + {{.Repository.Website}}

{{end}} From 187265cb3bc72667a2d9e361984f417e35243513 Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Wed, 11 Aug 2021 16:05:59 +0800 Subject: [PATCH 03/45] add resource spec select --- models/cloudbrain.go | 22 +++++++++++++++++----- modules/auth/cloudbrain.go | 1 + modules/cloudbrain/cloudbrain.go | 27 ++++++++++++++++++++++----- modules/setting/setting.go | 4 +++- routers/repo/cloudbrain.go | 8 +++++++- templates/repo/cloudbrain/new.tmpl | 9 +++++++++ 6 files changed, 59 insertions(+), 12 deletions(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index f9c0fb4e0..7a2966f74 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -72,11 +72,11 @@ type CloudBrainLoginResult struct { type TaskRole struct { Name string `json:"name"` - TaskNumber int8 `json:"taskNumber"` - MinSucceededTaskCount int8 `json:"minSucceededTaskCount"` - MinFailedTaskCount int8 `json:"minFailedTaskCount"` - CPUNumber int8 `json:"cpuNumber"` - GPUNumber int8 `json:"gpuNumber"` + TaskNumber int `json:"taskNumber"` + MinSucceededTaskCount int `json:"minSucceededTaskCount"` + MinFailedTaskCount int `json:"minFailedTaskCount"` + CPUNumber int `json:"cpuNumber"` + GPUNumber int `json:"gpuNumber"` MemoryMB int `json:"memoryMB"` ShmMB int `json:"shmMB"` Command string `json:"command"` @@ -286,6 +286,18 @@ type GpuInfo struct { Queue string `json:"queue"` } +type ResourceSpecs struct { + ResourceSpec []*ResourceSpec `json:"resorce_specs"` +} + +type ResourceSpec struct { + Id int `json:"id"` + CpuNum int `json:"cpu"` + GpuNum int `json:"gpu"` + MemMiB int `json:"memMiB"` + ShareMemMiB int `json:"shareMemMiB"` +} + type CommitImageParams struct { Ip string `json:"ip"` TaskContainerId string `json:"taskContainerId"` diff --git a/modules/auth/cloudbrain.go b/modules/auth/cloudbrain.go index 8325dc063..d598b495c 100755 --- a/modules/auth/cloudbrain.go +++ b/modules/auth/cloudbrain.go @@ -13,6 +13,7 @@ type CreateCloudBrainForm struct { JobType string `form:"job_type" binding:"Required"` BenchmarkCategory string `form:"get_benchmark_category"` GpuType string `form:"gpu_type"` + ResourceSpecId int `form:"resource_spec_id" binding:"Required"` } type CommitImageCloudBrainForm struct { diff --git a/modules/cloudbrain/cloudbrain.go b/modules/cloudbrain/cloudbrain.go index 9fda84ee8..0de1db9a6 100755 --- a/modules/cloudbrain/cloudbrain.go +++ b/modules/cloudbrain/cloudbrain.go @@ -23,12 +23,29 @@ const ( Success = "S000" ) -func GenerateTask(ctx *context.Context, jobName, image, command, uuid, codePath, modelPath, benchmarkPath, snn4imagenetPath, jobType, gpuQueue string) error { +var ( + ResourceSpecs *models.ResourceSpecs +) + +func GenerateTask(ctx *context.Context, jobName, image, command, uuid, codePath, modelPath, benchmarkPath, snn4imagenetPath, jobType, gpuQueue string, resourceSpecId int) error { dataActualPath := setting.Attachment.Minio.RealPath + setting.Attachment.Minio.Bucket + "/" + setting.Attachment.Minio.BasePath + models.AttachmentRelativePath(uuid) + uuid + + var resourceSpec *models.ResourceSpec + for _, spec := range ResourceSpecs.ResourceSpec { + if resourceSpecId == spec.Id { + resourceSpec = spec + } + } + + if resourceSpec == nil { + log.Error("no such resourceSpecId(%d)", resourceSpecId, ctx.Data["MsgID"]) + return errors.New("no such resourceSpec") + } + jobResult, err := CreateJob(jobName, models.CreateJobParams{ JobName: jobName, RetryCount: 1, @@ -40,10 +57,10 @@ func GenerateTask(ctx *context.Context, jobName, image, command, uuid, codePath, TaskNumber: 1, MinSucceededTaskCount: 1, MinFailedTaskCount: 1, - CPUNumber: 2, - GPUNumber: 1, - MemoryMB: 16384, - ShmMB: 8192, + CPUNumber: resourceSpec.CpuNum, + GPUNumber: resourceSpec.GpuNum, + MemoryMB: resourceSpec.MemMiB, + ShmMB: resourceSpec.ShareMemMiB, Command: command, NeedIBDevice: false, IsMainRole: false, diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 7785028f8..986a18313 100755 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -439,6 +439,7 @@ var ( JobType string GpuTypes string DebugServerHost string + ResourceSpecs string //benchmark config IsBenchmarkEnabled bool @@ -1147,7 +1148,8 @@ func NewContext() { JobPath = sec.Key("JOB_PATH").MustString("/datasets/minio/data/opendata/jobs/") DebugServerHost = sec.Key("DEBUG_SERVER_HOST").MustString("http://192.168.202.73") JobType = sec.Key("GPU_TYPE_DEFAULT").MustString("openidebug") - GpuTypes = sec.Key("GPU_TYPES").MustString("openidebug,openidgx") + GpuTypes = sec.Key("GPU_TYPES").MustString("") + ResourceSpecs = sec.Key("RESOURCE_SPECS").MustString("") sec = Cfg.Section("benchmark") IsBenchmarkEnabled = sec.Key("ENABLED").MustBool(false) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 1088f47d3..f6f796e14 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -148,6 +148,11 @@ func CloudBrainNew(ctx *context.Context) { json.Unmarshal([]byte(setting.GpuTypes), &gpuInfos) } ctx.Data["gpu_types"] = gpuInfos.GpuInfo + + if cloudbrain.ResourceSpecs == nil { + json.Unmarshal([]byte(setting.ResourceSpecs), &cloudbrain.ResourceSpecs) + } + ctx.Data["resource_specs"] = cloudbrain.ResourceSpecs.ResourceSpec ctx.Data["snn4imagenet_path"] = cloudbrain.Snn4imagenetMountPath ctx.Data["is_snn4imagenet_enabled"] = setting.IsSnn4imagenetEnabled ctx.HTML(200, tplCloudBrainNew) @@ -162,6 +167,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { jobType := form.JobType gpuQueue := setting.JobType codePath := setting.JobPath + jobName + cloudbrain.CodeMountPath + resourceSpecId := form.ResourceSpecId if jobType != string(models.JobTypeBenchmark) && jobType != string(models.JobTypeDebug) && jobType != string(models.JobTypeSnn4imagenet) { log.Error("jobtype error:", jobType, ctx.Data["msgID"]) @@ -208,7 +214,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { downloadRateCode(repo, jobName, setting.Snn4imagenetCode, snn4imagenetPath, "", "") } - err = cloudbrain.GenerateTask(ctx, jobName, image, command, uuid, codePath, modelPath, benchmarkPath, snn4imagenetPath, jobType, gpuQueue) + err = cloudbrain.GenerateTask(ctx, jobName, image, command, uuid, codePath, modelPath, benchmarkPath, snn4imagenetPath, jobType, gpuQueue, resourceSpecId) if err != nil { ctx.RenderWithErr(err.Error(), tplCloudBrainNew, &form) return diff --git a/templates/repo/cloudbrain/new.tmpl b/templates/repo/cloudbrain/new.tmpl index e9b2f2732..4e533091e 100755 --- a/templates/repo/cloudbrain/new.tmpl +++ b/templates/repo/cloudbrain/new.tmpl @@ -181,6 +181,15 @@
+
+ + +
+
From bba7081a0d1dba41d1168c326f9782e4b34e50dc Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Mon, 16 Aug 2021 14:37:49 +0800 Subject: [PATCH 04/45] adjust modelarts resource --- modules/modelarts/modelarts.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/modelarts/modelarts.go b/modules/modelarts/modelarts.go index 367fce061..2b2f014c7 100755 --- a/modules/modelarts/modelarts.go +++ b/modules/modelarts/modelarts.go @@ -15,14 +15,16 @@ const ( flavor = "modelarts.kat1.xlarge" //profileID = "Python3-ascend910-arm" profileID = "efa847c0-7359-11eb-b34f-0255ac100057" - poolID = "pool1328035d" - poolName = "train-private-1" + //poolID = "pool1328035d" + //poolName = "train-private-1" + poolID = "pool35eafa8f" + poolName = "train-private-0703" poolType = "USER_DEFINED" DataSetMountPath = "/home/ma-user/work" NotebookEnv = "Python3" NotebookType = "Ascend" - FlavorInfo = "Ascend: 1*Ascend 910 CPU: 24 核 96GiB (modelarts.kat1.xlarge)" + FlavorInfo = "Ascend: 1*Ascend 910 CPU: 24 核 256GiB (modelarts.kat1.xlarge)" ) func GenerateTask(ctx *context.Context, jobName, uuid, description string) error { From 905fabf645767e09b5a486f52fbb15e20aca2cb9 Mon Sep 17 00:00:00 2001 From: zouap Date: Mon, 16 Aug 2021 14:53:59 +0800 Subject: [PATCH 05/45] =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=9B=86=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E7=94=A8=E6=B5=8F=E8=A7=88=E5=99=A8=E5=86=85?= =?UTF-8?q?=E6=A0=B8=E8=87=AA=E5=B8=A6=E6=96=B9=E6=B3=95=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E3=80=82=E7=9C=8B=E7=9C=8B=E6=98=AF=E5=90=A6=E8=83=BD=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E5=9F=9F=E5=90=8D=E4=B8=8A=E4=BC=A0=E5=86=85=E5=AD=98?= =?UTF-8?q?=E4=B8=8D=E9=87=8A=E6=94=BE=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- web_src/js/components/MinioUploader.vue | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/web_src/js/components/MinioUploader.vue b/web_src/js/components/MinioUploader.vue index 1dc92e4b3..243c627c5 100755 --- a/web_src/js/components/MinioUploader.vue +++ b/web_src/js/components/MinioUploader.vue @@ -335,8 +335,19 @@ export default { async function uploadMinio(url, e) { const res = await axios.put(url, e.target.result); - delete e.target.result + delete e.target.result etags[currentChunk] = res.headers.etag; + + } + + async function uploadMinioNewMethod(url,e){ + var xhr = new XMLHttpRequest(); + xhr.open('PUT', url, false); + xhr.setRequestHeader('Content-Type', 'text/plain') + xhr.send(e.target.result); + var etagValue = xhr.getResponseHeader('etag'); + //console.log(etagValue); + etags[currentChunk] = etagValue; } async function updateChunk(currentChunk) { @@ -359,8 +370,10 @@ export default { // 获取分片上传url await getUploadChunkUrl(currentChunk, partSize); if (urls[currentChunk] != '') { - // 上传到minio - await uploadMinio(urls[currentChunk], e); + // 上传到minio + //await uploadMinio(urls[currentChunk], e); + await uploadMinioNewMethod(urls[currentChunk], e); + if (etags[currentChunk] != '') { // 更新数据库:分片上传结果 //await updateChunk(currentChunk); @@ -372,8 +385,9 @@ export default { } } } catch (error) { - this.emitDropzoneFailed(file); console.log(error); + //this.emitDropzoneFailed(file); + //console.log(error); } } From 35d72a631c70536c3b987a49177b7f2b2b8918ab Mon Sep 17 00:00:00 2001 From: hit172587zpz Date: Mon, 16 Aug 2021 15:41:37 +0800 Subject: [PATCH 06/45] fix bug 192 --- templates/repo/cloudbrain/new.tmpl | 39 ++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/templates/repo/cloudbrain/new.tmpl b/templates/repo/cloudbrain/new.tmpl index 4e533091e..7f3e35642 100755 --- a/templates/repo/cloudbrain/new.tmpl +++ b/templates/repo/cloudbrain/new.tmpl @@ -110,12 +110,13 @@
+
{{template "repo/header" .}}
{{template "base/alert" .}} -
+ {{.CsrfTokenHtml}}

{{.i18n.Tr "repo.cloudbrain.new"}} @@ -192,15 +193,15 @@
- +
- +
- +
@@ -217,13 +218,15 @@
- {{.i18n.Tr "repo.cloudbrain.cancel"}}
+ +

@@ -231,9 +234,31 @@ + + diff --git a/web_src/js/index.js b/web_src/js/index.js index 2de20b0d4..991a13c21 100755 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -35,6 +35,7 @@ import {createCodeEditor} from './features/codeeditor.js'; import MinioUploader from './components/MinioUploader.vue'; import ObsUploader from './components/ObsUploader.vue'; import EditAboutInfo from './components/EditAboutInfo.vue'; +import Images from './components/Images.vue' Vue.use(ElementUI); Vue.prototype.$axios = axios; @@ -2966,6 +2967,7 @@ $(document).ready(async () => { initVueUploader(); initObsUploader(); initVueEditAbout(); + initVueImages(); initTeamSettings(); initCtrlEnterSubmit(); initNavbarContentToggle(); @@ -3653,7 +3655,7 @@ function initVueUploader() { function initVueEditAbout() { const el = document.getElementById('about-desc'); - console.log(el) + if (!el) { return; } @@ -3664,6 +3666,21 @@ function initVueEditAbout() { }); } + +function initVueImages() { + const el = document.getElementById('images'); + console.log("el",el) + + if (!el) { + return; + } + + new Vue({ + el: '#images', + render: h => h(Images) + }); +} + // 新增 function initObsUploader() { const el = document.getElementById('obsUploader'); From c1de8f8826803b3835dbdba4b77e62a436316b1c Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Thu, 19 Aug 2021 15:36:59 +0800 Subject: [PATCH 24/45] fix bug --- models/cloudbrain.go | 29 ++++++++++++++++++++++++----- models/file_chunk.go | 12 +++++++++++- modules/cloudbrain/resty.go | 6 ++++++ modules/modelarts/modelarts.go | 26 ++++++++++++++------------ modules/setting/setting.go | 8 ++++++++ modules/timeutil/since.go | 0 routers/repo/attachment.go | 17 +++++++++++++---- routers/repo/cloudbrain.go | 30 ++++++++++++++++++++++-------- routers/repo/modelarts.go | 6 +++++- services/mailer/mail.go | 4 ++-- templates/repo/modelarts/new.tmpl | 7 ++++++- 11 files changed, 111 insertions(+), 34 deletions(-) mode change 100644 => 100755 modules/timeutil/since.go mode change 100644 => 100755 services/mailer/mail.go diff --git a/models/cloudbrain.go b/models/cloudbrain.go index cd9a508b5..0a6936851 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -72,11 +72,11 @@ type CloudBrainLoginResult struct { type TaskRole struct { Name string `json:"name"` - TaskNumber int `json:"taskNumber"` - MinSucceededTaskCount int `json:"minSucceededTaskCount"` - MinFailedTaskCount int `json:"minFailedTaskCount"` - CPUNumber int `json:"cpuNumber"` - GPUNumber int `json:"gpuNumber"` + TaskNumber int `json:"taskNumber"` + MinSucceededTaskCount int `json:"minSucceededTaskCount"` + MinFailedTaskCount int `json:"minFailedTaskCount"` + CPUNumber int `json:"cpuNumber"` + GPUNumber int `json:"gpuNumber"` MemoryMB int `json:"memoryMB"` ShmMB int `json:"shmMB"` Command string `json:"command"` @@ -299,6 +299,25 @@ type ResourceSpec struct { ShareMemMiB int `json:"shareMemMiB"` } +type FlavorInfos struct { + FlavorInfo []*FlavorInfo `json:"flavor_info"` +} + +type FlavorInfo struct { + Id int `json:"id"` + Value string `json:"value"` +} + +type PoolInfos struct { + PoolInfo []*PoolInfo `json:"pool_info"` +} + +type PoolInfo struct { + PoolId string `json:"pool_id"` + PoolName string `json:"pool_name"` + PoolType string `json:"pool_type"` +} + type CommitImageParams struct { Ip string `json:"ip"` TaskContainerId string `json:"taskContainerId"` diff --git a/models/file_chunk.go b/models/file_chunk.go index 9f513bd34..fc2beef56 100755 --- a/models/file_chunk.go +++ b/models/file_chunk.go @@ -87,7 +87,7 @@ func InsertFileChunk(fileChunk *FileChunk) (_ *FileChunk, err error) { return fileChunk, nil } -// UpdateAttachment updates the given attachment in database +// UpdateFileChunk updates the given file_chunk in database func UpdateFileChunk(fileChunk *FileChunk) error { return updateFileChunk(x, fileChunk) } @@ -98,3 +98,13 @@ func updateFileChunk(e Engine, fileChunk *FileChunk) error { _, err := sess.Cols("is_uploaded").Update(fileChunk) return err } + +// DeleteFileChunk delete the given file_chunk in database +func DeleteFileChunk(fileChunk *FileChunk) error { + return deleteFileChunk(x, fileChunk) +} + +func deleteFileChunk(e Engine, fileChunk *FileChunk) error { + _, err := e.ID(fileChunk.ID).Delete(fileChunk) + return err +} diff --git a/modules/cloudbrain/resty.go b/modules/cloudbrain/resty.go index ef7d70ef3..4e30ea0e4 100755 --- a/modules/cloudbrain/resty.go +++ b/modules/cloudbrain/resty.go @@ -82,6 +82,12 @@ sendjob: Post(HOST + "/rest-server/api/v1/jobs/") if err != nil { + if res != nil { + var response models.CloudBrainResult + json.Unmarshal(res.Body(), &response) + log.Error("code(%s), msg(%s)", response.Code, response.Msg) + return nil, fmt.Errorf(response.Msg) + } return nil, fmt.Errorf("resty create job: %s", err) } diff --git a/modules/modelarts/modelarts.go b/modules/modelarts/modelarts.go index 367fce061..a5cb8388b 100755 --- a/modules/modelarts/modelarts.go +++ b/modules/modelarts/modelarts.go @@ -2,6 +2,7 @@ package modelarts import ( "code.gitea.io/gitea/modules/setting" + "encoding/json" "path" "code.gitea.io/gitea/models" @@ -12,30 +13,31 @@ import ( const ( storageTypeOBS = "obs" autoStopDuration = 4 * 60 * 60 - flavor = "modelarts.kat1.xlarge" - //profileID = "Python3-ascend910-arm" - profileID = "efa847c0-7359-11eb-b34f-0255ac100057" - poolID = "pool1328035d" - poolName = "train-private-1" - poolType = "USER_DEFINED" DataSetMountPath = "/home/ma-user/work" NotebookEnv = "Python3" NotebookType = "Ascend" - FlavorInfo = "Ascend: 1*Ascend 910 CPU: 24 核 96GiB (modelarts.kat1.xlarge)" +) + +var ( + poolInfos *models.PoolInfos + FlavorInfos *models.FlavorInfos ) func GenerateTask(ctx *context.Context, jobName, uuid, description string) error { dataActualPath := setting.Bucket + "/" + setting.BasePath + path.Join(uuid[0:1], uuid[1:2]) + "/" + uuid + "/" + if poolInfos == nil { + json.Unmarshal([]byte(setting.PoolInfos), &poolInfos) + } jobResult, err := CreateJob(models.CreateNotebookParams{ JobName: jobName, Description: description, - ProfileID: profileID, - Flavor: flavor, + ProfileID: setting.ProfileID, + Flavor: setting.Flavor, Pool: models.Pool{ - ID: poolID, - Name: poolName, - Type: poolType, + ID: poolInfos.PoolInfo[0].PoolId, + Name: poolInfos.PoolInfo[0].PoolName, + Type: poolInfos.PoolInfo[0].PoolType, }, Spec: models.Spec{ Storage: models.Storage{ diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 986a18313..142369f88 100755 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -473,6 +473,10 @@ var ( ModelArtsUsername string ModelArtsPassword string ModelArtsDomain string + ProfileID string + PoolInfos string + Flavor string + FlavorInfos string ) // DateLang transforms standard language locale name to corresponding value in datetime plugin. @@ -1182,6 +1186,10 @@ func NewContext() { ModelArtsUsername = sec.Key("USERNAME").MustString("") ModelArtsPassword = sec.Key("PASSWORD").MustString("") ModelArtsDomain = sec.Key("DOMAIN").MustString("cn-south-222") + ProfileID = sec.Key("PROFILE_ID").MustString("") + PoolInfos = sec.Key("POOL_INFOS").MustString("") + Flavor = sec.Key("FLAVOR").MustString("") + FlavorInfos = sec.Key("FLAVOR_INFOS").MustString("") } func loadInternalToken(sec *ini.Section) string { diff --git a/modules/timeutil/since.go b/modules/timeutil/since.go old mode 100644 new mode 100755 diff --git a/routers/repo/attachment.go b/routers/repo/attachment.go index fea7a3384..49c72b1c3 100755 --- a/routers/repo/attachment.go +++ b/routers/repo/attachment.go @@ -483,16 +483,25 @@ func GetSuccessChunks(ctx *context.Context) { if typeCloudBrain == models.TypeCloudBrainOne { chunks, err = storage.GetPartInfos(fileChunk.UUID, fileChunk.UploadID) if err != nil { - ctx.ServerError("GetPartInfos failed", err) - return + log.Error("GetPartInfos failed:%v", err.Error()) } } else { chunks, err = storage.GetObsPartInfos(fileChunk.UUID, fileChunk.UploadID) if err != nil { - ctx.ServerError("GetObsPartInfos failed", err) - return + log.Error("GetObsPartInfos failed:%v", err.Error()) } } + + if err != nil { + models.DeleteFileChunk(fileChunk) + ctx.JSON(200, map[string]string{ + "uuid": "", + "uploaded": "0", + "uploadID": "", + "chunks": "", + }) + return + } } var attachID int64 diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 50396aedb..7a78f914a 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -90,13 +90,12 @@ func cutString(str string, lens int) string { func jobNamePrefixValid(s string) string { lowStr := strings.ToLower(s) - re := regexp.MustCompile(`[^a-z0-9\\.\\-]+`) + re := regexp.MustCompile(`[^a-z0-9_\\-]+`) return re.ReplaceAllString(lowStr, "") } -func CloudBrainNew(ctx *context.Context) { +func cloudBrainNewDataPrepare(ctx *context.Context) error{ ctx.Data["PageIsCloudBrain"] = true - t := time.Now() var jobName = jobNamePrefixValid(cutString(ctx.User.Name, 5)) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] ctx.Data["job_name"] = jobName @@ -104,7 +103,7 @@ func CloudBrainNew(ctx *context.Context) { result, err := cloudbrain.GetImages() if err != nil { ctx.Data["error"] = err.Error() - log.Error("cloudbrain.GetImages failed:", err.Error(), ctx.Data["msgID"]) + log.Error("cloudbrain.GetImages failed:", err.Error(), ctx.Data["MsgID"]) } for i, payload := range result.Payload.ImageInfo { @@ -120,7 +119,7 @@ func CloudBrainNew(ctx *context.Context) { resultPublic, err := cloudbrain.GetPublicImages() if err != nil { ctx.Data["error"] = err.Error() - log.Error("cloudbrain.GetPublicImages failed:", err.Error(), ctx.Data["msgID"]) + log.Error("cloudbrain.GetPublicImages failed:", err.Error(), ctx.Data["MsgID"]) } for i, payload := range resultPublic.Payload.ImageInfo { @@ -135,8 +134,8 @@ func CloudBrainNew(ctx *context.Context) { attachs, err := models.GetAllUserAttachments(ctx.User.ID) if err != nil { - ctx.ServerError("GetAllUserAttachments failed:", err) - return + log.Error("GetAllUserAttachments failed: %v", err, ctx.Data["MsgID"]) + return err } ctx.Data["attachments"] = attachs @@ -163,6 +162,16 @@ func CloudBrainNew(ctx *context.Context) { ctx.Data["resource_specs"] = cloudbrain.ResourceSpecs.ResourceSpec ctx.Data["snn4imagenet_path"] = cloudbrain.Snn4imagenetMountPath ctx.Data["is_snn4imagenet_enabled"] = setting.IsSnn4imagenetEnabled + + return nil +} + +func CloudBrainNew(ctx *context.Context) { + err := cloudBrainNewDataPrepare(ctx) + if err != nil { + ctx.ServerError("get new cloudbrain info failed", err) + return + } ctx.HTML(200, tplCloudBrainNew) } @@ -178,7 +187,8 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { resourceSpecId := form.ResourceSpecId if jobType != string(models.JobTypeBenchmark) && jobType != string(models.JobTypeDebug) && jobType != string(models.JobTypeSnn4imagenet) { - log.Error("jobtype error:", jobType, ctx.Data["msgID"]) + log.Error("jobtype error:", jobType, ctx.Data["MsgID"]) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr("jobtype error", tplCloudBrainNew, &form) return } @@ -186,11 +196,13 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { _, err := models.GetCloudbrainByName(jobName) if err == nil { log.Error("the job name did already exist", ctx.Data["MsgID"]) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr("the job name did already exist", tplCloudBrainNew, &form) return } else { if !models.IsErrJobNotExist(err) { log.Error("system error, %v", err, ctx.Data["MsgID"]) + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr("system error", tplCloudBrainNew, &form) return } @@ -201,6 +213,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { modelPath := setting.JobPath + jobName + cloudbrain.ModelMountPath err = os.MkdirAll(modelPath, os.ModePerm) if err != nil { + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(err.Error(), tplCloudBrainNew, &form) return } @@ -224,6 +237,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { err = cloudbrain.GenerateTask(ctx, jobName, image, command, uuid, codePath, modelPath, benchmarkPath, snn4imagenetPath, jobType, gpuQueue, resourceSpecId) if err != nil { + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(err.Error(), tplCloudBrainNew, &form) return } diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index f147a1f41..2dc327d33 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -2,6 +2,7 @@ package repo import ( "code.gitea.io/gitea/modules/modelarts" + "encoding/json" "errors" "github.com/unknwon/com" "strconv" @@ -84,7 +85,10 @@ func ModelArtsNew(ctx *context.Context) { ctx.Data["dataset_path"] = modelarts.DataSetMountPath ctx.Data["env"] = modelarts.NotebookEnv ctx.Data["notebook_type"] = modelarts.NotebookType - ctx.Data["flavor"] = modelarts.FlavorInfo + if modelarts.FlavorInfos == nil { + json.Unmarshal([]byte(setting.FlavorInfos), &modelarts.FlavorInfos) + } + ctx.Data["flavors"] = modelarts.FlavorInfos.FlavorInfo ctx.HTML(200, tplModelArtsNew) } diff --git a/services/mailer/mail.go b/services/mailer/mail.go old mode 100644 new mode 100755 index dd5af445b..e9395f130 --- a/services/mailer/mail.go +++ b/services/mailer/mail.go @@ -59,7 +59,7 @@ func SendTestMail(email string) error { func SendUserMail(language string, u *models.User, tpl base.TplName, code, subject, info string) { data := map[string]interface{}{ "DisplayName": u.DisplayName(), - "ActiveCodeLives": timeutil.MinutesToFriendly(setting.Service.ActiveCodeLives, language), + "ActiveCodeLives": timeutil.MinutesToFriendly(setting.Service.ActiveCodeLives, "en-US"), "ResetPwdCodeLives": timeutil.MinutesToFriendly(setting.Service.ResetPwdCodeLives, language), "Code": code, } @@ -97,7 +97,7 @@ func SendResetPasswordMail(locale Locale, u *models.User) { func SendActivateEmailMail(locale Locale, u *models.User, email *models.EmailAddress) { data := map[string]interface{}{ "DisplayName": u.DisplayName(), - "ActiveCodeLives": timeutil.MinutesToFriendly(setting.Service.ActiveCodeLives, locale.Language()), + "ActiveCodeLives": timeutil.MinutesToFriendly(setting.Service.ActiveCodeLives, "en-US"), "Code": u.GenerateEmailActivateCode(email.Email), "Email": email.Email, } diff --git a/templates/repo/modelarts/new.tmpl b/templates/repo/modelarts/new.tmpl index bb52e3585..c77a1fe47 100755 --- a/templates/repo/modelarts/new.tmpl +++ b/templates/repo/modelarts/new.tmpl @@ -132,7 +132,12 @@
- +
From 3f09713d30d5caad2caaf7ffa227dcda7fd029b6 Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Thu, 19 Aug 2021 16:51:29 +0800 Subject: [PATCH 25/45] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=90=8D=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=20=E4=BB=BB=E5=8A=A1=E5=90=8D=E5=8F=AA?= =?UTF-8?q?=E8=83=BD=E4=BB=A5=E6=95=B0=E5=AD=97=E5=AD=97=E6=AF=8D=E5=BC=80?= =?UTF-8?q?=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routers/repo/cloudbrain.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 7a78f914a..8b93c7e29 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -91,7 +91,12 @@ func cutString(str string, lens int) string { func jobNamePrefixValid(s string) string { lowStr := strings.ToLower(s) re := regexp.MustCompile(`[^a-z0-9_\\-]+`) - return re.ReplaceAllString(lowStr, "") + //ȥǷַ + removeSpecial := re.ReplaceAllString(lowStr, "") + //ĸͷȥǷǰ׺ + re = regexp.MustCompile(`^[_\\-]+`) + return re.ReplaceAllString(removeSpecial, "") + } func cloudBrainNewDataPrepare(ctx *context.Context) error{ From 04af721a0b2e95c998514e29e856d87dfc67406c Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Thu, 19 Aug 2021 16:58:53 +0800 Subject: [PATCH 26/45] fix bug --- templates/repo/datasets/index.tmpl | 5 +---- web_src/js/components/MinioUploader.vue | 3 +++ web_src/js/components/ObsUploader.vue | 3 +++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/templates/repo/datasets/index.tmpl b/templates/repo/datasets/index.tmpl index 164ca1f43..5ab2570c3 100755 --- a/templates/repo/datasets/index.tmpl +++ b/templates/repo/datasets/index.tmpl @@ -66,13 +66,10 @@
-
+

{{if eq .Type 0}}{{.i18n.Tr "repo.cloudbrain1"}}{{else}}{{.i18n.Tr "repo.cloudbrain2"}}{{end}}-{{.i18n.Tr "datasets"}}

-
- {{.i18n.Tr "repo.cloudbran1_tips"}} -