Skip to content

Commit 4aff79b

Browse files
authored
feat: support pagination describe (#2494)
* feat: support pagination describe * feat: support pagination describe
1 parent eed411a commit 4aff79b

File tree

2 files changed

+32
-9
lines changed

2 files changed

+32
-9
lines changed

.changelog/2494.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_security_groups: Supports more than one hundred data returns
3+
```

tencentcloud/services/vpc/service_tencentcloud_vpc.go

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1381,20 +1381,40 @@ func (me *VpcService) DeleteSecurityGroup(ctx context.Context, id string) error
13811381
return nil
13821382
}
13831383

1384+
func chunkIDs(ids []string, chunkSize int) [][]string {
1385+
var chunks [][]string
1386+
for i := 0; i < len(ids); i += chunkSize {
1387+
end := i + chunkSize
1388+
if end > len(ids) {
1389+
end = len(ids)
1390+
}
1391+
chunks = append(chunks, ids[i:end])
1392+
}
1393+
return chunks
1394+
}
1395+
13841396
func (me *VpcService) DescribeSecurityGroupsAssociate(ctx context.Context, ids []string) ([]*vpc.SecurityGroupAssociationStatistics, error) {
13851397
logId := tccommon.GetLogId(ctx)
13861398

1387-
request := vpc.NewDescribeSecurityGroupAssociationStatisticsRequest()
1388-
request.SecurityGroupIds = common.StringPtrs(ids)
1389-
ratelimit.Check(request.GetAction())
1390-
response, err := me.client.UseVpcClient().DescribeSecurityGroupAssociationStatistics(request)
1391-
if err != nil {
1392-
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]",
1393-
logId, request.GetAction(), request.ToJsonString(), err)
1394-
return nil, err
1399+
idChunks := chunkIDs(ids, 50)
1400+
1401+
var allAssociationStatistics []*vpc.SecurityGroupAssociationStatistics
1402+
1403+
for _, chunk := range idChunks {
1404+
request := vpc.NewDescribeSecurityGroupAssociationStatisticsRequest()
1405+
request.SecurityGroupIds = common.StringPtrs(chunk)
1406+
ratelimit.Check(request.GetAction())
1407+
response, err := me.client.UseVpcClient().DescribeSecurityGroupAssociationStatistics(request)
1408+
if err != nil {
1409+
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]",
1410+
logId, request.GetAction(), request.ToJsonString(), err)
1411+
return nil, err
1412+
}
1413+
1414+
allAssociationStatistics = append(allAssociationStatistics, response.Response.SecurityGroupAssociationStatisticsSet...)
13951415
}
13961416

1397-
return response.Response.SecurityGroupAssociationStatisticsSet, nil
1417+
return allAssociationStatistics, nil
13981418
}
13991419

14001420
// Deprecated: the redundant type struct cause cause unnecessary mental burden, use sdk request directly

0 commit comments

Comments
 (0)