fix: 优化rds sku同步逻辑

This commit is contained in:
Qu Xuan
2020-03-11 16:49:18 +08:00
parent 2a2c0a558f
commit d5a691ffe3
+14 -31
View File
@@ -39,15 +39,15 @@ server: 虚拟机
elasticcache: 弹性缓存(redis&memcached)
*/
type SSkuResourcesMeta struct {
region *SCloudregion
caches map[string][]jsonutils.JSONObject
regionalSkuCaches map[string]map[string][]jsonutils.JSONObject
zoneCaches map[string]*SZone
regionCaches map[string]*SCloudregion
region *SCloudregion
caches map[string][]jsonutils.JSONObject
zoneCaches map[string]*SZone
regionCaches map[string]*SCloudregion
Server string
ElasticCache string
DBInstance string `json:"dbinstance"`
Server string
ElasticCache string
DBInstance string `json:"dbinstance"`
DBInstanceBase string `json:"dbinstance_base"`
}
func (self *SSkuResourcesMeta) GetServerSkus(region *SCloudregion) ([]SServerSku, error) {
@@ -96,7 +96,7 @@ func (self *SSkuResourcesMeta) GetServerSkus(region *SCloudregion) ([]SServerSku
func (self *SSkuResourcesMeta) GetDBInstanceSkusByRegion(regionId string) ([]SDBInstanceSku, error) {
result := []SDBInstanceSku{}
objs, err := self.getSkusByRegion(self.DBInstance, regionId)
objs, err := self.getSkusByRegion(self.DBInstanceBase, regionId)
if err != nil {
return nil, errors.Wrapf(err, "getSkusByRegion")
}
@@ -234,30 +234,13 @@ func (self *SSkuResourcesMeta) get(url string) ([]jsonutils.JSONObject, error) {
return self.filterByRegion(items), nil
}
func (self *SSkuResourcesMeta) getSkusByRegion(url string, region string) ([]jsonutils.JSONObject, error) {
items, err := self.get(url)
func (self *SSkuResourcesMeta) getSkusByRegion(base string, region string) ([]jsonutils.JSONObject, error) {
url := fmt.Sprintf("%s/%s.json", base, region)
items, err := self._get(url)
if err != nil {
return nil, err
return nil, errors.Wrap(err, "getSkusByRegion.get")
}
if self.regionalSkuCaches == nil {
self.regionalSkuCaches = map[string]map[string][]jsonutils.JSONObject{}
self.regionalSkuCaches[url] = map[string][]jsonutils.JSONObject{}
for i := range items {
cloudregion, _ := items[i].GetString("cloudregion_id")
if len(cloudregion) > 0 {
if _, ok := self.regionalSkuCaches[url][cloudregion]; !ok {
self.regionalSkuCaches[url][cloudregion] = []jsonutils.JSONObject{}
}
self.regionalSkuCaches[url][cloudregion] = append(self.regionalSkuCaches[url][cloudregion], items[i])
}
}
}
if skus, ok := self.regionalSkuCaches[url][region]; ok {
return skus, nil
}
return []jsonutils.JSONObject{}, nil
return items, nil
}
func (self *SSkuResourcesMeta) _get(url string) ([]jsonutils.JSONObject, error) {