@@ -16,12 +16,10 @@ package huawei
1616
1717import (
1818 "fmt"
19- "strings"
2019 "time"
2120
2221 "yunion.io/x/log"
2322 "yunion.io/x/pkg/errors"
24- "yunion.io/x/pkg/util/osprofile"
2523
2624 api "yunion.io/x/cloudmux/pkg/apis/compute"
2725 "yunion.io/x/cloudmux/pkg/cloudprovider"
@@ -84,6 +82,9 @@ func (self *SHuaweiClient) getServerMetrics(opts *cloudprovider.MetricListOption
8482 }
8583 result := []cloudprovider.MetricValues {}
8684 for i := range metricData {
85+ if len (metricData [i ].Datapoints ) == 0 {
86+ continue
87+ }
8788 ret := cloudprovider.MetricValues {
8889 Id : opts .ResourceId ,
8990 Unit : metricData [i ].Unit ,
@@ -129,9 +130,6 @@ func (self *SHuaweiClient) getServerMetrics(opts *cloudprovider.MetricListOption
129130}
130131
131132func (self * SHuaweiClient ) getServerAgentMetrics (opts * cloudprovider.MetricListOptions ) ([]cloudprovider.MetricValues , error ) {
132- if strings .ToLower (opts .OsType ) == strings .ToLower (osprofile .OS_TYPE_WINDOWS ) {
133- return []cloudprovider.MetricValues {}, nil
134- }
135133 params := map [string ]interface {}{
136134 "from" : opts .StartTime .UnixMilli (),
137135 "to" : opts .EndTime .UnixMilli (),
@@ -141,6 +139,8 @@ func (self *SHuaweiClient) getServerAgentMetrics(opts *cloudprovider.MetricListO
141139 metrics := []interface {}{}
142140 namespace , dimesionName , metricNames := "AGT.ECS" , "instance_id" , []string {
143141 "mem_usedPercent" ,
142+ "cpu_usage" ,
143+ "disk_usedPercent" ,
144144 }
145145 for _ , metricName := range metricNames {
146146 metrics = append (metrics , map [string ]interface {}{
@@ -166,6 +166,9 @@ func (self *SHuaweiClient) getServerAgentMetrics(opts *cloudprovider.MetricListO
166166 }
167167 result := []cloudprovider.MetricValues {}
168168 for i := range metricData {
169+ if len (metricData [i ].Datapoints ) == 0 {
170+ continue
171+ }
169172 ret := cloudprovider.MetricValues {
170173 Id : opts .ResourceId ,
171174 Unit : metricData [i ].Unit ,
@@ -175,6 +178,8 @@ func (self *SHuaweiClient) getServerAgentMetrics(opts *cloudprovider.MetricListO
175178 switch metricData [i ].MetricName {
176179 case "mem_usedPercent" :
177180 ret .MetricType = cloudprovider .VM_METRIC_TYPE_MEM_USAGE
181+ case "cpu_usage" :
182+ ret .MetricType = cloudprovider .VM_METRIC_TYPE_CPU_USAGE
178183 case "disk_usedPercent" :
179184 ret .MetricType = cloudprovider .VM_METRIC_TYPE_DISK_USAGE
180185 default :
@@ -237,6 +242,9 @@ func (self *SHuaweiClient) getRedisMetrics(opts *cloudprovider.MetricListOptions
237242 }
238243 result := []cloudprovider.MetricValues {}
239244 for i := range metricData {
245+ if len (metricData [i ].Datapoints ) == 0 {
246+ continue
247+ }
240248 ret := cloudprovider.MetricValues {
241249 Id : opts .ResourceId ,
242250 Unit : metricData [i ].Unit ,
@@ -333,6 +341,9 @@ func (self *SHuaweiClient) getRdsMetrics(opts *cloudprovider.MetricListOptions)
333341 }
334342 result := []cloudprovider.MetricValues {}
335343 for i := range metricData {
344+ if len (metricData [i ].Datapoints ) == 0 {
345+ continue
346+ }
336347 ret := cloudprovider.MetricValues {
337348 Id : opts .ResourceId ,
338349 Unit : metricData [i ].Unit ,
@@ -422,6 +433,9 @@ func (self *SHuaweiClient) getBucketMetrics(opts *cloudprovider.MetricListOption
422433 }
423434 result := []cloudprovider.MetricValues {}
424435 for i := range metricData {
436+ if len (metricData [i ].Datapoints ) == 0 {
437+ continue
438+ }
425439 ret := cloudprovider.MetricValues {
426440 Id : opts .ResourceId ,
427441 Unit : metricData [i ].Unit ,
@@ -503,6 +517,9 @@ func (self *SHuaweiClient) getLoadbalancerMetrics(opts *cloudprovider.MetricList
503517 }
504518 result := []cloudprovider.MetricValues {}
505519 for i := range metricData {
520+ if len (metricData [i ].Datapoints ) == 0 {
521+ continue
522+ }
506523 ret := cloudprovider.MetricValues {
507524 Id : opts .ResourceId ,
508525 Unit : metricData [i ].Unit ,
@@ -556,6 +573,9 @@ func (self *SHuaweiClient) getModelartsPoolMetrics(opts *cloudprovider.MetricLis
556573 }
557574 result := []cloudprovider.MetricValues {}
558575 for i := range metricData {
576+ if len (metricData [i ].Datapoints ) == 0 {
577+ continue
578+ }
559579 isMB := false
560580 if metricData [i ].Datapoints [0 ].Unit == "Megabytes" {
561581 isMB = true
0 commit comments