| @@ -46,11 +46,11 @@ type CloudbrainDurationStatistic struct { | |||
| AiCenterName string | |||
| ComputeResource string | |||
| AccCardType string | |||
| TotalCanUse bool | |||
| DateTime string | |||
| DayTime string | |||
| HourTime int | |||
| CardsUseDuration int | |||
| CardsTotalDuration int | |||
| CardsTotalNum int | |||
| @@ -271,13 +271,16 @@ func GetCloudbrainRunning() ([]*CloudbrainInfo, error) { | |||
| return cloudbrains, nil | |||
| } | |||
| func GetCloudbrainCompleteByTime(beginTime int64, endTime int64) ([]*CloudbrainInfo, error) { | |||
| func GetCloudbrainByTime(beginTime int64, endTime int64) ([]*CloudbrainInfo, error) { | |||
| sess := x.NewSession() | |||
| defer sess.Close() | |||
| var cond = builder.NewCond() | |||
| cond = cond.And( | |||
| builder.And(builder.Gte{"cloudbrain.end_time": beginTime}, builder.Lte{"cloudbrain.end_time": endTime}), | |||
| ) | |||
| cond = cond.Or( | |||
| builder.Eq{"cloudbrain.status": string(JobRunning)}, | |||
| ) | |||
| sess.OrderBy("cloudbrain.created_unix ASC") | |||
| cloudbrains := make([]*CloudbrainInfo, 0, 10) | |||
| if err := sess.Table(&Cloudbrain{}).Unscoped().Where(cond). | |||
| @@ -306,14 +309,14 @@ func InsertCloudbrainDurationStatistic(cloudbrainDurationStatistic *CloudbrainDu | |||
| return xStatistic.Insert(cloudbrainDurationStatistic) | |||
| } | |||
| func DeleteCloudbrainDurationStatisticHour(date string, hour int, aiCenterCode string, accCardType string, totalCanUse bool) error { | |||
| func DeleteCloudbrainDurationStatisticHour(date string, hour int, aiCenterCode string, accCardType string) error { | |||
| sess := xStatistic.NewSession() | |||
| defer sess.Close() | |||
| if err := sess.Begin(); err != nil { | |||
| return fmt.Errorf("Begin: %v", err) | |||
| } | |||
| if _, err := sess.Where("day_time = ? AND hour_time = ? AND ai_center_code = ? AND acc_card_type = ? And total_can_use = ?", date, hour, aiCenterCode, accCardType, totalCanUse).Delete(&CloudbrainDurationStatistic{}); err != nil { | |||
| if _, err := sess.Where("day_time = ? AND hour_time = ? AND ai_center_code = ? AND acc_card_type = ?", date, hour, aiCenterCode, accCardType).Delete(&CloudbrainDurationStatistic{}); err != nil { | |||
| return fmt.Errorf("Delete: %v", err) | |||
| } | |||
| @@ -270,7 +270,7 @@ func registerHandleCloudbrainDurationStatistic() { | |||
| RegisterTaskFatal("handle_cloudbrain_duration_statistic", &BaseConfig{ | |||
| Enabled: true, | |||
| RunAtStart: false, | |||
| Schedule: "59 59 * * * ?", | |||
| Schedule: "1 0 * * * ?", | |||
| }, func(ctx context.Context, _ *models.User, _ Config) error { | |||
| repo.CloudbrainDurationStatisticHour() | |||
| return nil | |||
| @@ -1422,7 +1422,6 @@ func GetCloudbrainResourceOverview(ctx *context.Context) { | |||
| log.Info("GetCanUseCardInfo err: %v", err) | |||
| return | |||
| } | |||
| log.Info("resourceQueues:", resourceQueues) | |||
| OpenIResourceDetail := []models.ResourceDetail{} | |||
| C2NetResourceDetail := []models.ResourceDetail{} | |||
| for _, resourceQueue := range resourceQueues { | |||
| @@ -1451,52 +1450,30 @@ func GetCloudbrainResourceOverview(ctx *context.Context) { | |||
| C2NetResourceDetail = append(C2NetResourceDetail, resourceDetail) | |||
| } | |||
| } | |||
| AiCenterNameList := make(map[string]string) | |||
| CardTypeList := make(map[string]string) | |||
| openIResourceNum := make(map[string]map[string]int) | |||
| for _, openIResourceDetail := range OpenIResourceDetail { | |||
| if _, ok := AiCenterNameList[openIResourceDetail.AiCenterName]; !ok { | |||
| AiCenterNameList[openIResourceDetail.AiCenterName] = openIResourceDetail.AiCenterName | |||
| if _, ok := openIResourceNum[openIResourceDetail.AiCenterName]; !ok { | |||
| openIResourceNum[openIResourceDetail.AiCenterName] = make(map[string]int) | |||
| } | |||
| for k, _ := range AiCenterNameList { | |||
| if openIResourceNum[AiCenterNameList[k]] == nil { | |||
| openIResourceNum[AiCenterNameList[k]] = make(map[string]int) | |||
| } | |||
| if openIResourceDetail.AiCenterName == AiCenterNameList[k] { | |||
| if _, ok := CardTypeList[openIResourceDetail.AccCardType]; !ok { | |||
| CardTypeList[openIResourceDetail.AccCardType] = openIResourceDetail.AccCardType | |||
| } | |||
| for i, _ := range CardTypeList { | |||
| if openIResourceDetail.AccCardType == CardTypeList[i] { | |||
| openIResourceNum[AiCenterNameList[k]][CardTypeList[i]] += openIResourceDetail.CardsTotalNum | |||
| } | |||
| } | |||
| } | |||
| if _, ok := openIResourceNum[openIResourceDetail.AiCenterName][openIResourceDetail.AccCardType]; !ok { | |||
| openIResourceNum[openIResourceDetail.AiCenterName][openIResourceDetail.AccCardType] = openIResourceDetail.CardsTotalNum | |||
| } else { | |||
| openIResourceNum[openIResourceDetail.AiCenterName][openIResourceDetail.AccCardType] += openIResourceDetail.CardsTotalNum | |||
| } | |||
| } | |||
| c2NetAiCenterNameList := make(map[string]string) | |||
| c2NetCardTypeList := make(map[string]string) | |||
| c2NetResourceNum := make(map[string]map[string]int) | |||
| for _, c2NetResourceDetail := range C2NetResourceDetail { | |||
| if _, ok := c2NetAiCenterNameList[c2NetResourceDetail.AiCenterName]; !ok { | |||
| c2NetAiCenterNameList[c2NetResourceDetail.AiCenterName] = c2NetResourceDetail.AiCenterName | |||
| if _, ok := c2NetResourceNum[c2NetResourceDetail.AiCenterName]; !ok { | |||
| c2NetResourceNum[c2NetResourceDetail.AiCenterName] = make(map[string]int) | |||
| } | |||
| for k, _ := range c2NetAiCenterNameList { | |||
| if c2NetResourceNum[c2NetAiCenterNameList[k]] == nil { | |||
| c2NetResourceNum[c2NetAiCenterNameList[k]] = make(map[string]int) | |||
| } | |||
| if c2NetResourceDetail.AiCenterName == c2NetAiCenterNameList[k] { | |||
| if _, ok := c2NetCardTypeList[c2NetResourceDetail.AccCardType]; !ok { | |||
| c2NetCardTypeList[c2NetResourceDetail.AccCardType] = c2NetResourceDetail.AccCardType | |||
| } | |||
| for i, _ := range c2NetCardTypeList { | |||
| if c2NetResourceDetail.AccCardType == c2NetCardTypeList[i] { | |||
| c2NetResourceNum[c2NetAiCenterNameList[k]][c2NetCardTypeList[i]] += c2NetResourceDetail.CardsTotalNum | |||
| } | |||
| } | |||
| } | |||
| if _, ok := c2NetResourceNum[c2NetResourceDetail.AiCenterName][c2NetResourceDetail.AccCardType]; !ok { | |||
| c2NetResourceNum[c2NetResourceDetail.AiCenterName][c2NetResourceDetail.AccCardType] = c2NetResourceDetail.CardsTotalNum | |||
| } else { | |||
| c2NetResourceNum[c2NetResourceDetail.AiCenterName][c2NetResourceDetail.AccCardType] += c2NetResourceDetail.CardsTotalNum | |||
| } | |||
| } | |||
| ctx.JSON(http.StatusOK, map[string]interface{}{ | |||
| @@ -1649,11 +1626,8 @@ func getAiCenterUsageDuration(beginTime time.Time, endTime time.Time, cloudbrain | |||
| for _, cloudbrainStatistic := range cloudbrainStatistics { | |||
| if int64(cloudbrainStatistic.CreatedUnix) >= beginTime.Unix() && int64(cloudbrainStatistic.CreatedUnix) < endTime.Unix() { | |||
| if cloudbrainStatistic.TotalCanUse { | |||
| totalDuration += cloudbrainStatistic.CardsTotalDuration | |||
| } else { | |||
| usageDuration += cloudbrainStatistic.CardsTotalDuration | |||
| } | |||
| totalDuration += cloudbrainStatistic.CardsTotalDuration | |||
| usageDuration += cloudbrainStatistic.CardsUseDuration | |||
| } | |||
| } | |||
| if totalDuration == 0 || usageDuration == 0 { | |||
| @@ -1669,6 +1643,7 @@ func getDurationStatistic(beginTime time.Time, endTime time.Time) (models.Durati | |||
| OpenITotalDuration := make(map[string]int) | |||
| OpenIUsageDuration := make(map[string]int) | |||
| OpenIUsageRate := make(map[string]float64) | |||
| C2NetTotalDuration := make(map[string]int) | |||
| C2NetUsageDuration := make(map[string]int) | |||
| OpenIDurationRate := models.DurationRateStatistic{} | |||
| @@ -1683,33 +1658,27 @@ func getDurationStatistic(beginTime time.Time, endTime time.Time) (models.Durati | |||
| } | |||
| for _, cloudbrainStatistic := range cardDurationStatistics { | |||
| if cloudbrainStatistic.Cluster == models.OpenICluster { | |||
| if cloudbrainStatistic.TotalCanUse { | |||
| if _, ok := OpenITotalDuration[cloudbrainStatistic.AiCenterName]; !ok { | |||
| OpenITotalDuration[cloudbrainStatistic.AiCenterName] = cloudbrainStatistic.CardsTotalDuration | |||
| } else { | |||
| OpenITotalDuration[cloudbrainStatistic.AiCenterName] += cloudbrainStatistic.CardsTotalDuration | |||
| } | |||
| if _, ok := OpenITotalDuration[cloudbrainStatistic.AiCenterName]; !ok { | |||
| OpenITotalDuration[cloudbrainStatistic.AiCenterName] = cloudbrainStatistic.CardsTotalDuration | |||
| } else { | |||
| if _, ok := OpenIUsageDuration[cloudbrainStatistic.AiCenterName]; !ok { | |||
| OpenIUsageDuration[cloudbrainStatistic.AiCenterName] = cloudbrainStatistic.CardsTotalDuration | |||
| } else { | |||
| OpenIUsageDuration[cloudbrainStatistic.AiCenterName] += cloudbrainStatistic.CardsTotalDuration | |||
| } | |||
| OpenITotalDuration[cloudbrainStatistic.AiCenterName] += cloudbrainStatistic.CardsTotalDuration | |||
| } | |||
| if _, ok := OpenIUsageDuration[cloudbrainStatistic.AiCenterName]; !ok { | |||
| OpenIUsageDuration[cloudbrainStatistic.AiCenterName] = cloudbrainStatistic.CardsUseDuration | |||
| } else { | |||
| OpenIUsageDuration[cloudbrainStatistic.AiCenterName] += cloudbrainStatistic.CardsUseDuration | |||
| } | |||
| } | |||
| if cloudbrainStatistic.Cluster == models.C2NetCluster { | |||
| if cloudbrainStatistic.TotalCanUse { | |||
| if _, ok := C2NetTotalDuration[cloudbrainStatistic.AiCenterName]; !ok { | |||
| C2NetTotalDuration[cloudbrainStatistic.AiCenterName] = cloudbrainStatistic.CardsTotalDuration | |||
| } else { | |||
| C2NetTotalDuration[cloudbrainStatistic.AiCenterName] += cloudbrainStatistic.CardsTotalDuration | |||
| } | |||
| if _, ok := C2NetTotalDuration[cloudbrainStatistic.AiCenterName]; !ok { | |||
| C2NetTotalDuration[cloudbrainStatistic.AiCenterName] = cloudbrainStatistic.CardsTotalDuration | |||
| } else { | |||
| if _, ok := C2NetUsageDuration[cloudbrainStatistic.AiCenterName]; !ok { | |||
| C2NetUsageDuration[cloudbrainStatistic.AiCenterName] = cloudbrainStatistic.CardsTotalDuration | |||
| } else { | |||
| C2NetUsageDuration[cloudbrainStatistic.AiCenterName] += cloudbrainStatistic.CardsTotalDuration | |||
| } | |||
| C2NetTotalDuration[cloudbrainStatistic.AiCenterName] += cloudbrainStatistic.CardsTotalDuration | |||
| } | |||
| if _, ok := C2NetUsageDuration[cloudbrainStatistic.AiCenterName]; !ok { | |||
| C2NetUsageDuration[cloudbrainStatistic.AiCenterName] = cloudbrainStatistic.CardsUseDuration | |||
| } else { | |||
| C2NetUsageDuration[cloudbrainStatistic.AiCenterName] += cloudbrainStatistic.CardsUseDuration | |||
| } | |||
| } | |||
| } | |||
| @@ -1821,18 +1790,15 @@ func getHourCloudbrainDuration(beginTime time.Time, endTime time.Time, aiCenterC | |||
| } | |||
| for _, cloudbrainStatistic := range cardDurationStatistics { | |||
| if cloudbrainStatistic.AiCenterCode == aiCenterCode { | |||
| if cloudbrainStatistic.TotalCanUse { | |||
| if _, ok := hourTimeTotalDuration[strconv.Itoa(cloudbrainStatistic.HourTime)]; !ok { | |||
| hourTimeTotalDuration[strconv.Itoa(cloudbrainStatistic.HourTime)] = cloudbrainStatistic.CardsTotalDuration | |||
| } else { | |||
| hourTimeTotalDuration[strconv.Itoa(cloudbrainStatistic.HourTime)] += cloudbrainStatistic.CardsTotalDuration | |||
| } | |||
| if _, ok := hourTimeTotalDuration[strconv.Itoa(cloudbrainStatistic.HourTime)]; !ok { | |||
| hourTimeTotalDuration[strconv.Itoa(cloudbrainStatistic.HourTime)] = cloudbrainStatistic.CardsTotalDuration | |||
| } else { | |||
| if _, ok := hourTimeUsageDuration[strconv.Itoa(cloudbrainStatistic.HourTime)]; !ok { | |||
| hourTimeUsageDuration[strconv.Itoa(cloudbrainStatistic.HourTime)] = cloudbrainStatistic.CardsTotalDuration | |||
| } else { | |||
| hourTimeUsageDuration[strconv.Itoa(cloudbrainStatistic.HourTime)] += cloudbrainStatistic.CardsTotalDuration | |||
| } | |||
| hourTimeTotalDuration[strconv.Itoa(cloudbrainStatistic.HourTime)] += cloudbrainStatistic.CardsTotalDuration | |||
| } | |||
| if _, ok := hourTimeUsageDuration[strconv.Itoa(cloudbrainStatistic.HourTime)]; !ok { | |||
| hourTimeUsageDuration[strconv.Itoa(cloudbrainStatistic.HourTime)] = cloudbrainStatistic.CardsUseDuration | |||
| } else { | |||
| hourTimeUsageDuration[strconv.Itoa(cloudbrainStatistic.HourTime)] += cloudbrainStatistic.CardsUseDuration | |||
| } | |||
| } | |||
| } | |||
| @@ -1,6 +1,7 @@ | |||
| package repo | |||
| import ( | |||
| "strings" | |||
| "time" | |||
| "code.gitea.io/gitea/models" | |||
| @@ -9,106 +10,110 @@ import ( | |||
| ) | |||
| func CloudbrainDurationStatisticHour() { | |||
| hourTime := time.Now().Hour() | |||
| dateTime := time.Now().Format("2006-01-02 15:04:05") | |||
| dayTime := time.Now().Format("2006-01-02") | |||
| now := time.Now() | |||
| currentTime := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()) | |||
| currentTime := time.Now() | |||
| m, _ := time.ParseDuration("-1h") | |||
| beginTime := currentTime.Add(m).Unix() | |||
| endTime := currentTime.Unix() | |||
| hourTime := currentTime.Add(m).Hour() | |||
| ciTasks1, err := models.GetCloudbrainRunning() | |||
| ciTasks, err := models.GetCloudbrainByTime(beginTime, endTime) | |||
| if err != nil { | |||
| log.Info("GetCloudbrainRunning err: %v", err) | |||
| log.Info("GetCloudbrainByTime err: %v", err) | |||
| return | |||
| } | |||
| ciTasks2, err := models.GetCloudbrainCompleteByTime(beginTime, endTime) | |||
| ciTasks := append(ciTasks1, ciTasks2...) | |||
| specMap := make(map[string]*models.Specification) | |||
| models.LoadSpecs4CloudbrainInfo(ciTasks) | |||
| for _, cloudbrain := range ciTasks { | |||
| if _, ok := specMap[cloudbrain.Cloudbrain.Spec.AiCenterCode+"/"+cloudbrain.Cloudbrain.Spec.AccCardType]; !ok { | |||
| if cloudbrain.Cloudbrain.Spec != nil { | |||
| specMap[cloudbrain.Cloudbrain.Spec.AiCenterCode+"/"+cloudbrain.Cloudbrain.Spec.AccCardType] = cloudbrain.Cloudbrain.Spec | |||
| } | |||
| } | |||
| } | |||
| cloudBrainCenterCodeAndCardTypeInfo := getcloudBrainCenterCodeAndCardTypeInfo(ciTasks, beginTime, endTime) | |||
| resourceQueues, err := models.GetCanUseCardInfo() | |||
| if err != nil { | |||
| log.Info("GetCloudbrainCompleteByTime err: %v", err) | |||
| log.Info("GetCanUseCardInfo err: %v", err) | |||
| return | |||
| } | |||
| models.LoadSpecs4CloudbrainInfo(ciTasks) | |||
| cloudBrainCenterCodeAndCardTypeInfo := getcloudBrainCenterCodeAndCardTypeInfo(ciTasks, beginTime, endTime) | |||
| 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 | |||
| } | |||
| log.Info("cardsTotalDurationMap: %v", cardsTotalDurationMap) | |||
| log.Info("cloudBrainCenterCodeAndCardTypeInfo: %v", cloudBrainCenterCodeAndCardTypeInfo) | |||
| for centerCode, CardTypeInfo := range cloudBrainCenterCodeAndCardTypeInfo { | |||
| for cardType, cardDuration := range CardTypeInfo { | |||
| cloudbrain, err := models.GetSpecByAiCenterCodeAndType(centerCode, cardType) | |||
| if err != nil { | |||
| log.Info("GetSpecByAiCenterCodeAndType err: %v", err) | |||
| return | |||
| } | |||
| if cloudbrain != nil { | |||
| totalCanUse := false | |||
| if err := models.DeleteCloudbrainDurationStatisticHour(dayTime, hourTime, centerCode, cardType, totalCanUse); err != nil { | |||
| spec := specMap[centerCode+"/"+cardType] | |||
| if spec != 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 | |||
| } | |||
| cloudbrainDurationStat := models.CloudbrainDurationStatistic{ | |||
| DateTime: dateTime, | |||
| DayTime: dayTime, | |||
| HourTime: hourTime, | |||
| Cluster: cloudbrain[0].Cluster, | |||
| AiCenterName: cloudbrain[0].AiCenterName, | |||
| Cluster: spec.Cluster, | |||
| AiCenterName: spec.AiCenterName, | |||
| AiCenterCode: centerCode, | |||
| ComputeResource: cloudbrain[0].ComputeResource, | |||
| AccCardType: cardType, | |||
| CardsTotalDuration: cardDuration, | |||
| ComputeResource: spec.ComputeResource, | |||
| CardsUseDuration: cardDuration, | |||
| CardsTotalDuration: cardsTotalDurationMap[spec.Cluster+"/"+spec.AiCenterName+"/"+centerCode+"/"+cardType+"/"+spec.ComputeResource], | |||
| CreatedUnix: timeutil.TimeStampNow(), | |||
| TotalCanUse: false, | |||
| } | |||
| 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) | |||
| } | |||
| } | |||
| } | |||
| resourceQueues, err := models.GetCanUseCardInfo() | |||
| if err != nil { | |||
| log.Info("GetCanUseCardInfo err: %v", err) | |||
| return | |||
| } | |||
| log.Info("resourceQueues here: %s", resourceQueues) | |||
| for _, resourceQueue := range resourceQueues { | |||
| totalCanUse := true | |||
| if err := models.DeleteCloudbrainDurationStatisticHour(dayTime, hourTime, resourceQueue.AiCenterCode, resourceQueue.AccCardType, totalCanUse); err != nil { | |||
| for key, cardsTotalDuration := range cardsTotalDurationMap { | |||
| if err := models.DeleteCloudbrainDurationStatisticHour(dayTime, hourTime, strings.Split(key, "/")[2], strings.Split(key, "/")[3]); err != nil { | |||
| log.Error("DeleteCloudbrainDurationStatisticHour failed: %v", err.Error()) | |||
| return | |||
| } | |||
| cardsTotalDuration := resourceQueue.CardsTotalNum * 1 * 60 * 60 | |||
| cloudbrainDurationStat := models.CloudbrainDurationStatistic{ | |||
| DateTime: dateTime, | |||
| DayTime: dayTime, | |||
| HourTime: hourTime, | |||
| Cluster: resourceQueue.Cluster, | |||
| AiCenterName: resourceQueue.AiCenterName, | |||
| AiCenterCode: resourceQueue.AiCenterCode, | |||
| ComputeResource: resourceQueue.ComputeResource, | |||
| AccCardType: resourceQueue.AccCardType, | |||
| 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], | |||
| CardsUseDuration: 0, | |||
| CardsTotalDuration: cardsTotalDuration, | |||
| CardsTotalNum: resourceQueue.CardsTotalNum, | |||
| CreatedUnix: timeutil.TimeStampNow(), | |||
| TotalCanUse: true, | |||
| } | |||
| if _, err = models.InsertCloudbrainDurationStatistic(&cloudbrainDurationStat); err != nil { | |||
| log.Error("Insert cloudbrainDurationStat failed: %v", err.Error()) | |||
| } | |||
| } | |||
| log.Info("finish summary cloudbrainDurationStat") | |||
| } | |||
| func getcloudBrainCenterCodeAndCardTypeInfo(ciTasks []*models.CloudbrainInfo, beginTime int64, endTime int64) map[string]map[string]int { | |||
| var WorkServerNumber int | |||
| var AccCardsNum int | |||
| cloudBrainAiCenterCodeList := make(map[string]string) | |||
| cloudBrainCardTypeList := make(map[string]string) | |||
| cloudBrainCenterCodeAndCardType := make(map[string]map[string]int) | |||
| for _, cloudbrain := range ciTasks { | |||
| if _, ok := cloudBrainAiCenterCodeList[cloudbrain.Cloudbrain.Spec.AiCenterCode]; !ok { | |||
| cloudBrainAiCenterCodeList[cloudbrain.Cloudbrain.Spec.AiCenterCode] = cloudbrain.Cloudbrain.Spec.AiCenterCode | |||
| } | |||
| if cloudbrain.Cloudbrain.StartTime == 0 { | |||
| cloudbrain.Cloudbrain.StartTime = cloudbrain.Cloudbrain.CreatedUnix | |||
| @@ -126,32 +131,39 @@ func getcloudBrainCenterCodeAndCardTypeInfo(ciTasks []*models.CloudbrainInfo, be | |||
| } else { | |||
| AccCardsNum = cloudbrain.Cloudbrain.Spec.AccCardsNum | |||
| } | |||
| for k, _ := range cloudBrainAiCenterCodeList { | |||
| if cloudBrainCenterCodeAndCardType[cloudBrainAiCenterCodeList[k]] == nil { | |||
| cloudBrainCenterCodeAndCardType[cloudBrainAiCenterCodeList[k]] = make(map[string]int) | |||
| if _, ok := cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode]; !ok { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode] = make(map[string]int) | |||
| } | |||
| if cloudbrain.Cloudbrain.Status == string(models.ModelArtsRunning) { | |||
| if _, ok := cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][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)) | |||
| } else { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][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)) | |||
| } else { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][cloudbrain.Cloudbrain.Spec.AccCardType] += AccCardsNum * WorkServerNumber * (int(endTime) - int(cloudbrain.Cloudbrain.StartTime)) | |||
| } | |||
| } | |||
| if cloudbrain.Cloudbrain.Spec.AiCenterCode == cloudBrainAiCenterCodeList[k] { | |||
| if _, ok := cloudBrainCardTypeList[cloudbrain.Cloudbrain.Spec.AccCardType]; !ok { | |||
| cloudBrainCardTypeList[cloudbrain.Cloudbrain.Spec.AccCardType] = cloudbrain.Cloudbrain.Spec.AccCardType | |||
| } else { | |||
| if _, ok := cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][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)) | |||
| } else { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][cloudbrain.Cloudbrain.Spec.AccCardType] = AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(cloudbrain.Cloudbrain.StartTime)) | |||
| } | |||
| for i, _ := range cloudBrainCardTypeList { | |||
| if cloudbrain.Cloudbrain.Spec.AccCardType == cloudBrainCardTypeList[i] { | |||
| if cloudbrain.Cloudbrain.Status == string(models.ModelArtsRunning) { | |||
| if int64(cloudbrain.Cloudbrain.StartTime) < beginTime { | |||
| cloudBrainCenterCodeAndCardType[cloudBrainAiCenterCodeList[k]][cloudBrainCardTypeList[i]] += AccCardsNum * WorkServerNumber * (int(endTime) - int(beginTime)) | |||
| } else { | |||
| cloudBrainCenterCodeAndCardType[cloudBrainAiCenterCodeList[k]][cloudBrainCardTypeList[i]] += AccCardsNum * WorkServerNumber * (int(endTime) - int(cloudbrain.Cloudbrain.StartTime)) | |||
| } | |||
| } else { | |||
| if int64(cloudbrain.Cloudbrain.StartTime) < beginTime && int64(cloudbrain.Cloudbrain.EndTime) < endTime { | |||
| cloudBrainCenterCodeAndCardType[cloudBrainAiCenterCodeList[k]][cloudBrainCardTypeList[i]] += AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(beginTime)) | |||
| } else { | |||
| cloudBrainCenterCodeAndCardType[cloudBrainAiCenterCodeList[k]][cloudBrainCardTypeList[i]] += 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)) | |||
| } else { | |||
| cloudBrainCenterCodeAndCardType[cloudbrain.Cloudbrain.Spec.AiCenterCode][cloudbrain.Cloudbrain.Spec.AccCardType] += AccCardsNum * WorkServerNumber * (int(cloudbrain.Cloudbrain.EndTime) - int(cloudbrain.Cloudbrain.StartTime)) | |||
| } | |||
| } | |||
| } | |||
| } | |||