From 8303f123e2c78062386db9540f065d86aed6448b Mon Sep 17 00:00:00 2001 From: ioito Date: Mon, 31 Oct 2022 10:20:06 +0800 Subject: [PATCH] fix(region): account balance --- pkg/cloudmon/providerdriver/aliyun.go | 30 +++++++++++++++++++++++++++ pkg/cloudmon/providerdriver/base.go | 24 +-------------------- pkg/cloudmon/providerdriver/huawei.go | 26 +++++++++++++++++++++++ pkg/cloudmon/providerdriver/qcloud.go | 26 +++++++++++++++++++++++ 4 files changed, 83 insertions(+), 23 deletions(-) diff --git a/pkg/cloudmon/providerdriver/aliyun.go b/pkg/cloudmon/providerdriver/aliyun.go index d53b3082b1..01717b4648 100644 --- a/pkg/cloudmon/providerdriver/aliyun.go +++ b/pkg/cloudmon/providerdriver/aliyun.go @@ -15,9 +15,13 @@ package providerdriver import ( + "context" "time" + "yunion.io/x/cloudmux/pkg/cloudprovider" + api "yunion.io/x/onecloud/pkg/apis/compute" + "yunion.io/x/onecloud/pkg/util/influxdb" ) type AliyunCollect struct { @@ -32,6 +36,32 @@ func (self *AliyunCollect) IsSupportMetrics() bool { return true } +func (self *AliyunCollect) CollectAccountMetrics(ctx context.Context, account api.CloudaccountDetail) (influxdb.SMetricData, error) { + metric := influxdb.SMetricData{ + Name: string(cloudprovider.METRIC_RESOURCE_TYPE_CLOUD_ACCOUNT), + Timestamp: time.Now(), + Tags: []influxdb.SKeyValue{}, + Metrics: []influxdb.SKeyValue{}, + } + for k, v := range account.GetMetricTags() { + metric.Tags = append([]influxdb.SKeyValue{ + { + Key: k, + Value: v, + }, + }, metric.Tags...) + } + for k, v := range account.GetMetricPairs() { + metric.Metrics = append([]influxdb.SKeyValue{ + { + Key: k, + Value: v, + }, + }, metric.Metrics...) + } + return metric, nil +} + func (self *AliyunCollect) GetDelayDuration() time.Duration { return time.Minute * 3 } diff --git a/pkg/cloudmon/providerdriver/base.go b/pkg/cloudmon/providerdriver/base.go index 0b659b2f97..51fb2569bb 100644 --- a/pkg/cloudmon/providerdriver/base.go +++ b/pkg/cloudmon/providerdriver/base.go @@ -43,29 +43,7 @@ func (self *SBaseCollectDriver) IsSupportMetrics() bool { } func (self *SBaseCollectDriver) CollectAccountMetrics(ctx context.Context, account api.CloudaccountDetail) (influxdb.SMetricData, error) { - metric := influxdb.SMetricData{ - Name: string(cloudprovider.METRIC_RESOURCE_TYPE_CLOUD_ACCOUNT), - Timestamp: time.Now(), - Tags: []influxdb.SKeyValue{}, - Metrics: []influxdb.SKeyValue{}, - } - for k, v := range account.GetMetricTags() { - metric.Tags = append([]influxdb.SKeyValue{ - { - Key: k, - Value: v, - }, - }, metric.Tags...) - } - for k, v := range account.GetMetricPairs() { - metric.Metrics = append([]influxdb.SKeyValue{ - { - Key: k, - Value: v, - }, - }, metric.Metrics...) - } - return metric, nil + return influxdb.SMetricData{}, errors.Wrapf(cloudprovider.ErrNotImplemented, "CollectAccountMetrics") } func (self *SBaseCollectDriver) CollectDBInstanceMetrics(ctx context.Context, manager api.CloudproviderDetails, provider cloudprovider.ICloudProvider, res map[string]api.DBInstanceDetails, start, end time.Time) error { diff --git a/pkg/cloudmon/providerdriver/huawei.go b/pkg/cloudmon/providerdriver/huawei.go index e3e181d920..14411448db 100644 --- a/pkg/cloudmon/providerdriver/huawei.go +++ b/pkg/cloudmon/providerdriver/huawei.go @@ -47,6 +47,32 @@ func init() { Register(&HuaweiCollect{}) } +func (self *HuaweiCollect) CollectAccountMetrics(ctx context.Context, account api.CloudaccountDetail) (influxdb.SMetricData, error) { + metric := influxdb.SMetricData{ + Name: string(cloudprovider.METRIC_RESOURCE_TYPE_CLOUD_ACCOUNT), + Timestamp: time.Now(), + Tags: []influxdb.SKeyValue{}, + Metrics: []influxdb.SKeyValue{}, + } + for k, v := range account.GetMetricTags() { + metric.Tags = append([]influxdb.SKeyValue{ + { + Key: k, + Value: v, + }, + }, metric.Tags...) + } + for k, v := range account.GetMetricPairs() { + metric.Metrics = append([]influxdb.SKeyValue{ + { + Key: k, + Value: v, + }, + }, metric.Metrics...) + } + return metric, nil +} + func (self *HuaweiCollect) CollectModelartsPoolMetrics(ctx context.Context, manager api.CloudproviderDetails, provider cloudprovider.ICloudProvider, res map[string]api.ModelartsPoolDetails, start, end time.Time) error { metrics := []influxdb.SMetricData{} var wg sync.WaitGroup diff --git a/pkg/cloudmon/providerdriver/qcloud.go b/pkg/cloudmon/providerdriver/qcloud.go index 11f3ea8e97..0004af003b 100644 --- a/pkg/cloudmon/providerdriver/qcloud.go +++ b/pkg/cloudmon/providerdriver/qcloud.go @@ -48,6 +48,32 @@ func init() { Register(&QcloudCollect{}) } +func (self *QcloudCollect) CollectAccountMetrics(ctx context.Context, account api.CloudaccountDetail) (influxdb.SMetricData, error) { + metric := influxdb.SMetricData{ + Name: string(cloudprovider.METRIC_RESOURCE_TYPE_CLOUD_ACCOUNT), + Timestamp: time.Now(), + Tags: []influxdb.SKeyValue{}, + Metrics: []influxdb.SKeyValue{}, + } + for k, v := range account.GetMetricTags() { + metric.Tags = append([]influxdb.SKeyValue{ + { + Key: k, + Value: v, + }, + }, metric.Tags...) + } + for k, v := range account.GetMetricPairs() { + metric.Metrics = append([]influxdb.SKeyValue{ + { + Key: k, + Value: v, + }, + }, metric.Metrics...) + } + return metric, nil +} + func (self *QcloudCollect) CollectServerMetrics(ctx context.Context, manager api.CloudproviderDetails, provider cloudprovider.ICloudProvider, res map[string]api.ServerDetails, start, end time.Time) error { metrics := []influxdb.SMetricData{} regionServers := map[string][]api.ServerDetails{}