@@ -3,6 +3,7 @@ package cam
3
3
import (
4
4
"context"
5
5
"fmt"
6
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
6
7
"log"
7
8
"math/rand"
8
9
"strconv"
@@ -67,9 +68,18 @@ func datasourceTencentCloudUserInfoRead(d *schema.ResourceData, meta interface{}
67
68
68
69
logId = tccommon .GetLogId (ctx )
69
70
request := cam .NewGetUserAppIdRequest ()
71
+ response := cam .NewGetUserAppIdResponse ()
70
72
71
73
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
+ })
73
83
74
84
if err != nil {
75
85
log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
@@ -80,25 +90,37 @@ func datasourceTencentCloudUserInfoRead(d *schema.ResourceData, meta interface{}
80
90
log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " ,
81
91
logId , request .GetAction (), request .ToJsonString (), response .ToJsonString ())
82
92
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 {
90
94
return fmt .Errorf ("get user appid error: empty response" )
91
95
}
92
-
93
- appId := strconv .FormatUint (* result .AppId , 10 )
94
- uin := * result .Uin
95
- ownerUin := * result .OwnerUin
96
+ var appId , uin , ownerUin string
96
97
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
+ }
97
109
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
+ })
99
119
if err != nil {
120
+ log .Printf ("[CRITAL]%s read CAM users failed, reason:%s\n " , logId , err .Error ())
100
121
return err
101
122
}
123
+
102
124
subAccounts := accountInfoResponse .Response .SubAccounts
103
125
var name string
104
126
if len (subAccounts ) > 0 {
0 commit comments