fix(region): ignore invalid zone id skus

This commit is contained in:
ioito
2021-12-28 14:41:02 +08:00
parent 781765b3ae
commit b86c39ca00
+58 -10
View File
@@ -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
}