From e5fcb86c80d5ec90dd1d82b0c896e91600fc5b41 Mon Sep 17 00:00:00 2001 From: liuzx Date: Mon, 14 Nov 2022 18:56:30 +0800 Subject: [PATCH] fix-kanban --- models/cloudbrain_static.go | 7 +++--- routers/api/v1/repo/cloudbrain_dashboard.go | 3 +-- routers/repo/cloudbrain_statistic.go | 24 +++++++++++++-------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/models/cloudbrain_static.go b/models/cloudbrain_static.go index c0f6857ef..48dd477be 100644 --- a/models/cloudbrain_static.go +++ b/models/cloudbrain_static.go @@ -275,14 +275,15 @@ func GetCloudbrainByTime(beginTime int64, endTime int64) ([]*CloudbrainInfo, err sess := x.NewSession() defer sess.Close() var cond = builder.NewCond() + sess.Exec("if ") cond = cond.Or( - builder.And(builder.Lte{"cloudbrain.start_time": beginTime}, builder.Gte{"cloudbrain.end_time": beginTime}), + builder.And(builder.Gte{"cloudbrain.end_time": beginTime}, builder.Lte{"cloudbrain.start_time": beginTime}, builder.Gt{"cloudbrain.start_time": 0}), ) cond = cond.Or( - builder.And(builder.Gte{"cloudbrain.start_time": beginTime}, builder.Lte{"cloudbrain.start_time": endTime}), + builder.And(builder.Gte{"cloudbrain.start_time": beginTime}, builder.Lte{"cloudbrain.start_time": endTime}, builder.Gt{"cloudbrain.start_time": 0}), ) cond = cond.Or( - builder.Eq{"cloudbrain.status": string(JobRunning)}, + builder.And(builder.Eq{"cloudbrain.status": string(JobRunning)}), ) sess.OrderBy("cloudbrain.created_unix ASC") cloudbrains := make([]*CloudbrainInfo, 0, 10) diff --git a/routers/api/v1/repo/cloudbrain_dashboard.go b/routers/api/v1/repo/cloudbrain_dashboard.go index d33c6c1ce..ab5be5b82 100755 --- a/routers/api/v1/repo/cloudbrain_dashboard.go +++ b/routers/api/v1/repo/cloudbrain_dashboard.go @@ -1713,8 +1713,6 @@ func getDurationStatistic(beginTime time.Time, endTime time.Time) (models.Durati } } } - log.Info("OpenIUsageDurationis:", OpenIUsageDuration) - log.Info("OpenITotalDurationis:", OpenITotalDuration) ResourceAiCenterRes, err := models.GetResourceAiCenters() if err != nil { log.Error("Can not get ResourceAiCenterRes.", err) @@ -1756,6 +1754,7 @@ func getDurationStatistic(beginTime time.Time, endTime time.Time) (models.Durati } else { totalUsageRate = totalUse / totalCanUse } + delete(OpenIUsageDuration, "/") OpenIDurationRate.AiCenterTotalDurationStat = OpenITotalDuration OpenIDurationRate.AiCenterUsageDurationStat = OpenIUsageDuration diff --git a/routers/repo/cloudbrain_statistic.go b/routers/repo/cloudbrain_statistic.go index edf9bda37..43f5a3b19 100644 --- a/routers/repo/cloudbrain_statistic.go +++ b/routers/repo/cloudbrain_statistic.go @@ -50,7 +50,14 @@ func summaryDurationStat(statisticTime time.Time) int64 { } cloudbrainMap := make(map[string]*models.Cloudbrain) models.LoadSpecs4CloudbrainInfo(ciTasks) + for _, cloudbrain := range ciTasks { + if cloudbrain.Cloudbrain.StartTime == 0 { + cloudbrain.Cloudbrain.StartTime = cloudbrain.Cloudbrain.CreatedUnix + } + if cloudbrain.Cloudbrain.EndTime == 0 { + cloudbrain.Cloudbrain.EndTime = cloudbrain.Cloudbrain.UpdatedUnix + } cloudbrain = cloudbrainService.UpdateCloudbrainAiCenter(cloudbrain) if cloudbrain.Cloudbrain.Spec != nil { if _, ok := cloudbrainMap[cloudbrain.Cloudbrain.AiCenter+"/"+cloudbrain.Cloudbrain.Spec.AccCardType]; !ok { @@ -68,12 +75,13 @@ func summaryDurationStat(statisticTime time.Time) int64 { log.Info("GetCanUseCardInfo err: %v", err) return 0 } + cardsTotalDurationMap := make(map[string]int) for _, resourceQueue := range resourceQueues { - if _, ok := cardsTotalDurationMap[resourceQueue.Cluster+"/"+resourceQueue.AiCenterCode+"/"+resourceQueue.AccCardType+"/"+resourceQueue.ComputeResource]; !ok { - cardsTotalDurationMap[resourceQueue.Cluster+"/"+resourceQueue.AiCenterCode+"/"+resourceQueue.AccCardType+"/"+resourceQueue.ComputeResource] = resourceQueue.CardsTotalNum * 1 * 60 * 60 + if _, ok := cardsTotalDurationMap[resourceQueue.Cluster+"/"+resourceQueue.AiCenterCode+"/"+resourceQueue.AccCardType]; !ok { + cardsTotalDurationMap[resourceQueue.Cluster+"/"+resourceQueue.AiCenterCode+"/"+resourceQueue.AccCardType] = resourceQueue.CardsTotalNum * 1 * 60 * 60 } else { - cardsTotalDurationMap[resourceQueue.Cluster+"/"+resourceQueue.AiCenterCode+"/"+resourceQueue.AccCardType+"/"+resourceQueue.ComputeResource] += resourceQueue.CardsTotalNum * 1 * 60 * 60 + cardsTotalDurationMap[resourceQueue.Cluster+"/"+resourceQueue.AiCenterCode+"/"+resourceQueue.AccCardType] += resourceQueue.CardsTotalNum * 1 * 60 * 60 } } @@ -85,8 +93,8 @@ func summaryDurationStat(statisticTime time.Time) int64 { log.Error("DeleteCloudbrainDurationStatisticHour failed: %v", err.Error()) return 0 } - if _, ok := cardsTotalDurationMap[cloudbrainTable.Cluster+"/"+centerCode+"/"+cardType+"/"+cloudbrainTable.ComputeResource]; !ok { - cardsTotalDurationMap[cloudbrainTable.Cluster+"/"+centerCode+"/"+cardType+"/"+cloudbrainTable.ComputeResource] = 0 + if _, ok := cardsTotalDurationMap[cloudbrainTable.Cluster+"/"+centerCode+"/"+cardType]; !ok { + cardsTotalDurationMap[cloudbrainTable.Cluster+"/"+centerCode+"/"+cardType] = 0 } cloudbrainDurationStat := models.CloudbrainDurationStatistic{ DateTime: dateTime, @@ -96,16 +104,15 @@ func summaryDurationStat(statisticTime time.Time) int64 { AiCenterName: GetAiCenterNameByCode(centerCode, "zh-CN"), AiCenterCode: centerCode, AccCardType: cardType, - ComputeResource: cloudbrainTable.ComputeResource, CardsUseDuration: cardDuration, - CardsTotalDuration: cardsTotalDurationMap[cloudbrainTable.Cluster+"/"+centerCode+"/"+cardType+"/"+cloudbrainTable.ComputeResource], + CardsTotalDuration: cardsTotalDurationMap[cloudbrainTable.Cluster+"/"+centerCode+"/"+cardType], CreatedUnix: timeutil.TimeStampNow(), } if _, err = models.InsertCloudbrainDurationStatistic(&cloudbrainDurationStat); err != nil { log.Error("Insert cloudbrainDurationStat failed: %v", err.Error()) } count++ - delete(cardsTotalDurationMap, cloudbrainTable.Cluster+"/"+centerCode+"/"+cardType+"/"+cloudbrainTable.ComputeResource) + delete(cardsTotalDurationMap, cloudbrainTable.Cluster+"/"+centerCode+"/"+cardType) } } } @@ -123,7 +130,6 @@ func summaryDurationStat(statisticTime time.Time) int64 { AiCenterName: GetAiCenterNameByCode(strings.Split(key, "/")[1], "zh-CN"), AiCenterCode: strings.Split(key, "/")[1], AccCardType: strings.Split(key, "/")[2], - ComputeResource: strings.Split(key, "/")[3], CardsUseDuration: 0, CardsTotalDuration: cardsTotalDuration, CardsTotalNum: cardsTotalDuration / 1 / 60 / 60,