Skip to content

Commit b7f3719

Browse files
authored
fix(privateDns): [124497850] tencentcloud_private_dns_record optmize create function code logic (#3397)
* add * add
1 parent 4233ad1 commit b7f3719

File tree

20 files changed

+930
-446
lines changed

20 files changed

+930
-446
lines changed

.changelog/3397.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_private_dns_record: optmize create function code logic
3+
```

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ require (
2525
github.com/mozillazg/go-httpheader v0.4.0 // indirect
2626
github.com/pkg/errors v0.9.1
2727
github.com/stretchr/testify v1.8.2
28-
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1161+incompatible
28+
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1214+incompatible
2929
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos v1.0.799
3030
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/api v1.0.285
3131
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/apigateway v1.0.763

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -819,6 +819,10 @@ github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9
819819
github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg=
820820
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1161+incompatible h1:gGfe9oRCYZAWxd/xm0k8NaLmEssVPPl7pEwO022Arb4=
821821
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1161+incompatible/go.mod h1:72Wo6Gt6F8d8V+njrAmduVoT9QjPwCyXktpqCWr7PUc=
822+
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1213+incompatible h1:3B0fKJW/Wh1NaXcdHibvhEUMH9iLrHI9VEkx3sSuVEY=
823+
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1213+incompatible/go.mod h1:72Wo6Gt6F8d8V+njrAmduVoT9QjPwCyXktpqCWr7PUc=
824+
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1214+incompatible h1:2pQ01ULc1d4WxNxwSR2qglNLA4xzB5ipffJ48fytTcg=
825+
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1214+incompatible/go.mod h1:72Wo6Gt6F8d8V+njrAmduVoT9QjPwCyXktpqCWr7PUc=
822826
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos v1.0.799 h1:u49r1bGFDY0CeAF46iotNnLtc5yplPf9XXa7W7zJ4fE=
823827
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos v1.0.799/go.mod h1:JQa/Ess7Kkn/BuAugq0Tt5GJR7ZQAY47ypP9LjEn/DE=
824828
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/api v1.0.285 h1:gFmukRGLtYiXVBVvg/5DP/0fM1+dKpwDjT+khtDVLmc=

tencentcloud/services/privatedns/resource_tc_private_dns_record.go

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -132,32 +132,8 @@ func resourceTencentCloudDPrivateDnsRecordCreate(d *schema.ResourceData, meta in
132132
recordId := *response.Response.RecordId
133133

134134
// wait
135-
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
136-
records, e := service.DescribePrivateDnsRecordByFilter(ctx, zoneId, nil)
137-
if e != nil {
138-
return tccommon.RetryError(e, PRIVATEDNS_CUSTOM_RETRY_SDK_ERROR...)
139-
}
140-
141-
if len(records) < 1 {
142-
return resource.RetryableError(fmt.Errorf("[WARN]%s resource `PrivateDnsRecord` [%s] wait creating...\n", logId, zoneId))
143-
}
144-
145-
var record *privatedns.PrivateZoneRecord
146-
for _, item := range records {
147-
if item.RecordId != nil && *item.RecordId == recordId {
148-
record = item
149-
}
150-
}
151-
152-
if record != nil {
153-
return nil
154-
}
155-
156-
return resource.RetryableError(fmt.Errorf("[WARN]%s resource `PrivateDnsRecord` [%s] wait creating...\n", logId, recordId))
157-
})
158-
135+
_, err = service.DescribePrivateDnsRecordById(ctx, zoneId, recordId)
159136
if err != nil {
160-
log.Printf("[CRITAL]%s describe PrivateDns record failed, reason:%s\n", logId, err.Error())
161137
return err
162138
}
163139

tencentcloud/services/privatedns/service_tencentcloud_private_dns.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,3 +492,52 @@ func (me *PrivatednsService) DescribePrivateDnsEndPointsByFilter(ctx context.Con
492492

493493
return
494494
}
495+
496+
func (me *PrivateDnsService) DescribePrivateDnsRecordById(ctx context.Context, zoneId, recordId string) (recordInfo *privatednsIntlv20201028.RecordInfo, errRet error) {
497+
logId := tccommon.GetLogId(ctx)
498+
499+
request := privatednsIntlv20201028.NewDescribeRecordRequest()
500+
response := privatednsIntlv20201028.NewDescribeRecordResponse()
501+
request.ZoneId = &zoneId
502+
request.RecordId = &recordId
503+
504+
defer func() {
505+
if errRet != nil {
506+
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error())
507+
}
508+
}()
509+
510+
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
511+
ratelimit.Check(request.GetAction())
512+
result, e := me.client.UsePrivatednsIntlV20201028Client().DescribeRecord(request)
513+
if e != nil {
514+
return tccommon.RetryError(e, PRIVATEDNS_CUSTOM_RETRY_SDK_ERROR...)
515+
} else {
516+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
517+
}
518+
519+
if result == nil || result.Response == nil {
520+
return resource.NonRetryableError(fmt.Errorf("Describe PrivateDns record %s failed, Response is nil.", recordId))
521+
}
522+
523+
if result.Response.RecordInfo != nil && result.Response.RecordInfo.RecordId != nil {
524+
respRecordId := *result.Response.RecordInfo.RecordId
525+
if respRecordId == recordId {
526+
response = result
527+
return nil
528+
} else {
529+
return resource.NonRetryableError(fmt.Errorf("Describe PrivateDns record %s does not meet expectations, Response is %s.", recordId, respRecordId))
530+
}
531+
}
532+
533+
return resource.RetryableError(fmt.Errorf("Record %s is still creating...", recordId))
534+
})
535+
536+
if err != nil {
537+
errRet = err
538+
return
539+
}
540+
541+
recordInfo = response.Response.RecordInfo
542+
return
543+
}

0 commit comments

Comments
 (0)