fix(region): qcloud redis sync fix

This commit is contained in:
tangbin
2021-04-19 15:12:56 +08:00
committed by TangBin
parent b7935f6df7
commit 7c56f4fbb3
3 changed files with 75 additions and 27 deletions
+72 -24
View File
@@ -973,17 +973,31 @@ func (self *SRegion) GetCloudElasticcacheAccounts(instanceId string) ([]SElastic
params := map[string]string{}
params["Region"] = self.GetId()
params["InstanceId"] = instanceId
params["Limit"] = "100"
params["Limit"] = "20"
params["Offset"] = "0"
resp, err := self.client.redisRequest("DescribeInstanceAccount", params)
if err != nil {
return nil, errors.Wrap(err, "DescribeInstanceAccount")
}
ret := []SElasticcacheAccount{}
err = resp.Unmarshal(&ret, "Accounts")
if err != nil {
return nil, errors.Wrap(err, "Unmarshal")
offset := 0
for {
resp, err := self.client.redisRequest("DescribeInstanceAccount", params)
if err != nil {
return nil, errors.Wrap(err, "DescribeInstanceAccount")
}
_ret := []SElasticcacheAccount{}
err = resp.Unmarshal(&_ret, "Accounts")
if err != nil {
return nil, errors.Wrap(err, "Unmarshal")
} else {
ret = append(ret, _ret...)
}
if len(_ret) < 20 {
break
} else {
offset += 20
params["Offset"] = strconv.Itoa(offset)
}
}
return ret, nil
@@ -994,16 +1008,31 @@ func (self *SRegion) GetCloudElasticcacheBackups(instanceId string) ([]SElasticc
params := map[string]string{}
params["Region"] = self.GetId()
params["InstanceId"] = instanceId
params["Limit"] = "100"
resp, err := self.client.redisRequest("DescribeInstanceBackups", params)
if err != nil {
return nil, errors.Wrap(err, "DescribeInstanceBackups")
}
params["Limit"] = "20"
params["Offset"] = "0"
ret := []SElasticcacheBackup{}
err = resp.Unmarshal(&ret, "BackupSet")
if err != nil {
return nil, errors.Wrap(err, "Unmarshal")
offset := 0
for {
resp, err := self.client.redisRequest("DescribeInstanceBackups", params)
if err != nil {
return nil, errors.Wrap(err, "DescribeInstanceBackups")
}
_ret := []SElasticcacheBackup{}
err = resp.Unmarshal(&_ret, "BackupSet")
if err != nil {
return nil, errors.Wrap(err, "Unmarshal")
} else {
ret = append(ret, _ret...)
}
if len(_ret) < 20 {
break
} else {
offset += 20
params["Offset"] = strconv.Itoa(offset)
}
}
return ret, nil
@@ -1072,19 +1101,38 @@ func (self *SRegion) GetCloudElasticcacheParameters(instanceId string) ([]SElast
}
// https://cloud.tencent.com/document/api/239/20018
func (self *SRegion) GetCloudElasticcaches() ([]SElasticcache, error) {
func (self *SRegion) GetCloudElasticcaches(instanceId string) ([]SElasticcache, error) {
params := map[string]string{}
params["Region"] = self.GetId()
params["Limit"] = "100"
resp, err := self.client.redisRequest("DescribeInstances", params)
if err != nil {
return nil, errors.Wrap(err, "DescribeInstances")
params["Limit"] = "20"
params["Offset"] = "0"
if len(instanceId) > 0 {
params["InstanceId"] = instanceId
}
ret := []SElasticcache{}
err = resp.Unmarshal(&ret, "InstanceSet")
if err != nil {
return nil, errors.Wrap(err, "Unmarshal")
offset := 0
for {
resp, err := self.client.redisRequest("DescribeInstances", params)
if err != nil {
return nil, errors.Wrap(err, "DescribeInstances")
}
_ret := []SElasticcache{}
err = resp.Unmarshal(&_ret, "InstanceSet")
if err != nil {
return nil, errors.Wrap(err, "Unmarshal")
} else {
ret = append(ret, _ret...)
}
if len(_ret) < 20 {
break
} else {
offset += 20
params["Offset"] = strconv.Itoa(offset)
}
}
return ret, nil
+2 -2
View File
@@ -982,7 +982,7 @@ func (region *SRegion) GetCapabilities() []string {
}
func (region *SRegion) GetIElasticcaches() ([]cloudprovider.ICloudElasticcache, error) {
caches, err := region.GetCloudElasticcaches()
caches, err := region.GetCloudElasticcaches("")
if err != nil {
return nil, errors.Wrap(err, "GetCloudElasticcaches")
}
@@ -998,7 +998,7 @@ func (region *SRegion) GetIElasticcaches() ([]cloudprovider.ICloudElasticcache,
}
func (region *SRegion) GetIElasticcacheById(id string) (cloudprovider.ICloudElasticcache, error) {
caches, err := region.GetCloudElasticcaches()
caches, err := region.GetCloudElasticcaches(id)
if err != nil {
return nil, errors.Wrap(err, "GetCloudElasticcaches")
}
+1 -1
View File
@@ -9,7 +9,7 @@ func init() {
type RedisListOptions struct {
}
shellutils.R(&RedisListOptions{}, "redis-list", "List redis", func(cli *qcloud.SRegion, args *RedisListOptions) error {
redis, err := cli.GetCloudElasticcaches()
redis, err := cli.GetCloudElasticcaches("")
if err != nil {
return err
}