Browse Source

update

tags/v1.22.11.1^2
liuzx 2 years ago
parent
commit
4e387e15ea
4 changed files with 128 additions and 147 deletions
  1. +7
    -4
      models/cloudbrain_static.go
  2. +1
    -1
      modules/cron/tasks_basic.go
  3. +41
    -75
      routers/api/v1/repo/cloudbrain_dashboard.go
  4. +79
    -67
      routers/repo/cloudbrain_statistic.go

+ 7
- 4
models/cloudbrain_static.go View File

@@ -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)
}



+ 1
- 1
modules/cron/tasks_basic.go View File

@@ -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


+ 41
- 75
routers/api/v1/repo/cloudbrain_dashboard.go View File

@@ -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
}
}
}


+ 79
- 67
routers/repo/cloudbrain_statistic.go View File

@@ -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))
}
}

}
}



Loading…
Cancel
Save