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