Skip to content

Commit aefd131

Browse files
committed
1.fix issues found by e2e test. 2.modify tencentcloud_dcdb_db_instance synchronously.
1 parent 45d5341 commit aefd131

File tree

4 files changed

+54
-39
lines changed

4 files changed

+54
-39
lines changed

tencentcloud/resource_tc_dcdb_db_instance.go

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -181,14 +181,14 @@ func resourceTencentCloudDcdbDbInstance() *schema.Resource {
181181

182182
"vip": {
183183
Optional: true,
184-
ForceNew: true,
184+
Computed: true,
185185
Type: schema.TypeString,
186186
Description: "The field is required to specify VIP.",
187187
},
188188

189189
"vipv6": {
190190
Optional: true,
191-
ForceNew: true,
191+
Computed: true,
192192
Type: schema.TypeString,
193193
Description: "The field is required to specify VIPv6.",
194194
},
@@ -643,7 +643,7 @@ func resourceTencentCloudDcdbDbInstanceRead(d *schema.ResourceData, meta interfa
643643
_ = d.Set("auto_renew_flag", dbInstance.AutoRenewFlag)
644644
}
645645

646-
if sg, err := service.DescribeDcdbSecurityGroup(ctx, instanceId); sg != nil {
646+
if sg, err := service.DescribeDcdbSecurityGroup(ctx, instanceId); err == nil {
647647
sgIds := []*string{}
648648
for _, sg := range sg.Groups {
649649
sgIds = append(sgIds, sg.SecurityGroupId)
@@ -663,7 +663,7 @@ func resourceTencentCloudDcdbDbInstanceRead(d *schema.ResourceData, meta interfa
663663
}
664664

665665
// set dcn id and region
666-
if dcns, err := service.DescribeDcnDetailById(ctx, instanceId); dcns != nil {
666+
if dcns, err := service.DescribeDcnDetailById(ctx, instanceId); err == nil {
667667
for _, dcn := range dcns {
668668
var master *dcdb.DcnDetailItem
669669
if *dcn.DcnFlag == DCDB_DCN_FLAG_MASTER {
@@ -676,9 +676,10 @@ func resourceTencentCloudDcdbDbInstanceRead(d *schema.ResourceData, meta interfa
676676
return err
677677
}
678678

679-
// set vip and vipv6
680-
if detail, err := service.DescribeDcdbDbInstanceDetailById(ctx, instanceId); detail != nil {
679+
// set rs_access_strategy, vip, vipv6 and vport
680+
if detail, err := service.DescribeDcdbDbInstanceDetailById(ctx, instanceId); err == nil {
681681
if detail != nil {
682+
_ = d.Set("rs_access_strategy", detail.RsAccessStrategy)
682683
_ = d.Set("vip", detail.Vip)
683684
_ = d.Set("vipv6", detail.Vip6)
684685
_ = d.Set("vport", detail.Vport)
@@ -806,7 +807,7 @@ func resourceTencentCloudDcdbDbInstanceUpdate(d *schema.ResourceData, meta inter
806807
time.Sleep(2 * time.Second)
807808
}
808809

809-
if d.HasChange("vip") || d.HasChange("vipv6") {
810+
if d.HasChange("vpc_id") || d.HasChange("subnet_id") || d.HasChange("vip") || d.HasChange("vipv6") {
810811
var (
811812
vip string
812813
vipv6 string
@@ -827,7 +828,7 @@ func resourceTencentCloudDcdbDbInstanceUpdate(d *schema.ResourceData, meta inter
827828
}
828829

829830
if vpcId == "" || subnetId == "" {
830-
return fmt.Errorf("`vpc_id` and `subnet_id` cannot be empty when updating `vip` or `vipv6` fields!")
831+
return fmt.Errorf("`vpc_id` and `subnet_id` cannot be empty when updating network configs!")
831832
}
832833

833834
err := service.SetNetworkVip(ctx, instanceId, vpcId, subnetId, vip, vipv6)
@@ -836,12 +837,6 @@ func resourceTencentCloudDcdbDbInstanceUpdate(d *schema.ResourceData, meta inter
836837
}
837838
}
838839

839-
if d.HasChange("vpc_id") {
840-
return fmt.Errorf("`vpc_id` do not support change now.")
841-
}
842-
if d.HasChange("subnet_id") {
843-
return fmt.Errorf("`subnet_id` do not support change now.")
844-
}
845840
if d.HasChange("db_version_id") {
846841
return fmt.Errorf("`db_version_id` do not support change now.")
847842
}

tencentcloud/resource_tc_dcdb_db_instance_test.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,25 @@ data "tencentcloud_vpc_instances" "vpc" {
173173
data "tencentcloud_vpc_subnets" "subnet" {
174174
vpc_id = data.tencentcloud_vpc_instances.vpc.instance_list.0.vpc_id
175175
}
176+
177+
resource "tencentcloud_vpc" "vpc" {
178+
cidr_block = "172.18.111.0/24"
179+
name = "test-pg-network-vpc"
180+
}
181+
182+
resource "tencentcloud_subnet" "subnet" {
183+
availability_zone = var.default_az
184+
cidr_block = "172.18.111.0/24"
185+
name = "test-pg-network-sub1"
186+
vpc_id = tencentcloud_vpc.vpc.id
187+
}
176188
177189
locals {
178190
vpc_id = data.tencentcloud_vpc_subnets.subnet.instance_list.0.vpc_id
179191
subnet_id = data.tencentcloud_vpc_subnets.subnet.instance_list.0.subnet_id
180192
sg_id = data.tencentcloud_security_groups.internal.security_groups.0.security_group_id
193+
new_vpc_id = tencentcloud_subnet.subnet.vpc_id
194+
new_subnet_id = tencentcloud_subnet.subnet.id
181195
}
182196
`
183197

@@ -218,7 +232,6 @@ resource "tencentcloud_dcdb_db_instance" "db_instance" {
218232
project_id = 0
219233
rs_access_strategy = 1
220234
// extranet_access = true
221-
vip = "172.16.112.200"
222235
}
223236
224237
`
@@ -233,8 +246,9 @@ resource "tencentcloud_dcdb_db_instance" "db_instance" {
233246
shard_storage = "10"
234247
shard_node_count = "2"
235248
shard_count = "2"
236-
vpc_id = local.vpc_id
237-
subnet_id = local.subnet_id
249+
vpc_id = local.new_vpc_id
250+
subnet_id = local.new_subnet_id
251+
vip = "172.18.111.10"
238252
db_version_id = "8.0"
239253
resource_tags {
240254
tag_key = "aaa"
@@ -260,7 +274,6 @@ resource "tencentcloud_dcdb_db_instance" "db_instance" {
260274
project_id = var.default_project
261275
rs_access_strategy = 2
262276
// extranet_access = false
263-
vip = "172.16.112.201"
264277
}
265278
266279
`

tencentcloud/resource_tc_dcdb_hourdb_instance.go

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -154,12 +154,14 @@ func resourceTencentCloudDcdbHourdbInstance() *schema.Resource {
154154

155155
"vip": {
156156
Optional: true,
157+
Computed: true,
157158
Type: schema.TypeString,
158159
Description: "The field is required to specify VIP.",
159160
},
160161

161162
"vipv6": {
162163
Optional: true,
164+
Computed: true,
163165
Type: schema.TypeString,
164166
Description: "The field is required to specify VIPv6.",
165167
},
@@ -500,9 +502,9 @@ func resourceTencentCloudDcdbHourdbInstanceRead(d *schema.ResourceData, meta int
500502
_ = d.Set("resource_tags", resourceTagsList)
501503
}
502504

503-
if sg, err := service.DescribeDcdbSecurityGroup(ctx, instanceId); sg != nil {
505+
if sg, err := service.DescribeDcdbSecurityGroup(ctx, instanceId); err == nil {
504506
sgId := ""
505-
if len(sg.Groups) > 0 {
507+
if sg != nil && len(sg.Groups) > 0 {
506508
sgId = *sg.Groups[0].SecurityGroupId
507509
}
508510
_ = d.Set("security_group_id", sgId)
@@ -511,7 +513,7 @@ func resourceTencentCloudDcdbHourdbInstanceRead(d *schema.ResourceData, meta int
511513
}
512514

513515
// set dcn id and region
514-
if dcns, err := service.DescribeDcnDetailById(ctx, instanceId); dcns != nil {
516+
if dcns, err := service.DescribeDcnDetailById(ctx, instanceId); err == nil {
515517
for _, dcn := range dcns {
516518
var master *dcdb.DcnDetailItem
517519
if *dcn.DcnFlag == DCDB_DCN_FLAG_MASTER {
@@ -524,9 +526,10 @@ func resourceTencentCloudDcdbHourdbInstanceRead(d *schema.ResourceData, meta int
524526
return err
525527
}
526528

527-
// set vip and vipv6
528-
if detail, err := service.DescribeDcdbDbInstanceDetailById(ctx, instanceId); detail != nil {
529+
// set rs_access_strategy, vip, vipv6 and vport
530+
if detail, err := service.DescribeDcdbDbInstanceDetailById(ctx, instanceId); err == nil {
529531
if detail != nil {
532+
_ = d.Set("rs_access_strategy", detail.RsAccessStrategy)
530533
_ = d.Set("vip", detail.Vip)
531534
_ = d.Set("vipv6", detail.Vip6)
532535
_ = d.Set("vport", detail.Vport)
@@ -574,14 +577,6 @@ func resourceTencentCloudDcdbHourdbInstanceUpdate(d *schema.ResourceData, meta i
574577
return fmt.Errorf("`shard_count` do not support change now.")
575578
}
576579

577-
if d.HasChange("vpc_id") {
578-
return fmt.Errorf("`vpc_id` do not support change now.")
579-
}
580-
581-
if d.HasChange("subnet_id") {
582-
return fmt.Errorf("`subnet_id` do not support change now.")
583-
}
584-
585580
if d.HasChange("db_version_id") {
586581
return fmt.Errorf("`db_version_id` do not support change now.")
587582
}
@@ -637,7 +632,7 @@ func resourceTencentCloudDcdbHourdbInstanceUpdate(d *schema.ResourceData, meta i
637632
time.Sleep(2 * time.Second)
638633
}
639634

640-
if d.HasChange("vip") || d.HasChange("vipv6") {
635+
if d.HasChange("vpc_id") || d.HasChange("subnet_id") || d.HasChange("vip") || d.HasChange("vipv6") {
641636
var (
642637
vip string
643638
vipv6 string
@@ -658,7 +653,7 @@ func resourceTencentCloudDcdbHourdbInstanceUpdate(d *schema.ResourceData, meta i
658653
}
659654

660655
if vpcId == "" || subnetId == "" {
661-
return fmt.Errorf("`vpc_id` and `subnet_id` cannot be empty when updating `vip` or `vipv6` fields!")
656+
return fmt.Errorf("`vpc_id` and `subnet_id` cannot be empty when updating network configs!")
662657
}
663658

664659
err := service.SetNetworkVip(ctx, instanceId, vpcId, subnetId, vip, vipv6)

tencentcloud/resource_tc_dcdb_hourdb_instance_test.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ func TestAccTencentCloudDcdbHourdbInstanceResource_basic(t *testing.T) {
7777
resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "project_id", "0"),
7878
resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "rs_access_strategy", "0"),
7979
// resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "extranet_access", "true"),
80-
resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "vip", "172.16.112.200"),
8180
resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "resource_tags.#", "1"),
8281
resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "resource_tags.0.tag_key", "aaa"),
8382
resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "resource_tags.0.tag_value", "bbb"),
@@ -92,7 +91,7 @@ func TestAccTencentCloudDcdbHourdbInstanceResource_basic(t *testing.T) {
9291
resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "project_id", defaultProjectId),
9392
resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "rs_access_strategy", "1"),
9493
// resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "extranet_access", "false"),
95-
resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "vip", "172.16.112.201"),
94+
resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "vip", "172.18.111.10"),
9695
resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "instance_name", "test_dcdb_hourdb_instance_CHANGED"),
9796
),
9897
},
@@ -166,11 +165,25 @@ data "tencentcloud_vpc_instances" "vpc" {
166165
data "tencentcloud_vpc_subnets" "subnet" {
167166
vpc_id = data.tencentcloud_vpc_instances.vpc.instance_list.0.vpc_id
168167
}
168+
169+
resource "tencentcloud_vpc" "vpc" {
170+
cidr_block = "172.18.111.0/24"
171+
name = "test-pg-network-vpc"
172+
}
173+
174+
resource "tencentcloud_subnet" "subnet" {
175+
availability_zone = var.default_az
176+
cidr_block = "172.18.111.0/24"
177+
name = "test-pg-network-sub1"
178+
vpc_id = tencentcloud_vpc.vpc.id
179+
}
169180
170181
locals {
171182
vpc_id = data.tencentcloud_vpc_subnets.subnet.instance_list.0.vpc_id
172183
subnet_id = data.tencentcloud_vpc_subnets.subnet.instance_list.0.subnet_id
173184
sg_id = data.tencentcloud_security_groups.internal.security_groups.0.security_group_id
185+
new_vpc_id = tencentcloud_subnet.subnet.vpc_id
186+
new_subnet_id = tencentcloud_subnet.subnet.id
174187
}
175188
`
176189

@@ -190,7 +203,6 @@ resource "tencentcloud_dcdb_hourdb_instance" "hourdb_instance" {
190203
project_id = 0
191204
rs_access_strategy = 0
192205
// extranet_access = true
193-
vip = "172.16.112.200"
194206
resource_tags {
195207
tag_key = "aaa"
196208
tag_value = "bbb"
@@ -208,14 +220,14 @@ resource "tencentcloud_dcdb_hourdb_instance" "hourdb_instance" {
208220
shard_storage = "10"
209221
shard_node_count = "2"
210222
shard_count = "2"
211-
vpc_id = local.vpc_id
212-
subnet_id = local.subnet_id
223+
vpc_id = local.new_vpc_id
224+
subnet_id = local.new_subnet_id
225+
vip = "172.18.111.10"
213226
security_group_id = ""
214227
db_version_id = "8.0"
215228
project_id = var.default_project
216229
rs_access_strategy = 1
217230
// extranet_access = false
218-
vip = "172.16.112.201"
219231
resource_tags {
220232
tag_key = "aaa"
221233
tag_value = "bbb"

0 commit comments

Comments
 (0)