@@ -72,6 +72,8 @@ func resourceTencentCloudDPrivateDnsRecordCreate(d *schema.ResourceData, meta in
7272
7373 var (
7474 logId = tccommon .GetLogId (tccommon .ContextNil )
75+ ctx = context .WithValue (context .TODO (), tccommon .LogIdKey , logId )
76+ service = PrivateDnsService {client : meta .(tccommon.ProviderMeta ).GetAPIV3Conn ()}
7577 request = privatedns .NewCreatePrivateZoneRecordRequest ()
7678 response = privatedns .NewCreatePrivateZoneRecordResponse ()
7779 zoneId string
@@ -114,8 +116,8 @@ func resourceTencentCloudDPrivateDnsRecordCreate(d *schema.ResourceData, meta in
114116 log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " , logId , request .GetAction (), request .ToJsonString (), result .ToJsonString ())
115117 }
116118
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. " )
119121 return resource .NonRetryableError (e )
120122 }
121123
@@ -129,6 +131,37 @@ func resourceTencentCloudDPrivateDnsRecordCreate(d *schema.ResourceData, meta in
129131 }
130132
131133 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 .RetryableError (fmt .Errorf ("[WARN]%s resource `PrivateDnsRecord` [%s] wait creating...\n " , logId , zoneId ))
144+ }
145+
146+ var record * privatedns.PrivateZoneRecord
147+ for _ , item := range records {
148+ if item .RecordId != nil && * 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+
132165 d .SetId (strings .Join ([]string {zoneId , recordId }, tccommon .FILED_SP ))
133166
134167 return resourceTencentCloudDPrivateDnsRecordRead (d , meta )
@@ -165,7 +198,7 @@ func resourceTencentCloudDPrivateDnsRecordRead(d *schema.ResourceData, meta inte
165198
166199 var record * privatedns.PrivateZoneRecord
167200 for _ , item := range records {
168- if * item .RecordId == recordId {
201+ if item . RecordId != nil && * item .RecordId == recordId {
169202 record = item
170203 }
171204 }
0 commit comments