| @@ -1968,7 +1968,7 @@ func UpdateTrainJobVersion(job *Cloudbrain) error { | |||
| func updateJobTrainVersion(e Engine, job *Cloudbrain) error { | |||
| var sess *xorm.Session | |||
| sess = e.Where("job_id = ? AND version_name=?", job.JobID, job.VersionName) | |||
| _, err := sess.Cols("status", "train_job_duration", "duration", "start_time", "end_time", "created_unix").Update(job) | |||
| _, err := sess.Cols("status", "train_job_duration", "duration", "start_time", "end_time", "created_unix", "ai_center").Update(job) | |||
| return err | |||
| } | |||
| @@ -598,20 +598,22 @@ var ( | |||
| //grampus config | |||
| Grampus = struct { | |||
| Env string | |||
| Host string | |||
| UserName string | |||
| Password string | |||
| SpecialPools string | |||
| C2NetSequence string | |||
| SyncScriptProject string | |||
| LocalCenterID string | |||
| AiCenterInfo string | |||
| Env string | |||
| Host string | |||
| UserName string | |||
| Password string | |||
| SpecialPools string | |||
| C2NetSequence string | |||
| SyncScriptProject string | |||
| LocalCenterID string | |||
| AiCenterInfo string | |||
| AiCenterCodeAndNameInfo string | |||
| }{} | |||
| C2NetInfos *C2NetSqInfos | |||
| CenterInfos *AiCenterInfos | |||
| C2NetMapInfo map[string]*C2NetSequenceInfo | |||
| C2NetInfos *C2NetSqInfos | |||
| CenterInfos *AiCenterInfos | |||
| C2NetMapInfo map[string]*C2NetSequenceInfo | |||
| AiCenterCodeAndNameMapInfo map[string]*C2NetSequenceInfo | |||
| //elk config | |||
| ElkUrl string | |||
| @@ -1651,13 +1653,23 @@ func getGrampusConfig() { | |||
| Grampus.Password = sec.Key("PASSWORD").MustString("") | |||
| Grampus.SpecialPools = sec.Key("SPECIAL_POOL").MustString("") | |||
| Grampus.C2NetSequence = sec.Key("C2NET_SEQUENCE").MustString("{\"sequence\":[{\"id\":1,\"name\":\"cloudbrain_one\",\"content\":\"鹏城云脑一号\",\"content_en\":\"Pencheng Cloudbrain Ⅰ\"},{\"id\":2,\"name\":\"cloudbrain_two\",\"content\":\"鹏城云脑二号\",\"content_en\":\"Pencheng Cloudbrain Ⅱ\"},{\"id\":3,\"name\":\"beida\",\"content\":\"北大人工智能集群系统\",\"content_en\":\"Peking University AI Center\"},{\"id\":4,\"name\":\"hefei\",\"content\":\"合肥类脑智能开放平台\",\"content_en\":\"Hefei AI Center\"},{\"id\":5,\"name\":\"wuhan\",\"content\":\"武汉人工智能计算中心\",\"content_en\":\"Wuhan AI Center\"},{\"id\":6,\"name\":\"xian\",\"content\":\"西安未来人工智能计算中心\",\"content_en\":\"Xi'an AI Center\"},{\"id\":7,\"pclcci\":\"more\",\"content\":\"鹏城云计算所\",\"content_en\":\"Pengcheng Cloud Computing Institute\"},{\"id\":8,\"name\":\"xuchang\",\"content\":\"中原人工智能计算中心\",\"content_en\":\"Zhongyuan AI Center\"},{\"id\":9,\"name\":\"chengdu\",\"content\":\"成都人工智能计算中心\",\"content_en\":\"Chengdu AI Center\"},{\"id\":10,\"name\":\"more\",\"content\":\"横琴先进智能计算中心\",\"content_en\":\"Hengqin AI Center\"},{\"id\":11,\"name\":\"more\",\"content\":\"国家超级计算济南中心\",\"content_en\":\"HPC & AI Center\"}]}") | |||
| Grampus.AiCenterCodeAndNameInfo = sec.Key("AiCenterCodeAndName").MustString("{\"sequence\":[{\"id\":1,\"name\":\"cloudbrain_one\",\"content\":\"鹏城云脑一号\",\"content_en\":\"Pencheng Cloudbrain Ⅰ\"},{\"id\":2,\"name\":\"cloudbrain_two\",\"content\":\"鹏城云脑二号\",\"content_en\":\"Pencheng Cloudbrain Ⅱ\"},{\"id\":3,\"name\":\"beida\",\"content\":\"北大人工智能集群系统\",\"content_en\":\"Peking University AI Center\"},{\"id\":4,\"name\":\"hefei\",\"content\":\"合肥类脑智能开放平台\",\"content_en\":\"Hefei AI Center\"},{\"id\":5,\"name\":\"wuhan\",\"content\":\"武汉人工智能计算中心\",\"content_en\":\"Wuhan AI Center\"},{\"id\":6,\"name\":\"xian\",\"content\":\"西安未来人工智能计算中心\",\"content_en\":\"Xi'an AI Center\"},{\"id\":7,\"pclcci\":\"more\",\"content\":\"鹏城云计算所\",\"content_en\":\"Pengcheng Cloud Computing Institute\"},{\"id\":8,\"name\":\"xuchang\",\"content\":\"中原人工智能计算中心\",\"content_en\":\"Zhongyuan AI Center\"},{\"id\":9,\"name\":\"chengdu\",\"content\":\"成都人工智能计算中心\",\"content_en\":\"Chengdu AI Center\"},{\"id\":10,\"name\":\"more\",\"content\":\"横琴先进智能计算中心\",\"content_en\":\"Hengqin AI Center\"},{\"id\":11,\"name\":\"more\",\"content\":\"国家超级计算济南中心\",\"content_en\":\"HPC & AI Center\"}]}") | |||
| if Grampus.C2NetSequence != "" { | |||
| if err := json.Unmarshal([]byte(Grampus.C2NetSequence), &C2NetInfos); err != nil { | |||
| log.Error("Unmarshal(C2NetSequence) failed:%v", err) | |||
| } | |||
| C2NetMapInfo=make(map[string]*C2NetSequenceInfo) | |||
| for _,value :=range C2NetInfos.C2NetSqInfo{ | |||
| C2NetMapInfo[value.Name]=value | |||
| C2NetMapInfo = make(map[string]*C2NetSequenceInfo) | |||
| for _, value := range C2NetInfos.C2NetSqInfo { | |||
| C2NetMapInfo[value.Name] = value | |||
| } | |||
| } | |||
| if Grampus.AiCenterCodeAndNameInfo != "" { | |||
| if err := json.Unmarshal([]byte(Grampus.AiCenterCodeAndNameInfo), &C2NetInfos); err != nil { | |||
| log.Error("Unmarshal(AiCenterCodeAndNameInfo) failed:%v", err) | |||
| } | |||
| AiCenterCodeAndNameMapInfo = make(map[string]*C2NetSequenceInfo) | |||
| for _, value := range C2NetInfos.C2NetSqInfo { | |||
| AiCenterCodeAndNameMapInfo[value.Name] = value | |||
| } | |||
| } | |||
| Grampus.SyncScriptProject = sec.Key("SYNC_SCRIPT_PROJECT").MustString("script_for_grampus") | |||
| @@ -17,6 +17,7 @@ import ( | |||
| "code.gitea.io/gitea/modules/context" | |||
| "code.gitea.io/gitea/modules/log" | |||
| "code.gitea.io/gitea/modules/setting" | |||
| cloudbrainService "code.gitea.io/gitea/services/cloudbrain" | |||
| ) | |||
| const ( | |||
| @@ -95,6 +96,7 @@ func CloudBrains(ctx *context.Context) { | |||
| models.LoadSpecs4CloudbrainInfo(ciTasks) | |||
| for i, task := range ciTasks { | |||
| ciTasks[i] = cloudbrainService.UpdateCloudbrainAiCenter(ciTasks[i]) | |||
| ciTasks[i].CanDebug = true | |||
| ciTasks[i].CanDel = true | |||
| ciTasks[i].Cloudbrain.ComputeResource = task.ComputeResource | |||
| @@ -604,6 +604,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||
| m.Get("/resource_usage_statistic", repo.GetDurationRateStatistic) | |||
| m.Get("/resource_usage_rate_detail", repo.GetCloudbrainResourceUsageDetail) | |||
| m.Get("/apitest_for_statistic", repo.CloudbrainDurationStatisticForTest) | |||
| m.Get("/apipost_for_cloudbrain_aicenter", repo.CloudbrainUpdateAiCenter) | |||
| }) | |||
| }, operationReq) | |||
| @@ -1659,28 +1659,29 @@ func getDurationStatistic(beginTime time.Time, endTime time.Time) (models.Durati | |||
| return OpenIDurationRate, C2NetDurationRate, 0 | |||
| } | |||
| for _, cloudbrainStatistic := range cardDurationStatistics { | |||
| aiCenterName := repo.GetAiCenterNameByCode(cloudbrainStatistic.AiCenterCode) | |||
| if cloudbrainStatistic.Cluster == models.OpenICluster { | |||
| if _, ok := OpenITotalDuration[cloudbrainStatistic.AiCenterName]; !ok { | |||
| OpenITotalDuration[cloudbrainStatistic.AiCenterName] = cloudbrainStatistic.CardsTotalDuration | |||
| if _, ok := OpenITotalDuration[aiCenterName]; !ok { | |||
| OpenITotalDuration[aiCenterName] = cloudbrainStatistic.CardsTotalDuration | |||
| } else { | |||
| OpenITotalDuration[cloudbrainStatistic.AiCenterName] += cloudbrainStatistic.CardsTotalDuration | |||
| OpenITotalDuration[aiCenterName] += cloudbrainStatistic.CardsTotalDuration | |||
| } | |||
| if _, ok := OpenIUsageDuration[cloudbrainStatistic.AiCenterName]; !ok { | |||
| OpenIUsageDuration[cloudbrainStatistic.AiCenterName] = cloudbrainStatistic.CardsUseDuration | |||
| if _, ok := OpenIUsageDuration[aiCenterName]; !ok { | |||
| OpenIUsageDuration[aiCenterName] = cloudbrainStatistic.CardsUseDuration | |||
| } else { | |||
| OpenIUsageDuration[cloudbrainStatistic.AiCenterName] += cloudbrainStatistic.CardsUseDuration | |||
| OpenIUsageDuration[aiCenterName] += cloudbrainStatistic.CardsUseDuration | |||
| } | |||
| } | |||
| if cloudbrainStatistic.Cluster == models.C2NetCluster { | |||
| if _, ok := C2NetTotalDuration[cloudbrainStatistic.AiCenterName]; !ok { | |||
| C2NetTotalDuration[cloudbrainStatistic.AiCenterName] = cloudbrainStatistic.CardsTotalDuration | |||
| if _, ok := C2NetTotalDuration[aiCenterName]; !ok { | |||
| C2NetTotalDuration[aiCenterName] = cloudbrainStatistic.CardsTotalDuration | |||
| } else { | |||
| C2NetTotalDuration[cloudbrainStatistic.AiCenterName] += cloudbrainStatistic.CardsTotalDuration | |||
| C2NetTotalDuration[aiCenterName] += cloudbrainStatistic.CardsTotalDuration | |||
| } | |||
| if _, ok := C2NetUsageDuration[cloudbrainStatistic.AiCenterName]; !ok { | |||
| C2NetUsageDuration[cloudbrainStatistic.AiCenterName] = cloudbrainStatistic.CardsUseDuration | |||
| if _, ok := C2NetUsageDuration[aiCenterName]; !ok { | |||
| C2NetUsageDuration[aiCenterName] = cloudbrainStatistic.CardsUseDuration | |||
| } else { | |||
| C2NetUsageDuration[cloudbrainStatistic.AiCenterName] += cloudbrainStatistic.CardsUseDuration | |||
| C2NetUsageDuration[aiCenterName] += cloudbrainStatistic.CardsUseDuration | |||
| } | |||
| } | |||
| } | |||
| @@ -1690,16 +1691,17 @@ func getDurationStatistic(beginTime time.Time, endTime time.Time) (models.Durati | |||
| return OpenIDurationRate, C2NetDurationRate, 0 | |||
| } | |||
| for _, v := range ResourceAiCenterRes { | |||
| aiCenterName := repo.GetAiCenterNameByCode(v.AiCenterCode) | |||
| if cutString(v.AiCenterCode, 4) == cutString(models.AICenterOfCloudBrainOne, 4) { | |||
| if _, ok := OpenIUsageDuration[v.AiCenterName]; !ok { | |||
| OpenIUsageDuration[v.AiCenterName] = 0 | |||
| if _, ok := OpenIUsageDuration[aiCenterName]; !ok { | |||
| OpenIUsageDuration[aiCenterName] = 0 | |||
| } | |||
| if _, ok := OpenITotalDuration[v.AiCenterName]; !ok { | |||
| OpenITotalDuration[v.AiCenterName] = 0 | |||
| if _, ok := OpenITotalDuration[aiCenterName]; !ok { | |||
| OpenITotalDuration[aiCenterName] = 0 | |||
| } | |||
| } else { | |||
| if _, ok := C2NetUsageDuration[v.AiCenterName]; !ok { | |||
| C2NetUsageDuration[v.AiCenterName] = 0 | |||
| if _, ok := C2NetUsageDuration[aiCenterName]; !ok { | |||
| C2NetUsageDuration[aiCenterName] = 0 | |||
| } | |||
| } | |||
| } | |||
| @@ -1831,3 +1833,10 @@ func getHourCloudbrainDuration(beginTime time.Time, endTime time.Time, aiCenterC | |||
| hourTimeStatistic.HourTimeUsageRate = hourTimeUsageRate | |||
| return hourTimeStatistic, nil | |||
| } | |||
| func CloudbrainUpdateAiCenter(ctx *context.Context) { | |||
| // repo.CloudbrainDurationStatisticHour() | |||
| ctx.JSON(http.StatusOK, map[string]interface{}{ | |||
| "message": 0, | |||
| }) | |||
| } | |||
| @@ -173,7 +173,6 @@ func GetModelArtsTrainJobVersion(ctx *context.APIContext) { | |||
| if len(result.JobInfo.Tasks) > 0 { | |||
| if len(result.JobInfo.Tasks[0].CenterID) > 0 && len(result.JobInfo.Tasks[0].CenterName) > 0 { | |||
| job.AiCenter = result.JobInfo.Tasks[0].CenterID[0] + "+" + result.JobInfo.Tasks[0].CenterName[0] | |||
| // aiCenterName = result.JobInfo.Tasks[0].CenterName[0] | |||
| aiCenterName = cloudbrainService.GetAiCenterShow(job.AiCenter, ctx.Context) | |||
| } | |||
| } | |||
| @@ -7,6 +7,7 @@ import ( | |||
| "code.gitea.io/gitea/models" | |||
| "code.gitea.io/gitea/modules/log" | |||
| "code.gitea.io/gitea/modules/timeutil" | |||
| cloudbrainService "code.gitea.io/gitea/services/cloudbrain" | |||
| ) | |||
| func CloudbrainDurationStatisticHour() { | |||
| @@ -27,12 +28,13 @@ func CloudbrainDurationStatisticHour() { | |||
| log.Info("GetCloudbrainByTime err: %v", err) | |||
| return | |||
| } | |||
| specMap := make(map[string]*models.Specification) | |||
| cloudbrainMap := make(map[string]*models.Cloudbrain) | |||
| models.LoadSpecs4CloudbrainInfo(ciTasks) | |||
| for _, cloudbrain := range ciTasks { | |||
| if _, ok := specMap[cloudbrain.Cloudbrain.Spec.AiCenterCode+"/"+cloudbrain.Cloudbrain.Spec.AccCardType]; !ok { | |||
| cloudbrain = cloudbrainService.UpdateCloudbrainAiCenter(cloudbrain) | |||
| if _, ok := cloudbrainMap[cloudbrain.Cloudbrain.AiCenter+"/"+cloudbrain.Cloudbrain.Spec.AccCardType]; !ok { | |||
| if cloudbrain.Cloudbrain.Spec != nil { | |||
| specMap[cloudbrain.Cloudbrain.Spec.AiCenterCode+"/"+cloudbrain.Cloudbrain.Spec.AccCardType] = cloudbrain.Cloudbrain.Spec | |||
| cloudbrainMap[cloudbrain.Cloudbrain.AiCenter+"/"+cloudbrain.Cloudbrain.Spec.AccCardType] = &cloudbrain.Cloudbrain | |||
| } | |||
| } | |||
| } | |||
| @@ -46,43 +48,43 @@ func CloudbrainDurationStatisticHour() { | |||
| } | |||
| cardsTotalDurationMap := make(map[string]int) | |||
| for _, resourceQueue := range resourceQueues { | |||
| cardsTotalDurationMap[resourceQueue.Cluster+"/"+resourceQueue.AiCenterName+"/"+resourceQueue.AiCenterCode+"/"+resourceQueue.AccCardType+"/"+resourceQueue.ComputeResource] = resourceQueue.CardsTotalNum * 1 * 60 * 60 | |||
| cardsTotalDurationMap[resourceQueue.Cluster+"/"+resourceQueue.AiCenterCode+"/"+resourceQueue.AccCardType+"/"+resourceQueue.ComputeResource] = resourceQueue.CardsTotalNum * 1 * 60 * 60 | |||
| } | |||
| for centerCode, CardTypeInfo := range cloudBrainCenterCodeAndCardTypeInfo { | |||
| for cardType, cardDuration := range CardTypeInfo { | |||
| spec := specMap[centerCode+"/"+cardType] | |||
| if spec != nil { | |||
| for centerCode, CardTypes := range cloudBrainCenterCodeAndCardTypeInfo { | |||
| for cardType, cardDuration := range CardTypes { | |||
| cloudbrainTable := cloudbrainMap[centerCode+"/"+cardType] | |||
| if cloudbrainTable != nil { | |||
| if err := models.DeleteCloudbrainDurationStatisticHour(dayTime, hourTime, centerCode, cardType); err != nil { | |||
| log.Error("DeleteCloudbrainDurationStatisticHour failed: %v", err.Error()) | |||
| return | |||
| } | |||
| if _, ok := cardsTotalDurationMap[spec.Cluster+"/"+spec.AiCenterName+"/"+centerCode+"/"+cardType+"/"+spec.ComputeResource]; !ok { | |||
| cardsTotalDurationMap[spec.Cluster+"/"+spec.AiCenterName+"/"+centerCode+"/"+cardType+"/"+spec.ComputeResource] = 0 | |||
| if _, ok := cardsTotalDurationMap[cloudbrainTable.Cluster+"/"+centerCode+"/"+cardType+"/"+cloudbrainTable.ComputeResource]; !ok { | |||
| cardsTotalDurationMap[cloudbrainTable.Cluster+"/"+centerCode+"/"+cardType+"/"+cloudbrainTable.ComputeResource] = 0 | |||
| } | |||
| cloudbrainDurationStat := models.CloudbrainDurationStatistic{ | |||
| DateTime: dateTime, | |||
| DayTime: dayTime, | |||
| HourTime: hourTime, | |||
| Cluster: spec.Cluster, | |||
| AiCenterName: spec.AiCenterName, | |||
| Cluster: cloudbrainTable.Cluster, | |||
| AiCenterName: GetAiCenterNameByCode(centerCode), | |||
| AiCenterCode: centerCode, | |||
| AccCardType: cardType, | |||
| ComputeResource: spec.ComputeResource, | |||
| ComputeResource: cloudbrainTable.ComputeResource, | |||
| CardsUseDuration: cardDuration, | |||
| CardsTotalDuration: cardsTotalDurationMap[spec.Cluster+"/"+spec.AiCenterName+"/"+centerCode+"/"+cardType+"/"+spec.ComputeResource], | |||
| CardsTotalDuration: cardsTotalDurationMap[cloudbrainTable.Cluster+"/"+centerCode+"/"+cardType+"/"+cloudbrainTable.ComputeResource], | |||
| CreatedUnix: timeutil.TimeStampNow(), | |||
| } | |||
| if _, err = models.InsertCloudbrainDurationStatistic(&cloudbrainDurationStat); err != nil { | |||
| log.Error("Insert cloudbrainDurationStat failed: %v", err.Error()) | |||
| } | |||
| delete(cardsTotalDurationMap, spec.Cluster+"/"+spec.AiCenterName+"/"+centerCode+"/"+cardType+"/"+spec.ComputeResource) | |||
| delete(cardsTotalDurationMap, cloudbrainTable.Cluster+"/"+centerCode+"/"+cardType+"/"+cloudbrainTable.ComputeResource) | |||
| } | |||
| } | |||
| } | |||
| for key, cardsTotalDuration := range cardsTotalDurationMap { | |||
| if err := models.DeleteCloudbrainDurationStatisticHour(dayTime, hourTime, strings.Split(key, "/")[2], strings.Split(key, "/")[3]); err != nil { | |||
| if err := models.DeleteCloudbrainDurationStatisticHour(dayTime, hourTime, strings.Split(key, "/")[1], strings.Split(key, "/")[2]); err != nil { | |||
| log.Error("DeleteCloudbrainDurationStatisticHour failed: %v", err.Error()) | |||
| return | |||
| } | |||
| @@ -91,10 +93,10 @@ func CloudbrainDurationStatisticHour() { | |||
| DayTime: dayTime, | |||
| HourTime: hourTime, | |||
| Cluster: strings.Split(key, "/")[0], | |||
| AiCenterName: strings.Split(key, "/")[1], | |||
| AiCenterCode: strings.Split(key, "/")[2], | |||
| AccCardType: strings.Split(key, "/")[3], | |||
| ComputeResource: strings.Split(key, "/")[4], | |||
| AiCenterName: GetAiCenterNameByCode(strings.Split(key, "/")[1]), | |||
| AiCenterCode: strings.Split(key, "/")[1], | |||
| AccCardType: strings.Split(key, "/")[2], | |||
| ComputeResource: strings.Split(key, "/")[3], | |||
| CardsUseDuration: 0, | |||
| CardsTotalDuration: cardsTotalDuration, | |||
| CreatedUnix: timeutil.TimeStampNow(), | |||
| @@ -107,12 +109,24 @@ func CloudbrainDurationStatisticHour() { | |||
| log.Info("finish summary cloudbrainDurationStat") | |||
| } | |||
| func GetAiCenterNameByCode(centerCode string) string { | |||
| var aiCenterName string | |||
| c2NetSequenceInfo := cloudbrainService.C2NetSequenceInfoByCode(centerCode) | |||
| if c2NetSequenceInfo != nil { | |||
| aiCenterName = c2NetSequenceInfo.Content | |||
| } else { | |||
| aiCenterName = "" | |||
| } | |||
| return aiCenterName | |||
| } | |||
| func getcloudBrainCenterCodeAndCardTypeInfo(ciTasks []*models.CloudbrainInfo, beginTime int64, endTime int64) map[string]map[string]int { | |||
| var WorkServerNumber int | |||
| var AccCardsNum int | |||
| cloudBrainCenterCodeAndCardType := make(map[string]map[string]int) | |||
| for _, cloudbrain := range ciTasks { | |||
| cloudbrain = cloudbrainService.UpdateCloudbrainAiCenter(cloudbrain) | |||
| if cloudbrain.Cloudbrain.StartTime == 0 { | |||
| cloudbrain.Cloudbrain.StartTime = cloudbrain.Cloudbrain.CreatedUnix | |||
| } | |||
| @@ -129,36 +143,36 @@ func getcloudBrainCenterCodeAndCardTypeInfo(ciTasks []*models.CloudbrainInfo, be | |||
| } else { | |||
| AccCardsNum = cloudbrain.Cloudbrain.Spec.AccCardsNum | |||
| } | |||
| if _, ok := cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode]; !ok { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode] = make(map[string]int) | |||
| if _, ok := cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.AiCenter]; !ok { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.AiCenter] = make(map[string]int) | |||
| } | |||
| if cloudbrain.Cloudbrain.Status == string(models.ModelArtsRunning) { | |||
| if _, ok := cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][cloudbrain.Cloudbrain.Spec.AccCardType]; !ok { | |||
| if _, ok := cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.AiCenter][cloudbrain.Cloudbrain.Spec.AccCardType]; !ok { | |||
| if int64(cloudbrain.Cloudbrain.StartTime) < beginTime { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][cloudbrain.Cloudbrain.Spec.AccCardType] = AccCardsNum * WorkServerNumber * (int(endTime) - int(beginTime)) | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.AiCenter][cloudbrain.Cloudbrain.Spec.AccCardType] = AccCardsNum * WorkServerNumber * (int(endTime) - int(beginTime)) | |||
| } else { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][cloudbrain.Cloudbrain.Spec.AccCardType] = AccCardsNum * WorkServerNumber * (int(endTime) - int(cloudbrain.Cloudbrain.StartTime)) | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.AiCenter][cloudbrain.Cloudbrain.Spec.AccCardType] = AccCardsNum * WorkServerNumber * (int(endTime) - int(cloudbrain.Cloudbrain.StartTime)) | |||
| } | |||
| } else { | |||
| if int64(cloudbrain.Cloudbrain.StartTime) < beginTime { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][cloudbrain.Cloudbrain.Spec.AccCardType] += AccCardsNum * WorkServerNumber * (int(endTime) - int(beginTime)) | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.AiCenter][cloudbrain.Cloudbrain.Spec.AccCardType] += AccCardsNum * WorkServerNumber * (int(endTime) - int(beginTime)) | |||
| } else { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][cloudbrain.Cloudbrain.Spec.AccCardType] += AccCardsNum * WorkServerNumber * (int(endTime) - int(cloudbrain.Cloudbrain.StartTime)) | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.AiCenter][cloudbrain.Cloudbrain.Spec.AccCardType] += AccCardsNum * WorkServerNumber * (int(endTime) - int(cloudbrain.Cloudbrain.StartTime)) | |||
| } | |||
| } | |||
| } else { | |||
| if _, ok := cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][cloudbrain.Cloudbrain.Spec.AccCardType]; !ok { | |||
| if _, ok := cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.AiCenter][cloudbrain.Cloudbrain.Spec.AccCardType]; !ok { | |||
| if int64(cloudbrain.Cloudbrain.StartTime) < beginTime { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][cloudbrain.Cloudbrain.Spec.AccCardType] = AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(beginTime)) | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.AiCenter][cloudbrain.Cloudbrain.Spec.AccCardType] = AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(beginTime)) | |||
| } else { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][cloudbrain.Cloudbrain.Spec.AccCardType] = AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(cloudbrain.Cloudbrain.StartTime)) | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.AiCenter][cloudbrain.Cloudbrain.Spec.AccCardType] = AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(cloudbrain.Cloudbrain.StartTime)) | |||
| } | |||
| } else { | |||
| if int64(cloudbrain.Cloudbrain.StartTime) < beginTime { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][cloudbrain.Cloudbrain.Spec.AccCardType] += AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(beginTime)) | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.AiCenter][cloudbrain.Cloudbrain.Spec.AccCardType] += AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(beginTime)) | |||
| } else { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][cloudbrain.Cloudbrain.Spec.AccCardType] += AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(cloudbrain.Cloudbrain.StartTime)) | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.AiCenter][cloudbrain.Cloudbrain.Spec.AccCardType] += AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(cloudbrain.Cloudbrain.StartTime)) | |||
| } | |||
| } | |||
| @@ -23,6 +23,7 @@ import ( | |||
| "code.gitea.io/gitea/modules/modelarts" | |||
| "code.gitea.io/gitea/modules/setting" | |||
| "code.gitea.io/gitea/modules/util" | |||
| cloudbrainService "code.gitea.io/gitea/services/cloudbrain" | |||
| issue_service "code.gitea.io/gitea/services/issue" | |||
| pull_service "code.gitea.io/gitea/services/pull" | |||
| @@ -837,6 +838,7 @@ func Cloudbrains(ctx *context.Context) { | |||
| } | |||
| models.LoadSpecs4CloudbrainInfo(ciTasks) | |||
| for i, _ := range ciTasks { | |||
| ciTasks[i] = cloudbrainService.UpdateCloudbrainAiCenter(ciTasks[i]) | |||
| ciTasks[i].CanDebug = true | |||
| ciTasks[i].CanDel = true | |||
| ciTasks[i].Cloudbrain.ComputeResource = ciTasks[i].ComputeResource | |||
| @@ -1,27 +1,29 @@ | |||
| package cloudbrain | |||
| import ( | |||
| "strings" | |||
| "code.gitea.io/gitea/models" | |||
| "code.gitea.io/gitea/modules/context" | |||
| "code.gitea.io/gitea/modules/setting" | |||
| "strings" | |||
| ) | |||
| func GetAiCenterShow(aiCenter string,ctx *context.Context) string{ | |||
| func GetAiCenterShow(aiCenter string, ctx *context.Context) string { | |||
| aiCenterInfo := strings.Split(aiCenter, "+") | |||
| if len(aiCenterInfo) == 2{ | |||
| if setting.C2NetMapInfo!=nil { | |||
| if info,ok:=setting.C2NetMapInfo[aiCenterInfo[0]];ok { | |||
| if len(aiCenterInfo) == 2 { | |||
| if setting.C2NetMapInfo != nil { | |||
| if info, ok := setting.C2NetMapInfo[aiCenterInfo[0]]; ok { | |||
| if ctx.Language() == "zh-CN" { | |||
| return info.Content | |||
| } else { | |||
| return info.ContentEN | |||
| } | |||
| }else{ | |||
| } else { | |||
| return aiCenterInfo[1] | |||
| } | |||
| }else{ | |||
| } else { | |||
| return aiCenterInfo[1] | |||
| } | |||
| @@ -29,5 +31,42 @@ func GetAiCenterShow(aiCenter string,ctx *context.Context) string{ | |||
| return "" | |||
| } | |||
| func C2NetSequenceInfoByCode(aiCenterCode string) *setting.C2NetSequenceInfo { | |||
| if setting.AiCenterCodeAndNameMapInfo != nil { | |||
| if info, ok := setting.AiCenterCodeAndNameMapInfo[aiCenterCode]; ok { | |||
| return info | |||
| } else { | |||
| return nil | |||
| } | |||
| } else { | |||
| return nil | |||
| } | |||
| } | |||
| func getAiCenterCode(aiCenter string) string { | |||
| aiCenterInfo := strings.Split(aiCenter, "+") | |||
| return aiCenterInfo[0] | |||
| } | |||
| func UpdateCloudbrainAiCenter(cloudbrain *models.CloudbrainInfo) *models.CloudbrainInfo { | |||
| if cloudbrain.Cloudbrain.Type == models.TypeCloudBrainOne { | |||
| cloudbrain.Cloudbrain.AiCenter = models.AICenterOfCloudBrainOne | |||
| cloudbrain.Cloudbrain.Cluster = models.OpenICluster | |||
| } | |||
| if cloudbrain.Cloudbrain.Type == models.TypeCloudBrainTwo { | |||
| cloudbrain.Cloudbrain.AiCenter = models.AICenterOfCloudBrainTwo | |||
| cloudbrain.Cloudbrain.Cluster = models.OpenICluster | |||
| } | |||
| if cloudbrain.Cloudbrain.Type == models.TypeCDCenter { | |||
| cloudbrain.Cloudbrain.AiCenter = models.AICenterOfChengdu | |||
| cloudbrain.Cloudbrain.Cluster = models.OpenICluster | |||
| } | |||
| if cloudbrain.Cloudbrain.Type == models.TypeC2Net && cloudbrain.Cloudbrain.AiCenter != "" { | |||
| cloudbrain.Cloudbrain.AiCenter = getAiCenterCode(cloudbrain.Cloudbrain.AiCenter) | |||
| cloudbrain.Cloudbrain.Cluster = models.C2NetCluster | |||
| } | |||
| return cloudbrain | |||
| } | |||