@@ -275,15 +275,15 @@ func resourceScalewayDomainRecordCreate(ctx context.Context, d *schema.ResourceD
275
275
return diag .FromErr (err )
276
276
}
277
277
278
- dnsZoneRes , err := waitForDNSZone (ctx , domainAPI , dnsZone , d .Timeout (schema .TimeoutCreate ))
278
+ record , err = waitForDNSRecordExist (ctx , domainAPI , dnsZone , record . Name , record . Type , d .Timeout (schema .TimeoutCreate ))
279
279
if err != nil {
280
280
return diag .FromErr (err )
281
281
}
282
282
283
- tflog .Debug (ctx , fmt .Sprintf ("DNS ZONE domain: %s subdomain : %s, status : %s" ,
284
- dnsZoneRes . Domain ,
285
- dnsZoneRes . Subdomain ,
286
- dnsZoneRes . Status ))
283
+ tflog .Debug (ctx , fmt .Sprintf ("DNS ZONE domain: %s record : %s, type : %s" ,
284
+ dnsZone ,
285
+ record . Name ,
286
+ record . Type ))
287
287
288
288
dnsZoneData , err := domainAPI .ListDNSZoneRecords (& domain.ListDNSZoneRecordsRequest {
289
289
DNSZone : dnsZone ,
@@ -312,6 +312,7 @@ func resourceScalewayDomainRecordRead(ctx context.Context, d *schema.ResourceDat
312
312
var record * domain.Record
313
313
var dnsZone string
314
314
var projectID string
315
+ var err error
315
316
316
317
currentData := d .Get ("data" )
317
318
// check if this is an inline import. Like: "terraform import scaleway_domain_record.www subdomain.domain.tld/11111111-1111-1111-1111-111111111111"
@@ -323,7 +324,6 @@ func resourceScalewayDomainRecordRead(ctx context.Context, d *schema.ResourceDat
323
324
324
325
dnsZone = tab [0 ]
325
326
recordID := tab [1 ]
326
-
327
327
res , err := domainAPI .ListDNSZoneRecords (& domain.ListDNSZoneRecordsRequest {
328
328
DNSZone : dnsZone ,
329
329
ID : & recordID ,
@@ -342,8 +342,8 @@ func resourceScalewayDomainRecordRead(ctx context.Context, d *schema.ResourceDat
342
342
} else {
343
343
dnsZone = d .Get ("dns_zone" ).(string )
344
344
345
- recordTypeRaw , recordtTypeExist := d .GetOk ("type" )
346
- if ! recordtTypeExist {
345
+ recordTypeRaw , recordTypeExist := d .GetOk ("type" )
346
+ if ! recordTypeExist {
347
347
return diag .FromErr (fmt .Errorf ("record type not found" ))
348
348
}
349
349
recordType := domain .RecordType (recordTypeRaw .(string ))
@@ -376,7 +376,7 @@ func resourceScalewayDomainRecordRead(ctx context.Context, d *schema.ResourceDat
376
376
return nil
377
377
}
378
378
379
- res , err := waitForDNSZone ( ctx , domainAPI , dnsZone , d . Timeout ( schema . TimeoutRead ))
379
+ dnsZones , err := domainAPI . ListDNSZones ( & domain. ListDNSZonesRequest { DNSZone : dnsZone }, scw . WithAllPages (), scw . WithContext ( ctx ))
380
380
if err != nil {
381
381
if is404Error (err ) || is403Error (err ) {
382
382
d .SetId ("" )
@@ -385,8 +385,9 @@ func resourceScalewayDomainRecordRead(ctx context.Context, d *schema.ResourceDat
385
385
return diag .FromErr (err )
386
386
}
387
387
388
- projectID = res .ProjectID
389
- _ = d .Set ("root_zone" , res .Subdomain == "" )
388
+ // get the default first record
389
+ projectID = dnsZones .DNSZones [0 ].ProjectID
390
+ _ = d .Set ("root_zone" , dnsZones .DNSZones [0 ].Subdomain == "" )
390
391
391
392
// retrieve data from record
392
393
if len (currentData .(string )) == 0 {
@@ -481,7 +482,7 @@ func resourceScalewayDomainRecordUpdate(ctx context.Context, d *schema.ResourceD
481
482
return diag .FromErr (err )
482
483
}
483
484
484
- _ , err = waitForDNSZone (ctx , domainAPI , d .Get ("dns_zone" ).(string ), d .Timeout (schema .TimeoutUpdate ))
485
+ _ , err = waitForDNSRecordExist (ctx , domainAPI , d .Get ("dns_zone" ).(string ), record . Name , record . Type , d .Timeout (schema .TimeoutUpdate ))
485
486
if err != nil {
486
487
return diag .FromErr (err )
487
488
}
@@ -510,14 +511,6 @@ func resourceScalewayDomainRecordDelete(ctx context.Context, d *schema.ResourceD
510
511
}
511
512
d .SetId ("" )
512
513
513
- _ , err = waitForDNSZone (ctx , domainAPI , d .Get ("dns_zone" ).(string ), d .Timeout (schema .TimeoutDelete ))
514
- if err != nil && ! errorCheck (err , domain .ErrCodeNoSuchDNSZone ) {
515
- if is404Error (err ) || is403Error (err ) {
516
- return nil
517
- }
518
- return diag .FromErr (err )
519
- }
520
-
521
514
// for non-root zone, if the zone have only NS records, then delete the zone
522
515
if d .Get ("keep_empty_zone" ).(bool ) || d .Get ("root_zone" ).(bool ) {
523
516
return nil
@@ -543,10 +536,10 @@ func resourceScalewayDomainRecordDelete(ctx context.Context, d *schema.ResourceD
543
536
544
537
_ , err = waitForDNSZone (ctx , domainAPI , d .Get ("dns_zone" ).(string ), d .Timeout (schema .TimeoutDelete ))
545
538
if err != nil {
546
- if errorCheck (err , domain . ErrCodeNoSuchDNSZone ) {
539
+ if is404Error (err ) || is403Error ( err ) {
547
540
return nil
548
541
}
549
- return diag .FromErr (fmt . Errorf ( "failed to wait for dns zone before deleting: %w" , err ) )
542
+ return diag .FromErr (err )
550
543
}
551
544
552
545
_ , err = domainAPI .DeleteDNSZone (& domain.DeleteDNSZoneRequest {
0 commit comments