diff --git a/.changelog/2770.txt b/.changelog/2770.txt new file mode 100644 index 0000000000..e60a69f6a0 --- /dev/null +++ b/.changelog/2770.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/tencentcloud_dnspod_record: fix weight auto update to 0 when update value +``` diff --git a/tencentcloud/services/dnspod/resource_tc_dnspod_record.go b/tencentcloud/services/dnspod/resource_tc_dnspod_record.go index ac24e55dc6..b00cded611 100644 --- a/tencentcloud/services/dnspod/resource_tc_dnspod_record.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_record.go @@ -235,19 +235,19 @@ func resourceTencentCloudDnspodRecordUpdate(d *schema.ResourceData, meta interfa request.Value = &value request.SubDomain = &subDomain - if d.HasChange("status") { - status := d.Get("status").(string) + if v, ok := d.GetOk("status"); ok { + status := v.(string) request.Status = &status } if v, ok := d.GetOk("mx"); ok { request.MX = helper.IntUint64(v.(int)) } - if d.HasChange("ttl") { - ttl := d.Get("ttl").(int) + if v, ok := d.GetOk("ttl"); ok { + ttl := v.(int) request.TTL = helper.IntUint64(ttl) } - if d.HasChange("weight") { - weight := d.Get("weight").(int) + if v, ok := d.GetOk("weight"); ok { + weight := v.(int) request.Weight = helper.IntUint64(weight) } d.Partial(true) diff --git a/tencentcloud/services/dnspod/resource_tc_dnspod_record_test.go b/tencentcloud/services/dnspod/resource_tc_dnspod_record_test.go index c816bcdb82..533d5379ef 100644 --- a/tencentcloud/services/dnspod/resource_tc_dnspod_record_test.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_record_test.go @@ -20,7 +20,7 @@ import ( func TestAccTencentCloudDnspodRecordResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + PreCheck: func() { tcacctest.AccPreCheck(t) }, Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDnspodRecordDestroy, Steps: []resource.TestStep{ @@ -35,6 +35,7 @@ func TestAccTencentCloudDnspodRecordResource_basic(t *testing.T) { resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "record_type", "A"), resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "record_line", "默认"), resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "remark", "terraform-test"), + resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "weight", "100"), ), }, { @@ -48,6 +49,21 @@ func TestAccTencentCloudDnspodRecordResource_basic(t *testing.T) { resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "record_type", "A"), resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "record_line", "默认"), resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "remark", "terraform-test1"), + resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "weight", "100"), + ), + }, + { + Config: testAccTencentCloudDnspodRecordValueUpdate, + Check: resource.ComposeTestCheckFunc( + testAccCheckDnspodRecordExists("tencentcloud_dnspod_record.demo"), + resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "domain", "iac-tf.cloud"), + resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "value", "1.2.3.10"), + resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "sub_domain", "demo"), + resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "status", "ENABLE"), + resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "record_type", "A"), + resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "record_line", "默认"), + resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "remark", "terraform-test1"), + resource.TestCheckResourceAttr("tencentcloud_dnspod_record.demo", "weight", "100"), ), }, { @@ -62,7 +78,7 @@ func TestAccTencentCloudDnspodRecordResource_basic(t *testing.T) { func TestAccTencentCloudDnspodRecordResource_MX(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + PreCheck: func() { tcacctest.AccPreCheck(t) }, Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDnspodRecordDestroy, Steps: []resource.TestStep{ @@ -182,24 +198,37 @@ func testAccCheckDnspodRecordDestroy(s *terraform.State) error { } const testAccTencentCloudDnspodRecord = ` - resource "tencentcloud_dnspod_record" "demo" { +resource "tencentcloud_dnspod_record" "demo" { domain="iac-tf.cloud" record_type="A" record_line="默认" value="1.2.3.9" sub_domain="demo" remark="terraform-test" - } + weight=100 +} ` const testAccTencentCloudDnspodRecordRemarkUp = ` - resource "tencentcloud_dnspod_record" "demo" { +resource "tencentcloud_dnspod_record" "demo" { domain="iac-tf.cloud" record_type="A" record_line="默认" value="1.2.3.9" sub_domain="demo" remark="terraform-test1" - } + weight=100 +} +` +const testAccTencentCloudDnspodRecordValueUpdate = ` +resource "tencentcloud_dnspod_record" "demo" { + domain="iac-tf.cloud" + record_type="A" + record_line="默认" + value="1.2.3.10" + sub_domain="demo" + remark="terraform-test1" + weight=100 +} ` const testAccTencentCloudDnspodRecordMx = `