Skip to content

fix(privateDns): [124497850] tencentcloud_private_dns_record optmize create function code logic #3397

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .changelog/3397.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
resource/tencentcloud_private_dns_record: optmize create function code logic
```
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ require (
github.com/mozillazg/go-httpheader v0.4.0 // indirect
github.com/pkg/errors v0.9.1
github.com/stretchr/testify v1.8.2
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1161+incompatible
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1214+incompatible
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos v1.0.799
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/api v1.0.285
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/apigateway v1.0.763
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,10 @@ github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9
github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg=
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1161+incompatible h1:gGfe9oRCYZAWxd/xm0k8NaLmEssVPPl7pEwO022Arb4=
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1161+incompatible/go.mod h1:72Wo6Gt6F8d8V+njrAmduVoT9QjPwCyXktpqCWr7PUc=
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1213+incompatible h1:3B0fKJW/Wh1NaXcdHibvhEUMH9iLrHI9VEkx3sSuVEY=
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1213+incompatible/go.mod h1:72Wo6Gt6F8d8V+njrAmduVoT9QjPwCyXktpqCWr7PUc=
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1214+incompatible h1:2pQ01ULc1d4WxNxwSR2qglNLA4xzB5ipffJ48fytTcg=
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.1214+incompatible/go.mod h1:72Wo6Gt6F8d8V+njrAmduVoT9QjPwCyXktpqCWr7PUc=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos v1.0.799 h1:u49r1bGFDY0CeAF46iotNnLtc5yplPf9XXa7W7zJ4fE=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos v1.0.799/go.mod h1:JQa/Ess7Kkn/BuAugq0Tt5GJR7ZQAY47ypP9LjEn/DE=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/api v1.0.285 h1:gFmukRGLtYiXVBVvg/5DP/0fM1+dKpwDjT+khtDVLmc=
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,32 +132,8 @@ func resourceTencentCloudDPrivateDnsRecordCreate(d *schema.ResourceData, meta in
recordId := *response.Response.RecordId

// wait
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
records, e := service.DescribePrivateDnsRecordByFilter(ctx, zoneId, nil)
if e != nil {
return tccommon.RetryError(e, PRIVATEDNS_CUSTOM_RETRY_SDK_ERROR...)
}

if len(records) < 1 {
return resource.RetryableError(fmt.Errorf("[WARN]%s resource `PrivateDnsRecord` [%s] wait creating...\n", logId, zoneId))
}

var record *privatedns.PrivateZoneRecord
for _, item := range records {
if item.RecordId != nil && *item.RecordId == recordId {
record = item
}
}

if record != nil {
return nil
}

return resource.RetryableError(fmt.Errorf("[WARN]%s resource `PrivateDnsRecord` [%s] wait creating...\n", logId, recordId))
})

_, err = service.DescribePrivateDnsRecordById(ctx, zoneId, recordId)
if err != nil {
log.Printf("[CRITAL]%s describe PrivateDns record failed, reason:%s\n", logId, err.Error())
return err
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -492,3 +492,52 @@ func (me *PrivatednsService) DescribePrivateDnsEndPointsByFilter(ctx context.Con

return
}

func (me *PrivateDnsService) DescribePrivateDnsRecordById(ctx context.Context, zoneId, recordId string) (recordInfo *privatednsIntlv20201028.RecordInfo, errRet error) {
logId := tccommon.GetLogId(ctx)

request := privatednsIntlv20201028.NewDescribeRecordRequest()
response := privatednsIntlv20201028.NewDescribeRecordResponse()
request.ZoneId = &zoneId
request.RecordId = &recordId

defer func() {
if errRet != nil {
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error())
}
}()

err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
ratelimit.Check(request.GetAction())
result, e := me.client.UsePrivatednsIntlV20201028Client().DescribeRecord(request)
if e != nil {
return tccommon.RetryError(e, PRIVATEDNS_CUSTOM_RETRY_SDK_ERROR...)
} else {
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
}

if result == nil || result.Response == nil {
return resource.NonRetryableError(fmt.Errorf("Describe PrivateDns record %s failed, Response is nil.", recordId))
}

if result.Response.RecordInfo != nil && result.Response.RecordInfo.RecordId != nil {
respRecordId := *result.Response.RecordInfo.RecordId
if respRecordId == recordId {
response = result
return nil
} else {
return resource.NonRetryableError(fmt.Errorf("Describe PrivateDns record %s does not meet expectations, Response is %s.", recordId, respRecordId))
}
}

return resource.RetryableError(fmt.Errorf("Record %s is still creating...", recordId))
})

if err != nil {
errRet = err
return
}

recordInfo = response.Response.RecordInfo
return
}
Loading
Loading