diff --git a/pkg/compute/models/skus_tools.go b/pkg/compute/models/skus_tools.go index cf3279bc3a..2ec4c5834e 100644 --- a/pkg/compute/models/skus_tools.go +++ b/pkg/compute/models/skus_tools.go @@ -26,6 +26,7 @@ import ( "yunion.io/x/pkg/errors" "yunion.io/x/pkg/util/compare" v "yunion.io/x/pkg/util/version" + "yunion.io/x/pkg/utils" apis "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/cloudcommon/db" @@ -88,6 +89,8 @@ func (self *SSkuResourcesMeta) GetDBInstanceSkusByRegionExternalId(regionExterna if err != nil { return nil, errors.Wrapf(err, "getSkusByRegion") } + + noZoneIds, cnt := []string{}, 0 for _, obj := range objs { sku := SDBInstanceSku{} sku.SetModelManager(DBInstanceSkuManager, &sku) @@ -98,7 +101,10 @@ func (self *SSkuResourcesMeta) GetDBInstanceSkusByRegionExternalId(regionExterna if len(sku.Zone1) > 0 { zoneId := self.getZoneIdBySuffix(zoneMaps, sku.Zone1) // Huawei rds sku zone1 maybe is cn-north-4f if len(zoneId) == 0 { - log.Warningf("invalid sku %s(%s) %s zone1: %s", sku.Name, sku.Id, sku.CloudregionId, sku.Zone1) + if !utils.IsInStringArray(sku.Zone1, noZoneIds) { + noZoneIds = append(noZoneIds, sku.Zone1) + } + cnt++ continue } sku.Zone1 = zoneId @@ -107,7 +113,10 @@ func (self *SSkuResourcesMeta) GetDBInstanceSkusByRegionExternalId(regionExterna if len(sku.Zone2) > 0 { zoneId := self.getZoneIdBySuffix(zoneMaps, sku.Zone2) if len(zoneId) == 0 { - log.Warningf("invalid sku %s(%s) %s zone2: %s", sku.Name, sku.Id, sku.CloudregionId, sku.Zone2) + if !utils.IsInStringArray(sku.Zone2, noZoneIds) { + noZoneIds = append(noZoneIds, sku.Zone2) + } + cnt++ continue } sku.Zone2 = zoneId @@ -116,7 +125,10 @@ func (self *SSkuResourcesMeta) GetDBInstanceSkusByRegionExternalId(regionExterna if len(sku.Zone3) > 0 { zoneId := self.getZoneIdBySuffix(zoneMaps, sku.Zone3) if len(zoneId) == 0 { - log.Warningf("invalid sku %s(%s) %s zone3: %s", sku.Name, sku.Id, sku.CloudregionId, sku.Zone3) + if !utils.IsInStringArray(sku.Zone3, noZoneIds) { + noZoneIds = append(noZoneIds, sku.Zone3) + } + cnt++ continue } sku.Zone3 = zoneId @@ -127,6 +139,9 @@ func (self *SSkuResourcesMeta) GetDBInstanceSkusByRegionExternalId(regionExterna result = append(result, sku) } + if len(noZoneIds) > 0 { + log.Warningf("can not fetch rds sku %d zone %s for %s", cnt, noZoneIds, regionExternalId) + } return result, nil } @@ -140,6 +155,7 @@ func (self *SSkuResourcesMeta) GetNatSkusByRegionExternalId(regionExternalId str if err != nil { return nil, errors.Wrapf(err, "getSkusByRegion") } + noZoneIds, cnt := []string{}, 0 for _, obj := range objs { sku := SNatSku{} sku.SetModelManager(NatSkuManager, &sku) @@ -152,7 +168,10 @@ func (self *SSkuResourcesMeta) GetNatSkusByRegionExternalId(regionExternalId str for _, zoneExtId := range strings.Split(sku.ZoneIds, ",") { zoneId := self.getZoneIdBySuffix(zoneMaps, zoneExtId) // Huawei rds sku zone1 maybe is cn-north-4f if len(zoneId) == 0 { - log.Warningf("invalid nat sku %s(%s) %s zone: %s", sku.Name, sku.Id, sku.CloudregionId, zoneExtId) + if !utils.IsInStringArray(zoneExtId, noZoneIds) { + noZoneIds = append(noZoneIds, zoneExtId) + } + cnt++ continue } zoneIds = append(zoneIds, zoneId) @@ -161,9 +180,11 @@ func (self *SSkuResourcesMeta) GetNatSkusByRegionExternalId(regionExternalId str } sku.Id = "" sku.CloudregionId = regionId - result = append(result, sku) } + if len(noZoneIds) > 0 { + log.Warningf("can not fetch nat sku %d zone %s for %s", cnt, noZoneIds, regionExternalId) + } return result, nil } @@ -177,6 +198,7 @@ func (self *SSkuResourcesMeta) GetNasSkusByRegionExternalId(regionExternalId str if err != nil { return nil, errors.Wrapf(err, "getSkusByRegion") } + noZoneIds, cnt := []string{}, 0 for _, obj := range objs { sku := SNasSku{} sku.SetModelManager(NasSkuManager, &sku) @@ -189,7 +211,10 @@ func (self *SSkuResourcesMeta) GetNasSkusByRegionExternalId(regionExternalId str for _, zoneExtId := range strings.Split(sku.ZoneIds, ",") { zoneId := self.getZoneIdBySuffix(zoneMaps, zoneExtId) // Huawei rds sku zone1 maybe is cn-north-4f if len(zoneId) == 0 { - log.Warningf("invalid nat sku %s(%s) %s zone: %s", sku.Name, sku.Id, sku.CloudregionId, zoneExtId) + if !utils.IsInStringArray(zoneExtId, noZoneIds) { + noZoneIds = append(noZoneIds, zoneExtId) + } + cnt++ continue } zoneIds = append(zoneIds, zoneId) @@ -198,9 +223,11 @@ func (self *SSkuResourcesMeta) GetNasSkusByRegionExternalId(regionExternalId str } sku.Id = "" sku.CloudregionId = regionId - result = append(result, sku) } + if len(noZoneIds) > 0 { + log.Warningf("can not fetch nas sku %d zone %s for %s", cnt, noZoneIds, regionExternalId) + } return result, nil } @@ -238,6 +265,7 @@ func (self *SSkuResourcesMeta) GetServerSkusByRegionExternalId(regionExternalId if err != nil { return nil, errors.Wrap(err, "getSkusByRegion") } + noZoneIds, cnt := []string{}, 0 for _, obj := range objs { sku := SServerSku{} sku.SetModelManager(ServerSkuManager, &sku) @@ -248,7 +276,11 @@ func (self *SSkuResourcesMeta) GetServerSkusByRegionExternalId(regionExternalId if len(sku.ZoneId) > 0 { zoneId := self.getZoneIdBySuffix(zoneMaps, sku.ZoneId) if len(zoneId) == 0 { - return nil, fmt.Errorf("invalid sku %s %s zoneId: %s", sku.Id, sku.CloudregionId, sku.ZoneId) + if !utils.IsInStringArray(sku.ZoneId, noZoneIds) { + noZoneIds = append(noZoneIds, sku.ZoneId) + } + cnt++ + continue } sku.ZoneId = zoneId } @@ -256,6 +288,9 @@ func (self *SSkuResourcesMeta) GetServerSkusByRegionExternalId(regionExternalId sku.CloudregionId = regionId result = append(result, sku) } + if len(noZoneIds) > 0 { + log.Warningf("can not fetch server sku %d zone id %s for region %s", cnt, noZoneIds, regionExternalId) + } return result, nil } @@ -286,6 +321,8 @@ func (self *SSkuResourcesMeta) GetElasticCacheSkusByRegionExternalId(regionExter } result := []SElasticcacheSku{} + noZoneIds, cnt := []string{}, 0 + // aliyun finance cloud remoteRegion := getElaticCacheSkuRegionExtId(regionExternalId) objs, err := self.getObjsByRegion(self.ElasticCacheBase, remoteRegion) @@ -302,14 +339,22 @@ func (self *SSkuResourcesMeta) GetElasticCacheSkusByRegionExternalId(regionExter if len(sku.ZoneId) > 0 { zoneId := self.getZoneIdBySuffix(zoneMaps, getElaticCacheSkuZoneId(sku.ZoneId)) if len(zoneId) == 0 { - return nil, fmt.Errorf("invalid sku %s %s master zoneId: %s", sku.Id, sku.CloudregionId, getElaticCacheSkuZoneId(sku.ZoneId)) + if !utils.IsInStringArray(sku.ZoneId, noZoneIds) { + noZoneIds = append(noZoneIds, sku.ZoneId) + } + cnt++ + continue } sku.ZoneId = zoneId } if len(sku.SlaveZoneId) > 0 { zoneId := self.getZoneIdBySuffix(zoneMaps, getElaticCacheSkuZoneId(sku.SlaveZoneId)) if len(zoneId) == 0 { - return nil, fmt.Errorf("invalid sku %s %s slave zoneId: %s", sku.Id, sku.CloudregionId, getElaticCacheSkuZoneId(sku.SlaveZoneId)) + if !utils.IsInStringArray(sku.SlaveZoneId, noZoneIds) { + noZoneIds = append(noZoneIds, sku.SlaveZoneId) + } + cnt++ + continue } sku.SlaveZoneId = zoneId } @@ -317,6 +362,9 @@ func (self *SSkuResourcesMeta) GetElasticCacheSkusByRegionExternalId(regionExter sku.CloudregionId = regionId result = append(result, sku) } + if len(noZoneIds) > 0 { + log.Warningf("can not fetch redis sku %d zone %s for %s", cnt, noZoneIds, regionExternalId) + } return result, nil }