Skip to content

Commit 7f079fc

Browse files
WeiMengXSSevenEarth
authored andcommitted
feat(cam): [117618077]support retry (#2671)
* feat(cam): support retry * feat(cam): support retry * feat(cam): support retry * feat(cam): support retry
1 parent 7acc653 commit 7f079fc

File tree

3 files changed

+40
-17
lines changed

3 files changed

+40
-17
lines changed

.changelog/2671.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_user_info: Support retry
3+
```

tencentcloud/services/cam/data_source_tc_user_info.go

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package cam
33
import (
44
"context"
55
"fmt"
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
67
"log"
78
"math/rand"
89
"strconv"
@@ -67,9 +68,18 @@ func datasourceTencentCloudUserInfoRead(d *schema.ResourceData, meta interface{}
6768

6869
logId = tccommon.GetLogId(ctx)
6970
request := cam.NewGetUserAppIdRequest()
71+
response := cam.NewGetUserAppIdResponse()
7072

7173
ratelimit.Check(request.GetAction())
72-
response, err := client.UseCamClient().GetUserAppId(request)
74+
75+
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
76+
result, e := client.UseCamClient().GetUserAppId(request)
77+
if e != nil {
78+
return tccommon.RetryError(e)
79+
}
80+
response = result
81+
return nil
82+
})
7383

7484
if err != nil {
7585
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n",
@@ -80,25 +90,37 @@ func datasourceTencentCloudUserInfoRead(d *schema.ResourceData, meta interface{}
8090
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
8191
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
8292

83-
if err != nil {
84-
return err
85-
}
86-
87-
result := response.Response
88-
89-
if result == nil {
93+
if response == nil || response.Response == nil {
9094
return fmt.Errorf("get user appid error: empty response")
9195
}
92-
93-
appId := strconv.FormatUint(*result.AppId, 10)
94-
uin := *result.Uin
95-
ownerUin := *result.OwnerUin
96+
var appId, uin, ownerUin string
9697
accountInfoRequest := cam.NewDescribeSubAccountsRequest()
98+
accountInfoResponse := cam.NewDescribeSubAccountsResponse()
99+
100+
if response.Response.AppId != nil {
101+
appId = strconv.FormatUint(*response.Response.AppId, 10)
102+
}
103+
if response.Response.Uin != nil {
104+
uin = *response.Response.Uin
105+
}
106+
if response.Response.OwnerUin != nil {
107+
ownerUin = *response.Response.Uin
108+
}
97109
accountInfoRequest.FilterSubAccountUin = []*uint64{helper.Uint64(helper.StrToUInt64(uin))}
98-
accountInfoResponse, err := client.UseCamClient().DescribeSubAccounts(accountInfoRequest)
110+
111+
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
112+
accountInfoResult, e := client.UseCamClient().DescribeSubAccounts(accountInfoRequest)
113+
if e != nil {
114+
return tccommon.RetryError(e)
115+
}
116+
accountInfoResponse = accountInfoResult
117+
return nil
118+
})
99119
if err != nil {
120+
log.Printf("[CRITAL]%s read CAM users failed, reason:%s\n", logId, err.Error())
100121
return err
101122
}
123+
102124
subAccounts := accountInfoResponse.Response.SubAccounts
103125
var name string
104126
if len(subAccounts) > 0 {

tencentcloud/services/cam/data_source_tc_user_info_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@ func TestAccTencentCloudDataSourceUserInfoBasic(t *testing.T) {
1414
Providers: tcacctest.AccProviders,
1515
Steps: []resource.TestStep{
1616
{
17-
PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) },
18-
Config: testAccDataUserInfoBasic,
17+
Config: testAccDataUserInfoBasic,
1918
Check: resource.ComposeAggregateTestCheckFunc(
2019
resource.TestCheckResourceAttrSet("data.tencentcloud_user_info.info", "app_id"),
2120
resource.TestCheckResourceAttrSet("data.tencentcloud_user_info.info", "uin"),
@@ -33,8 +32,7 @@ func TestAccTencentCloudDataSourceUserInfoSubAccount(t *testing.T) {
3332
Steps: []resource.TestStep{
3433
{
3534
// Need use subaccount aksk
36-
PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_SUB_ACCOUNT) },
37-
Config: testAccDataUserInfoSubAccount,
35+
Config: testAccDataUserInfoSubAccount,
3836
Check: resource.ComposeAggregateTestCheckFunc(
3937
resource.TestCheckResourceAttrSet("data.tencentcloud_user_info.info_sub_account", "app_id"),
4038
resource.TestCheckResourceAttrSet("data.tencentcloud_user_info.info_sub_account", "uin"),

0 commit comments

Comments
 (0)