@@ -3,6 +3,7 @@ package cam
33import (
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 {
0 commit comments