Skip to content

Commit 598cd72

Browse files
committed
record support refresh
1 parent b3b8aa8 commit 598cd72

File tree

1 file changed

+41
-27
lines changed

1 file changed

+41
-27
lines changed

tencentcloud/services/dnspod/resource_tc_dnspod_record.go

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"strconv"
77
"strings"
88

9+
sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
10+
911
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
1012

1113
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
@@ -175,45 +177,57 @@ func resourceTencentCloudDnspodRecordRead(d *schema.ResourceData, meta interface
175177
}
176178
request.RecordId = helper.IntUint64(recordId)
177179

180+
var recordInfo *dnspod.RecordInfo
181+
178182
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
179183
response, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().DescribeRecord(request)
180184
if e != nil {
181-
return tccommon.RetryError(e)
182-
}
183-
184-
recordInfo := response.Response.RecordInfo
185-
186-
_ = d.Set("sub_domain", recordInfo.SubDomain)
187-
_ = d.Set("mx", recordInfo.MX)
188-
_ = d.Set("ttl", recordInfo.TTL)
189-
_ = d.Set("monitor_status", recordInfo.MonitorStatus)
190-
_ = d.Set("weight", recordInfo.Weight)
191-
_ = d.Set("domain", items[0])
192-
_ = d.Set("record_line", recordInfo.RecordLine)
193-
_ = d.Set("record_type", recordInfo.RecordType)
194-
if v, ok := d.GetOk("value"); ok {
195-
value := v.(string)
196-
if strings.HasSuffix(value, ".") {
197-
_ = d.Set("value", recordInfo.Value)
185+
e, ok := e.(*sdkErrors.TencentCloudSDKError)
186+
if ok && e.GetCode() == "InvalidParameter.RecordIdInvalid" {
187+
// cannot find record id
188+
return nil
198189
} else {
199-
_ = d.Set("value", strings.TrimSuffix(*recordInfo.Value, "."))
190+
return tccommon.RetryError(e)
200191
}
201-
} else {
202-
_ = d.Set("value", recordInfo.Value)
203-
}
204-
_ = d.Set("remark", recordInfo.Remark)
205-
if *recordInfo.Enabled == uint64(0) {
206-
_ = d.Set("status", "DISABLE")
207-
} else {
208-
_ = d.Set("status", "ENABLE")
209192
}
210-
193+
recordInfo = response.Response.RecordInfo
211194
return nil
212195
})
213196
if err != nil {
214197
log.Printf("[CRITAL]%s read DnsPod record failed, reason:%s\n", logId, err.Error())
215198
return err
216199
}
200+
201+
if recordInfo == nil {
202+
d.SetId("")
203+
return nil
204+
}
205+
206+
_ = d.Set("sub_domain", recordInfo.SubDomain)
207+
_ = d.Set("mx", recordInfo.MX)
208+
_ = d.Set("ttl", recordInfo.TTL)
209+
_ = d.Set("monitor_status", recordInfo.MonitorStatus)
210+
_ = d.Set("weight", recordInfo.Weight)
211+
_ = d.Set("domain", items[0])
212+
_ = d.Set("record_line", recordInfo.RecordLine)
213+
_ = d.Set("record_type", recordInfo.RecordType)
214+
if v, ok := d.GetOk("value"); ok {
215+
value := v.(string)
216+
if strings.HasSuffix(value, ".") {
217+
_ = d.Set("value", recordInfo.Value)
218+
} else {
219+
_ = d.Set("value", strings.TrimSuffix(*recordInfo.Value, "."))
220+
}
221+
} else {
222+
_ = d.Set("value", recordInfo.Value)
223+
}
224+
_ = d.Set("remark", recordInfo.Remark)
225+
if *recordInfo.Enabled == uint64(0) {
226+
_ = d.Set("status", "DISABLE")
227+
} else {
228+
_ = d.Set("status", "ENABLE")
229+
}
230+
217231
return nil
218232
}
219233

0 commit comments

Comments
 (0)