@@ -72,6 +72,8 @@ func resourceTencentCloudDPrivateDnsRecordCreate(d *schema.ResourceData, meta in
72
72
73
73
var (
74
74
logId = tccommon .GetLogId (tccommon .ContextNil )
75
+ ctx = context .WithValue (context .TODO (), tccommon .LogIdKey , logId )
76
+ service = PrivateDnsService {client : meta .(tccommon.ProviderMeta ).GetAPIV3Conn ()}
75
77
request = privatedns .NewCreatePrivateZoneRecordRequest ()
76
78
response = privatedns .NewCreatePrivateZoneRecordResponse ()
77
79
zoneId string
@@ -114,8 +116,8 @@ func resourceTencentCloudDPrivateDnsRecordCreate(d *schema.ResourceData, meta in
114
116
log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " , logId , request .GetAction (), request .ToJsonString (), result .ToJsonString ())
115
117
}
116
118
117
- if result == nil {
118
- e = fmt .Errorf ("create PrivateDns record failed" )
119
+ if result == nil || result . Response == nil || result . Response . RecordId == nil {
120
+ e = fmt .Errorf ("create PrivateDns record failed, Response is nil. " )
119
121
return resource .NonRetryableError (e )
120
122
}
121
123
@@ -129,6 +131,37 @@ func resourceTencentCloudDPrivateDnsRecordCreate(d *schema.ResourceData, meta in
129
131
}
130
132
131
133
recordId := * response .Response .RecordId
134
+
135
+ // wait
136
+ err = resource .Retry (tccommon .ReadRetryTimeout , func () * resource.RetryError {
137
+ records , e := service .DescribePrivateDnsRecordByFilter (ctx , zoneId , nil )
138
+ if e != nil {
139
+ return tccommon .RetryError (e )
140
+ }
141
+
142
+ if len (records ) < 1 {
143
+ return resource .NonRetryableError (fmt .Errorf ("[WARN]%s resource `PrivateDnsRecord` [%s] not found, please check if it has been deleted.\n " , logId , recordId ))
144
+ }
145
+
146
+ var record * privatedns.PrivateZoneRecord
147
+ for _ , item := range records {
148
+ if * item .RecordId == recordId {
149
+ record = item
150
+ }
151
+ }
152
+
153
+ if record != nil {
154
+ return nil
155
+ }
156
+
157
+ return resource .RetryableError (fmt .Errorf ("[WARN]%s resource `PrivateDnsRecord` [%s] wait creating...\n " , logId , recordId ))
158
+ })
159
+
160
+ if err != nil {
161
+ log .Printf ("[CRITAL]%s describe PrivateDns record failed, reason:%s\n " , logId , err .Error ())
162
+ return err
163
+ }
164
+
132
165
d .SetId (strings .Join ([]string {zoneId , recordId }, tccommon .FILED_SP ))
133
166
134
167
return resourceTencentCloudDPrivateDnsRecordRead (d , meta )
0 commit comments