|
6 | 6 | "strconv"
|
7 | 7 | "strings"
|
8 | 8 |
|
| 9 | + sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" |
| 10 | + |
9 | 11 | tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
|
10 | 12 |
|
11 | 13 | "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
|
@@ -175,45 +177,57 @@ func resourceTencentCloudDnspodRecordRead(d *schema.ResourceData, meta interface
|
175 | 177 | }
|
176 | 178 | request.RecordId = helper.IntUint64(recordId)
|
177 | 179 |
|
| 180 | + var recordInfo *dnspod.RecordInfo |
| 181 | + |
178 | 182 | err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
|
179 | 183 | response, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().DescribeRecord(request)
|
180 | 184 | 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 |
198 | 189 | } else {
|
199 |
| - _ = d.Set("value", strings.TrimSuffix(*recordInfo.Value, ".")) |
| 190 | + return tccommon.RetryError(e) |
200 | 191 | }
|
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") |
209 | 192 | }
|
210 |
| - |
| 193 | + recordInfo = response.Response.RecordInfo |
211 | 194 | return nil
|
212 | 195 | })
|
213 | 196 | if err != nil {
|
214 | 197 | log.Printf("[CRITAL]%s read DnsPod record failed, reason:%s\n", logId, err.Error())
|
215 | 198 | return err
|
216 | 199 | }
|
| 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 | + |
217 | 231 | return nil
|
218 | 232 | }
|
219 | 233 |
|
|
0 commit comments