Merge pull request #8366 from ioito/hotfix/qx-rds-usage

fix: add rds cpu and memory usage
This commit is contained in:
Zexi Li
2020-10-19 15:11:46 +08:00
committed by GitHub
3 changed files with 22 additions and 5 deletions
+17 -3
View File
@@ -1642,17 +1642,31 @@ func (manager *SDBInstanceManager) newFromCloudDBInstance(ctx context.Context, u
return &instance, nil
}
type SRdsCountStat struct {
TotalRdsCount int
TotalCpuCount int
TotalMemSizeMb int
}
func (man *SDBInstanceManager) TotalCount(
scope rbacutils.TRbacScope,
ownerId mcclient.IIdentityProvider,
rangeObjs []db.IStandaloneModel,
providers []string, brands []string, cloudEnv string,
) (int, error) {
q := man.Query()
) (SRdsCountStat, error) {
sq := man.Query().SubQuery()
q := sq.Query(sqlchemy.COUNT("total_rds_count"),
sqlchemy.SUM("total_cpu_count", sq.Field("vcpu_count")),
sqlchemy.SUM("total_mem_size_mb", sq.Field("vmem_size_mb")))
q = scopeOwnerIdFilter(q, scope, ownerId)
q = CloudProviderFilter(q, q.Field("manager_id"), providers, brands, cloudEnv)
q = RangeObjectsFilter(q, rangeObjs, q.Field("cloudregion_id"), nil, q.Field("manager_id"), nil, nil)
return q.CountWithError()
stat := SRdsCountStat{}
row := q.Row()
err := q.Row2Struct(row, &stat)
return stat, err
}
func (dbinstance *SDBInstance) GetQuotaKeys() quotas.IQuotaKeys {
+2 -1
View File
@@ -196,7 +196,8 @@ func (self *SRegionQuota) FetchUsage(ctx context.Context) error {
self.ObjectGB = int(bucketUsage.Bytes / 1000 / 1000 / 1000)
self.ObjectCnt = bucketUsage.Objects
self.Rds, _ = DBInstanceManager.TotalCount(scope, ownerId, rangeObjs, providers, brands, regionKeys.CloudEnv)
rdsUsage, _ := DBInstanceManager.TotalCount(scope, ownerId, rangeObjs, providers, brands, regionKeys.CloudEnv)
self.Rds = rdsUsage.TotalRdsCount
self.Cache, _ = ElasticcacheManager.TotalCount(scope, ownerId, rangeObjs, providers, brands, regionKeys.CloudEnv)
self.Loadbalancer, _ = LoadbalancerManager.TotalCount(scope, ownerId, rangeObjs, providers, brands, regionKeys.CloudEnv)
+3 -1
View File
@@ -874,7 +874,9 @@ func LoadbalancerUsage(scope rbacutils.TRbacScope, ownerId mcclient.IIdentityPro
func DBInstanceUsage(scope rbacutils.TRbacScope, ownerId mcclient.IIdentityProvider, rangeObjs []db.IStandaloneModel, providers []string, brands []string, cloudEnv string) Usage {
cnt, _ := models.DBInstanceManager.TotalCount(scope, ownerId, rangeObjs, providers, brands, cloudEnv)
count := make(map[string]interface{})
count[getKey(scope, "rds")] = cnt
count[getKey(scope, "rds")] = cnt.TotalRdsCount
count[getKey(scope, "rds.cpu")] = cnt.TotalCpuCount
count[getKey(scope, "rds.memory")] = cnt.TotalMemSizeMb
return count
}