Skip to content

Commit f507025

Browse files
authored
fix: sqlserver needfix pubsub and multi cluster testcases (#1170)
1 parent c27476a commit f507025

6 files changed

+116
-52
lines changed

tencentcloud/basic_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,15 @@ locals {
695695
volume = local.spec.0.min_storage / 1024
696696
engine_version = lookup(var.engine_versions, local.spec.0.engine_version)
697697
}
698+
699+
locals {
700+
filtered_sharding_spec = [for i in data.tencentcloud_mongodb_zone_config.zone_config.list: i if lookup(i, "cluster_type") == "SHARD" && lookup(i, "min_replicate_set_num") > 0 && lookup(i, "machine_type") == "HIO10G" && lookup(i, "engine_version") != "3.2"]
701+
sharding_spec = concat(local.filtered_sharding_spec, [for i in data.tencentcloud_mongodb_zone_config.zone_config.list: i if lookup(i, "cluster_type") == "SHARD" && lookup(i, "min_replicate_set_num") > 0])
702+
sharding_machine_type = local.sharding_spec.0.machine_type
703+
sharding_memory = local.sharding_spec.0.memory / 1024
704+
sharding_volume = local.sharding_spec.0.min_storage / 1024
705+
sharding_engine_version = lookup(var.engine_versions, local.sharding_spec.0.engine_version)
706+
}
698707
`
699708

700709
// End of MongoDB

tencentcloud/data_source_tc_mongodb_zone_config.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,16 @@ func dataSourceTencentCloudMongodbZoneConfig() *schema.Resource {
8484
Computed: true,
8585
Description: "Version of the Mongodb version.",
8686
},
87+
"min_replicate_set_num": {
88+
Type: schema.TypeInt,
89+
Computed: true,
90+
Description: "Minimum replicate set num for sharding cluster.",
91+
},
92+
"max_replicate_set_num": {
93+
Type: schema.TypeInt,
94+
Computed: true,
95+
Description: "Maximum replicate set num for sharding cluster.",
96+
},
8797
},
8898
},
8999
},
@@ -117,15 +127,17 @@ func dataSourceTencentCloudMongodbZoneConfigRead(d *schema.ResourceData, meta in
117127
clusterType = MONGODB_CLUSTER_TYPE_SHARD
118128
}
119129
mapping := map[string]interface{}{
120-
"available_zone": info.Zone,
121-
"cluster_type": clusterType,
122-
"machine_type": item.MachineType,
123-
"cpu": item.Cpu,
124-
"memory": item.Memory,
125-
"default_storage": item.DefaultStorage,
126-
"min_storage": item.MinStorage,
127-
"max_storage": item.MaxStorage,
128-
"engine_version": item.Version,
130+
"available_zone": info.Zone,
131+
"cluster_type": clusterType,
132+
"machine_type": item.MachineType,
133+
"cpu": item.Cpu,
134+
"memory": item.Memory,
135+
"default_storage": item.DefaultStorage,
136+
"min_storage": item.MinStorage,
137+
"max_storage": item.MaxStorage,
138+
"engine_version": item.Version,
139+
"min_replicate_set_num": item.MinReplicateSetNum,
140+
"max_replicate_set_num": item.MaxReplicateSetNum,
129141
}
130142
configList = append(configList, mapping)
131143
}

tencentcloud/resource_tc_mongodb_sharding_instance_test.go

Lines changed: 31 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
func TestAccTencentCloudNeedFixMongodbShardingInstance(t *testing.T) {
1313
t.Parallel()
1414
resource.Test(t, resource.TestCase{
15-
PreCheck: func() { testAccPreCheck(t) },
15+
PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) },
1616
Providers: testAccProviders,
1717
CheckDestroy: testAccCheckMongodbShardingInstanceDestroy,
1818
Steps: []resource.TestStep{
@@ -23,11 +23,11 @@ func TestAccTencentCloudNeedFixMongodbShardingInstance(t *testing.T) {
2323
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "instance_name", "tf-mongodb-sharding"),
2424
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "shard_quantity", "2"),
2525
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "nodes_per_shard", "3"),
26-
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "memory", "8"),
27-
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "volume", "200"),
28-
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "engine_version", "MONGO_36_WT"),
29-
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "machine_type", MONGODB_MACHINE_TYPE_HIO10G),
30-
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "available_zone", "ap-guangzhou-3"),
26+
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb", "memory"),
27+
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb", "volume"),
28+
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb", "engine_version"),
29+
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb", "machine_type"),
30+
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "available_zone", "ap-guangzhou-6"),
3131
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "project_id", "0"),
3232
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb", "status"),
3333
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb", "vip"),
@@ -43,8 +43,6 @@ func TestAccTencentCloudNeedFixMongodbShardingInstance(t *testing.T) {
4343
Check: resource.ComposeTestCheckFunc(
4444
testAccCheckMongodbInstanceExists("tencentcloud_mongodb_sharding_instance.mongodb"),
4545
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "instance_name", "tf-mongodb-sharding-update"),
46-
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "memory", "4"),
47-
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "volume", "100"),
4846
resource.TestCheckNoResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "tags.test"),
4947
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "tags.abc", "abc"),
5048
),
@@ -62,11 +60,7 @@ func TestAccTencentCloudNeedFixMongodbShardingInstance(t *testing.T) {
6260
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "instance_name", "tf-mongodb-sharding-prepaid"),
6361
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "shard_quantity", "2"),
6462
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "nodes_per_shard", "3"),
65-
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "memory", "4"),
66-
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "volume", "100"),
67-
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "engine_version", "MONGO_40_WT"),
68-
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "machine_type", MONGODB_MACHINE_TYPE_HIO10G),
69-
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "available_zone", "ap-guangzhou-3"),
63+
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "available_zone", "ap-guangzhou-6"),
7064
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "project_id", "0"),
7165
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "status"),
7266
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "vip"),
@@ -83,8 +77,6 @@ func TestAccTencentCloudNeedFixMongodbShardingInstance(t *testing.T) {
8377
Check: resource.ComposeTestCheckFunc(
8478
testAccCheckMongodbInstanceExists("tencentcloud_mongodb_sharding_instance.mongodb_prepaid"),
8579
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "instance_name", "tf-mongodb-sharding-prepaid-update"),
86-
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "memory", "8"),
87-
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "volume", "200"),
8880
resource.TestCheckNoResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "tags.test"),
8981
resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "tags.prepaid", "prepaid"),
9082
),
@@ -117,16 +109,16 @@ func testAccCheckMongodbShardingInstanceDestroy(s *terraform.State) error {
117109
return nil
118110
}
119111

120-
const testAccMongodbShardingInstance = `
112+
const testAccMongodbShardingInstance = DefaultMongoDBSpec + `
121113
resource "tencentcloud_mongodb_sharding_instance" "mongodb" {
122114
instance_name = "tf-mongodb-sharding"
123115
shard_quantity = 2
124116
nodes_per_shard = 3
125-
memory = 8
126-
volume = 200
127-
engine_version = "MONGO_36_WT"
128-
machine_type = "TGIO"
129-
available_zone = "ap-guangzhou-3"
117+
memory = local.sharding_memory
118+
volume = local.sharding_volume
119+
engine_version = local.sharding_engine_version
120+
machine_type = local.sharding_machine_type
121+
available_zone = "ap-guangzhou-6"
130122
project_id = 0
131123
password = "test1234"
132124
@@ -136,16 +128,16 @@ resource "tencentcloud_mongodb_sharding_instance" "mongodb" {
136128
}
137129
`
138130

139-
const testAccMongodbShardingInstanceUpdate = `
131+
const testAccMongodbShardingInstanceUpdate = DefaultMongoDBSpec + `
140132
resource "tencentcloud_mongodb_sharding_instance" "mongodb" {
141133
instance_name = "tf-mongodb-sharding-update"
142134
shard_quantity = 2
143135
nodes_per_shard = 3
144-
memory = 4
145-
volume = 100
146-
engine_version = "MONGO_36_WT"
147-
machine_type = "TGIO"
148-
available_zone = "ap-guangzhou-3"
136+
memory = local.sharding_memory * 2
137+
volume = local.sharding_volume + 50
138+
engine_version = local.sharding_engine_version
139+
machine_type = local.sharding_machine_type
140+
available_zone = "ap-guangzhou-6"
149141
project_id = 0
150142
password = "test1234update"
151143
@@ -155,16 +147,16 @@ resource "tencentcloud_mongodb_sharding_instance" "mongodb" {
155147
}
156148
`
157149

158-
const testAccMongodbShardingInstancePrepaid = `
150+
const testAccMongodbShardingInstancePrepaid = DefaultMongoDBSpec + `
159151
resource "tencentcloud_mongodb_sharding_instance" "mongodb_prepaid" {
160152
instance_name = "tf-mongodb-sharding-prepaid"
161153
shard_quantity = 2
162154
nodes_per_shard = 3
163-
memory = 4
164-
volume = 100
165-
engine_version = "MONGO_40_WT"
166-
machine_type = "HIO10G"
167-
available_zone = "ap-guangzhou-3"
155+
memory = local.sharding_memory * 2
156+
volume = local.sharding_volume + 50
157+
engine_version = local.sharding_engine_version
158+
machine_type = local.sharding_machine_type
159+
available_zone = "ap-guangzhou-6"
168160
project_id = 0
169161
password = "test1234"
170162
charge_type = "PREPAID"
@@ -177,16 +169,16 @@ resource "tencentcloud_mongodb_sharding_instance" "mongodb_prepaid" {
177169
}
178170
`
179171

180-
const testAccMongodbShardingInstancePrepaid_update = `
172+
const testAccMongodbShardingInstancePrepaid_update = DefaultMongoDBSpec + `
181173
resource "tencentcloud_mongodb_sharding_instance" "mongodb_prepaid" {
182174
instance_name = "tf-mongodb-sharding-prepaid-update"
183175
shard_quantity = 2
184176
nodes_per_shard = 3
185-
memory = 8
186-
volume = 200
187-
engine_version = "MONGO_40_WT"
188-
machine_type = "HIO10G"
189-
available_zone = "ap-guangzhou-3"
177+
memory = local.sharding_memory * 2
178+
volume = local.sharding_volume + 50
179+
engine_version = local.sharding_engine_version
180+
machine_type = local.sharding_machine_type
181+
available_zone = "ap-guangzhou-6"
190182
project_id = 0
191183
password = "test1234update"
192184
charge_type = "PREPAID"

tencentcloud/resource_tc_sqlserver_instance_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ func TestAccTencentCloudSqlserverInstanceResource_Prepaid(t *testing.T) {
236236
})
237237
}
238238

239-
func TestAccTencentCloudNeedFixSqlserverInstanceMultiClusterResource(t *testing.T) {
239+
func TestAccTencentCloudSqlserverInstanceMultiClusterResource(t *testing.T) {
240240
t.Parallel()
241241
resource.Test(t, resource.TestCase{
242242
PreCheck: func() { testAccPreCheck(t) },

tencentcloud/resource_tc_sqlserver_publish_subscribe_test.go

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,63 @@ package tencentcloud
33
import (
44
"context"
55
"fmt"
6+
"log"
67
"strings"
78
"testing"
9+
"time"
810

911
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
1012
"github.com/hashicorp/terraform-plugin-sdk/terraform"
1113
)
1214

13-
func TestAccTencentCloudNeedFixSqlserverPublishSubscribeResource(t *testing.T) {
15+
func init() {
16+
// go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_sqlserver_publish_subscribe
17+
resource.AddTestSweepers("tencentcloud_sqlserver_publish_subscribe", &resource.Sweeper{
18+
Name: "tencentcloud_sqlserver_publish_subscribe",
19+
F: func(r string) error {
20+
logId := getLogId(contextNil)
21+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
22+
cli, _ := sharedClientForRegion(r)
23+
client := cli.(*TencentCloudClient).apiV3Conn
24+
service := SqlserverService{client}
25+
subInstances, err := service.DescribeSqlserverInstances(ctx, "", defaultSubSQLServerName, -1, "", "", 1)
26+
27+
if err != nil {
28+
return err
29+
}
30+
31+
subInstanceId := *subInstances[0].InstanceId
32+
33+
database, err := service.DescribeDBsOfInstance(ctx, subInstanceId)
34+
if err != nil {
35+
return err
36+
}
37+
38+
if len(database) == 0 {
39+
log.Printf("no DBs in %s", subInstanceId)
40+
return nil
41+
}
42+
43+
for i := range database {
44+
item := database[i]
45+
created := time.Time{}
46+
name := *item.Name
47+
if item.CreateTime != nil {
48+
created = stringTotime(*item.CreateTime)
49+
}
50+
if name != defaultSQLServerPubSubDB || isResourcePersist("", &created) {
51+
continue
52+
}
53+
if err := service.DeleteSqlserverDB(ctx, subInstanceId, []*string{item.Name}); err != nil {
54+
log.Printf("err: %s", err.Error())
55+
}
56+
}
57+
return nil
58+
},
59+
})
60+
}
61+
62+
func TestAccTencentCloudSqlserverPublishSubscribeResource(t *testing.T) {
1463
resource.Test(t, resource.TestCase{
1564
PreCheck: func() { testAccPreCheck(t) },
1665
Providers: testAccProviders,
@@ -101,7 +150,7 @@ resource "tencentcloud_sqlserver_publish_subscribe" "example" {
101150
publish_instance_id = local.pub_sqlserver_id
102151
subscribe_instance_id = local.sub_sqlserver_id
103152
publish_subscribe_name = "example"
104-
delete_subscribe_db = true
153+
delete_subscribe_db = false
105154
database_tuples {
106155
publish_database = local.sqlserver_pubsub_db
107156
}
@@ -112,7 +161,7 @@ resource "tencentcloud_sqlserver_publish_subscribe" "example" {
112161
publish_instance_id = local.pub_sqlserver_id
113162
subscribe_instance_id = local.sub_sqlserver_id
114163
publish_subscribe_name = "example1"
115-
delete_subscribe_db = true
164+
delete_subscribe_db = false
116165
database_tuples {
117166
publish_database = local.sqlserver_pubsub_db
118167
}

website/docs/d/mongodb_zone_config.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,10 @@ In addition to all arguments above, the following attributes are exported:
3737
* `default_storage` - Default disk size.
3838
* `engine_version` - Version of the Mongodb version.
3939
* `machine_type` - Type of Mongodb instance.
40+
* `max_replicate_set_num` - Maximum replicate set num for sharding cluster.
4041
* `max_storage` - Maximum size of the disk.
4142
* `memory` - Memory size.
43+
* `min_replicate_set_num` - Minimum replicate set num for sharding cluster.
4244
* `min_storage` - Minimum sie of the disk.
4345

4446

0 commit comments

Comments
 (0)