|
|
|
@@ -1520,63 +1520,10 @@ func GetCloudbrainResourceOverview(ctx *context.Context) { |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func GetCloudbrainResourceUsage(ctx *context.Context) { |
|
|
|
recordBeginTime := time.Now().AddDate(0, 0, -6) |
|
|
|
beginTime, endTime, err := getCloudbrainTimePeroid(ctx, recordBeginTime) |
|
|
|
if err != nil { |
|
|
|
log.Error("getCloudbrainTimePeroid error:", err) |
|
|
|
return |
|
|
|
} |
|
|
|
cardUsageRes := make(map[string]int) |
|
|
|
cardCanUsageRes := make(map[string]int) |
|
|
|
cardUtilizationRate := make(map[string]int) |
|
|
|
// cardDurationStatistics, err := models.GetCardDurationStatistics(beginTime, endTime) |
|
|
|
cardDurationStatistics, err := models.GetCardDurationStatistics(&models.DurationStatisticOptions{ |
|
|
|
BeginTime: beginTime, |
|
|
|
EndTime: endTime, |
|
|
|
}) |
|
|
|
if err != nil { |
|
|
|
log.Error("GetCardDurationStatistics error:", err) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
for _, cloudbrainStat := range cardDurationStatistics { |
|
|
|
if cloudbrainStat.TotalCanUse { |
|
|
|
if _, ok := cardCanUsageRes[cloudbrainStat.AiCenterCode]; !ok { |
|
|
|
cardCanUsageRes[cloudbrainStat.AiCenterCode] = cloudbrainStat.CardsTotalDuration |
|
|
|
} else { |
|
|
|
cardCanUsageRes[cloudbrainStat.AiCenterCode] += cloudbrainStat.CardsTotalDuration |
|
|
|
} |
|
|
|
} else { |
|
|
|
if _, ok := cardUsageRes[cloudbrainStat.AiCenterCode]; !ok { |
|
|
|
cardUsageRes[cloudbrainStat.AiCenterCode] = cloudbrainStat.CardsTotalDuration |
|
|
|
} else { |
|
|
|
cardUsageRes[cloudbrainStat.AiCenterCode] += cloudbrainStat.CardsTotalDuration |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
for k, v := range cardCanUsageRes { |
|
|
|
for j, i := range cardUsageRes { |
|
|
|
if k == j { |
|
|
|
cardUtilizationRate[k] = i / v |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
ctx.JSON(http.StatusOK, map[string]interface{}{ |
|
|
|
"cardDurationStatistics": cardDurationStatistics, |
|
|
|
"cardUsageRes": cardUsageRes, |
|
|
|
"cardCanUsageRes": cardCanUsageRes, |
|
|
|
"cardUtilizationRate": cardUtilizationRate, |
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
func GetCloudbrainResourceUsageDetail(ctx *context.Context) { |
|
|
|
aiCenterCode := ctx.QueryTrim("aiCenterCode") |
|
|
|
log.Info("aiCenterCode: %v", aiCenterCode) |
|
|
|
if aiCenterCode == "" { |
|
|
|
aiCenterCode = "OpenIOne" |
|
|
|
aiCenterCode = models.AICenterOfCloudBrainOne |
|
|
|
} |
|
|
|
beginTime, endTime := getBeginAndEndTime(ctx) |
|
|
|
dayCloudbrainDuration, count, err := getDayCloudbrainDuration(beginTime, endTime, aiCenterCode) |
|
|
|
@@ -1713,40 +1660,16 @@ func getAiCenterUsageDuration(beginTime time.Time, endTime time.Time, cloudbrain |
|
|
|
} else { |
|
|
|
usageDuration += cloudbrainStatistic.CardsTotalDuration |
|
|
|
} |
|
|
|
// if cloudbrainStatistic.TotalCanUse { |
|
|
|
// if _, ok := aiCenterTotalDuration[Date]; !ok { |
|
|
|
// aiCenterTotalDuration[Date] = cloudbrainStatistic.CardsTotalDuration |
|
|
|
// } else { |
|
|
|
// aiCenterTotalDuration[Date] += cloudbrainStatistic.CardsTotalDuration |
|
|
|
// } |
|
|
|
// } else { |
|
|
|
// if _, ok := aiCenterUsageDuration[Date]; !ok { |
|
|
|
// aiCenterUsageDuration[Date] = cloudbrainStatistic.CardsTotalDuration |
|
|
|
// } else { |
|
|
|
// aiCenterUsageDuration[Date] += cloudbrainStatistic.CardsTotalDuration |
|
|
|
// } |
|
|
|
// } |
|
|
|
} |
|
|
|
} |
|
|
|
// ResourceAiCenterRes, err := models.GetResourceAiCenters() |
|
|
|
// if err != nil { |
|
|
|
// log.Error("Can not get ResourceAiCenterRes.", err) |
|
|
|
// return nil, nil, nil |
|
|
|
// } |
|
|
|
// for _, v := range ResourceAiCenterRes { |
|
|
|
// if _, ok := aiCenterUsageDuration[v.AiCenterCode]; !ok { |
|
|
|
// aiCenterUsageDuration[v.AiCenterCode] = 0 |
|
|
|
// } |
|
|
|
// } |
|
|
|
|
|
|
|
// for k, v := range aiCenterTotalDuration { |
|
|
|
// for i, j := range aiCenterUsageDuration { |
|
|
|
// if k == i { |
|
|
|
// aiCenterUsageRate[k] = float64(j) / float64(v) |
|
|
|
// } |
|
|
|
// } |
|
|
|
// } |
|
|
|
// usageRate = float64(usageDuration) / float64(totalDuration) |
|
|
|
if totalDuration == 0 || usageDuration == 0 { |
|
|
|
usageRate = 0 |
|
|
|
} else { |
|
|
|
usageRate = float64(usageDuration) / float64(totalDuration) |
|
|
|
} |
|
|
|
// if |
|
|
|
// usageRate, _ = strconv.ParseFloat(fmt.Sprintf("%.4f", float32(usageDuration)/float32(totalDuration)), 64) |
|
|
|
// totalUsageRate = totalUse / totalCanUse |
|
|
|
|
|
|
|
return totalDuration, usageDuration, usageRate |
|
|
|
} |
|
|
|
@@ -1817,8 +1740,8 @@ func getDurationStatistic(beginTime time.Time, endTime time.Time) (models.Durati |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// totalCanUse := float64(0) |
|
|
|
// totalUse := float64(0) |
|
|
|
totalCanUse := float32(0) |
|
|
|
totalUse := float32(0) |
|
|
|
totalUsageRate := float32(0) |
|
|
|
for k, v := range OpenITotalDuration { |
|
|
|
for i, j := range OpenIUsageDuration { |
|
|
|
@@ -1827,7 +1750,19 @@ func getDurationStatistic(beginTime time.Time, endTime time.Time) (models.Durati |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// totalUsageRate := totalUse / totalCanUse |
|
|
|
for _, v := range OpenITotalDuration { |
|
|
|
totalCanUse += float32(v) |
|
|
|
} |
|
|
|
for _, v := range OpenIUsageRate { |
|
|
|
totalUse += float32(v) |
|
|
|
} |
|
|
|
if totalCanUse == 0 || totalUse == 0 { |
|
|
|
totalUsageRate = 0 |
|
|
|
} else { |
|
|
|
totalUsageRate = totalUse / totalCanUse |
|
|
|
} |
|
|
|
// totalUsageRate = totalUse / totalCanUse |
|
|
|
// strconv.FormatFloat(*100, 'f', 4, 64) + "%" |
|
|
|
|
|
|
|
OpenIDurationRate.AiCenterTotalDurationStat = OpenITotalDuration |
|
|
|
OpenIDurationRate.AiCenterUsageDurationStat = OpenIUsageDuration |
|
|
|
@@ -1919,13 +1854,17 @@ func getHourCloudbrainDuration(beginTime time.Time, endTime time.Time, aiCenterC |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// for k, v := range hourTimeTotalDuration { |
|
|
|
// for i, j := range hourTimeUsageDuration { |
|
|
|
// if k == i { |
|
|
|
// hourTimeUsageRate[k] = float64(j) / float64(v) |
|
|
|
// } |
|
|
|
// } |
|
|
|
// } |
|
|
|
for k, v := range hourTimeTotalDuration { |
|
|
|
for i, j := range hourTimeUsageDuration { |
|
|
|
if k == i { |
|
|
|
if v == 0 || j == 0 { |
|
|
|
hourTimeUsageRate[k] = 0 |
|
|
|
} else { |
|
|
|
hourTimeUsageRate[k] = float64(j) / float64(v) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
hourTimeStatistic.HourTimeTotalDuration = hourTimeTotalDuration |
|
|
|
hourTimeStatistic.HourTimeUsageDuration = hourTimeUsageDuration |
|
|
|
|