Skip to content

Commit 211df7e

Browse files
committed
feat(cam): support retry
1 parent eb70294 commit 211df7e

File tree

1 file changed

+27
-12
lines changed

1 file changed

+27
-12
lines changed

tencentcloud/services/cam/data_source_tc_user_info.go

Lines changed: 27 additions & 12 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,30 @@ 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
}
9296

93-
appId := strconv.FormatUint(*result.AppId, 10)
94-
uin := *result.Uin
95-
ownerUin := *result.OwnerUin
97+
appId := strconv.FormatUint(*response.Response.AppId, 10)
98+
uin := *response.Response.Uin
99+
ownerUin := *response.Response.OwnerUin
96100
accountInfoRequest := cam.NewDescribeSubAccountsRequest()
101+
accountInfoResponse := cam.NewDescribeSubAccountsResponse()
97102
accountInfoRequest.FilterSubAccountUin = []*uint64{helper.Uint64(helper.StrToUInt64(uin))}
98-
accountInfoResponse, err := client.UseCamClient().DescribeSubAccounts(accountInfoRequest)
103+
104+
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
105+
accountInfoResult, e := client.UseCamClient().DescribeSubAccounts(accountInfoRequest)
106+
if e != nil {
107+
return tccommon.RetryError(e)
108+
}
109+
accountInfoResponse = accountInfoResult
110+
return nil
111+
})
99112
if err != nil {
113+
log.Printf("[CRITAL]%s read CAM users failed, reason:%s\n", logId, err.Error())
100114
return err
101115
}
116+
102117
subAccounts := accountInfoResponse.Response.SubAccounts
103118
var name string
104119
if len(subAccounts) > 0 {

0 commit comments

Comments
 (0)