Skip to content

Commit 61a815a

Browse files
authored
fix: mongodb - testcases and engine desc (#1028)
* fix: mongodb - testcases and engine desc * fix: mongo - remove data testcase exist checking
1 parent 4e386b1 commit 61a815a

7 files changed

+140
-82
lines changed

tencentcloud/basic_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -557,3 +557,31 @@ locals {
557557
`
558558

559559
// End of TKE Service
560+
561+
// MongoDB
562+
563+
const DefaultMongoDBSpec = `
564+
data "tencentcloud_mongodb_zone_config" "zone_config" {
565+
available_zone = "ap-guangzhou-6"
566+
}
567+
568+
variable "engine_versions" {
569+
default = {
570+
"3.6": "MONGO_36_WT",
571+
"4.0": "MONGO_40_WT",
572+
"4.2": "MONGO_42_WT"
573+
}
574+
}
575+
576+
locals {
577+
filtered_spec = [for i in data.tencentcloud_mongodb_zone_config.zone_config.list: i if lookup(i, "machine_type") == "HIO10G" && lookup(i, "engine_version") != "3.2"]
578+
spec = concat(local.filtered_spec, data.tencentcloud_mongodb_zone_config.zone_config.list)
579+
machine_type = local.spec.0.machine_type
580+
cluster_type = local.spec.0.cluster_type
581+
memory = local.spec.0.memory / 1024
582+
volume = local.spec.0.min_storage / 1024
583+
engine_version = lookup(var.engine_versions, local.spec.0.engine_version)
584+
}
585+
`
586+
587+
// End of MongoDB

tencentcloud/data_source_tc_mongodb_instances_test.go

Lines changed: 2 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -16,52 +16,13 @@ func TestAccTencentCloudMongodbInstancesDataSource(t *testing.T) {
1616
{
1717
Config: testAccMongodbInstancesDataSource,
1818
Check: resource.ComposeAggregateTestCheckFunc(
19-
testAccCheckMongodbInstanceExists("tencentcloud_mongodb_instance.mongodb_instance"),
20-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.#", "1"),
21-
resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.instance_id"),
22-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.instance_name", "tf-mongodb-test"),
23-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.project_id", "0"),
24-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.cluster_type", MONGODB_CLUSTER_TYPE_REPLSET),
25-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.available_zone", "ap-guangzhou-3"),
26-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.vpc_id", ""),
27-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.subnet_id", ""),
28-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.status", "2"),
29-
resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.vip"),
30-
resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.vport"),
31-
resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.create_time"),
32-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.engine_version", "MONGO_40_WT"),
33-
resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.cpu"),
34-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.memory", "4"),
35-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.volume", "100"),
36-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.machine_type", MONGODB_MACHINE_TYPE_HIO10G),
37-
resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.shard_quantity"),
38-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.tags.test", "test"),
39-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.0.charge_type", "POSTPAID_BY_HOUR"),
19+
resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.#"),
4020
),
4121
},
4222
},
4323
})
4424
}
4525

4626
const testAccMongodbInstancesDataSource = `
47-
resource "tencentcloud_mongodb_instance" "mongodb_instance" {
48-
instance_name = "tf-mongodb-test"
49-
memory = 4
50-
volume = 100
51-
engine_version = "MONGO_40_WT"
52-
machine_type = "TGIO"
53-
available_zone = "ap-guangzhou-3"
54-
project_id = 0
55-
password = "test1234"
56-
57-
tags = {
58-
"test" = "test"
59-
}
60-
}
61-
62-
data "tencentcloud_mongodb_instances" "mongodb_instances" {
63-
instance_id = tencentcloud_mongodb_instance.mongodb_instance.id
64-
65-
tags = tencentcloud_mongodb_instance.mongodb_instance.tags
66-
}
27+
data "tencentcloud_mongodb_instances" "mongodb_instances" {}
6728
`

tencentcloud/data_source_tc_mongodb_zone_config_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ func TestAccTencentCloudMongodbZoneConfigDataSource(t *testing.T) {
1616
Config: testAccMongodbZoneConfigDataSource,
1717
Check: resource.ComposeAggregateTestCheckFunc(
1818
resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_zone_config.zone_config", "list.#"),
19-
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_zone_config.zone_config", "list.0.available_zone", "ap-guangzhou-3"),
19+
resource.TestCheckResourceAttr("data.tencentcloud_mongodb_zone_config.zone_config", "list.0.available_zone", defaultAZone),
2020
resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_zone_config.zone_config", "list.0.cluster_type"),
2121
resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_zone_config.zone_config", "list.0.machine_type"),
2222
resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_zone_config.zone_config", "list.0.cpu"),
@@ -31,8 +31,8 @@ func TestAccTencentCloudMongodbZoneConfigDataSource(t *testing.T) {
3131
})
3232
}
3333

34-
const testAccMongodbZoneConfigDataSource = `
34+
const testAccMongodbZoneConfigDataSource = defaultAzVariable + `
3535
data "tencentcloud_mongodb_zone_config" "zone_config" {
36-
available_zone = "ap-guangzhou-3"
36+
available_zone = var.default_az
3737
}
3838
`

tencentcloud/extension_mongodb.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ func TencentMongodbBasicInfo() map[string]*schema.Schema {
8989
Type: schema.TypeString,
9090
Required: true,
9191
ForceNew: true,
92-
Description: "Version of the Mongodb, and available values include `MONGO_3_WT` (represents MongoDB 3.2 WiredTiger Edition), `MONGO_3_ROCKS` (represents MongoDB 3.2 RocksDB Edition), `MONGO_36_WT` (represents MongoDB 3.6 WiredTiger Edition) and `MONGO_40_WT` (represents MongoDB 4.0 WiredTiger Edition).",
92+
Description: "Version of the Mongodb, and available values include `MONGO_36_WT` (MongoDB 3.6 WiredTiger Edition), `MONGO_40_WT` (MongoDB 4.0 WiredTiger Edition) and `MONGO_42_WT` (MongoDB 4.2 WiredTiger Edition). NOTE: `MONGO_3_WT` (MongoDB 3.2 WiredTiger Edition) and `MONGO_3_ROCKS` (MongoDB 3.2 RocksDB Edition) will deprecated.",
9393
},
9494
"machine_type": {
9595
Type: schema.TypeString,

tencentcloud/resource_tc_mongodb_instance_test.go

Lines changed: 104 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,65 @@ package tencentcloud
33
import (
44
"context"
55
"fmt"
6+
"log"
67
"testing"
8+
"time"
79

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

12-
func TestAccTencentCloudMongodbInstanceResource(t *testing.T) {
14+
func init() {
15+
// go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_mongodb_instance
16+
resource.AddTestSweepers("tencentcloud_mongodb_instance", &resource.Sweeper{
17+
Name: "tencentcloud_mongodb_instance",
18+
F: func(r string) error {
19+
logId := getLogId(contextNil)
20+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
21+
cli, _ := sharedClientForRegion(r)
22+
client := cli.(*TencentCloudClient).apiV3Conn
23+
service := MongodbService{client}
24+
25+
instances, err := service.DescribeInstancesByFilter(ctx, "", -1)
26+
if err != nil {
27+
return err
28+
}
29+
30+
var isolated []string
31+
32+
for i := range instances {
33+
ins := instances[i]
34+
id := *ins.InstanceId
35+
name := *ins.InstanceName
36+
created, err := time.Parse("2006-01-02 15:04:05", *ins.CreateTime)
37+
if err != nil {
38+
created = time.Time{}
39+
}
40+
if isResourcePersist(name, &created) {
41+
continue
42+
}
43+
log.Printf("%s (%s) will Isolated", id, name)
44+
err = service.IsolateInstance(ctx, id)
45+
if err != nil {
46+
continue
47+
}
48+
isolated = append(isolated, id)
49+
}
50+
51+
log.Printf("Offline isolated instance %v", isolated)
52+
for _, id := range isolated {
53+
err = service.OfflineIsolatedDBInstance(ctx, id)
54+
if err != nil {
55+
continue
56+
}
57+
}
58+
59+
return nil
60+
},
61+
})
62+
}
63+
64+
func TestAccTencentCloudMongodbInstanceResourcePostPaid(t *testing.T) {
1365
t.Parallel()
1466
resource.Test(t, resource.TestCase{
1567
PreCheck: func() { testAccPreCheck(t) },
@@ -21,11 +73,11 @@ func TestAccTencentCloudMongodbInstanceResource(t *testing.T) {
2173
Check: resource.ComposeTestCheckFunc(
2274
testAccCheckMongodbInstanceExists("tencentcloud_mongodb_instance.mongodb"),
2375
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb", "instance_name", "tf-mongodb-test"),
24-
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb", "memory", "4"),
25-
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb", "volume", "100"),
26-
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb", "engine_version", "MONGO_36_WT"),
27-
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb", "machine_type", MONGODB_MACHINE_TYPE_HIO),
28-
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb", "available_zone", "ap-guangzhou-2"),
76+
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb", "memory"),
77+
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb", "volume"),
78+
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb", "engine_version"),
79+
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb", "machine_type"),
80+
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb", "available_zone", "ap-guangzhou-6"),
2981
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb", "project_id", "0"),
3082
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb", "status"),
3183
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb", "vip"),
@@ -52,16 +104,27 @@ func TestAccTencentCloudMongodbInstanceResource(t *testing.T) {
52104
ImportStateVerify: true,
53105
ImportStateVerifyIgnore: []string{"security_groups", "password", "auto_renew_flag"},
54106
},
107+
},
108+
})
109+
}
110+
111+
func TestAccTencentCloudMongodbInstanceResourcePrepaid(t *testing.T) {
112+
// Avoid to set Parallel to make sure EnvVar secure
113+
resource.Test(t, resource.TestCase{
114+
PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) },
115+
Providers: testAccProviders,
116+
CheckDestroy: testAccCheckMongodbInstanceDestroy,
117+
Steps: []resource.TestStep{
55118
{
56119
Config: testAccMongodbInstancePrepaid,
57120
Check: resource.ComposeTestCheckFunc(
58121
testAccCheckMongodbInstanceExists("tencentcloud_mongodb_instance.mongodb_prepaid"),
59122
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "instance_name", "tf-mongodb-test-prepaid"),
60-
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "memory", "8"),
61-
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "volume", "200"),
62-
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "engine_version", "MONGO_40_WT"),
63-
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "machine_type", MONGODB_MACHINE_TYPE_HIO10G),
64-
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "available_zone", "ap-guangzhou-3"),
123+
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb", "memory"),
124+
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb", "volume"),
125+
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb", "engine_version"),
126+
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb", "machine_type"),
127+
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "available_zone", "ap-guangzhou-6"),
65128
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "project_id", "0"),
66129
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb_prepaid", "status"),
67130
resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb_prepaid", "vip"),
@@ -83,6 +146,12 @@ func TestAccTencentCloudMongodbInstanceResource(t *testing.T) {
83146
resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "tags.prepaid", "prepaid"),
84147
),
85148
},
149+
{
150+
ResourceName: "tencentcloud_mongodb_instance.mongodb",
151+
ImportState: true,
152+
ImportStateVerify: true,
153+
ImportStateVerifyIgnore: []string{"security_groups", "password", "auto_renew_flag"},
154+
},
86155
},
87156
})
88157
}
@@ -137,14 +206,14 @@ func testAccCheckMongodbInstanceExists(n string) resource.TestCheckFunc {
137206
}
138207
}
139208

140-
const testAccMongodbInstance = `
209+
const testAccMongodbInstance = DefaultMongoDBSpec + `
141210
resource "tencentcloud_mongodb_instance" "mongodb" {
142211
instance_name = "tf-mongodb-test"
143-
memory = 4
144-
volume = 100
145-
engine_version = "MONGO_36_WT"
146-
machine_type = "GIO"
147-
available_zone = "ap-guangzhou-2"
212+
memory = local.memory
213+
volume = local.volume
214+
engine_version = local.engine_version
215+
machine_type = local.machine_type
216+
available_zone = "ap-guangzhou-6"
148217
project_id = 0
149218
password = "test1234"
150219
@@ -154,14 +223,14 @@ resource "tencentcloud_mongodb_instance" "mongodb" {
154223
}
155224
`
156225

157-
const testAccMongodbInstance_update = `
226+
const testAccMongodbInstance_update = DefaultMongoDBSpec + `
158227
resource "tencentcloud_mongodb_instance" "mongodb" {
159228
instance_name = "tf-mongodb-update"
160-
memory = 8
161-
volume = 200
162-
engine_version = "MONGO_36_WT"
163-
machine_type = "GIO"
164-
available_zone = "ap-guangzhou-2"
229+
memory = local.memory * 2
230+
volume = local.volume * 2
231+
engine_version = local.engine_version
232+
machine_type = local.machine_type
233+
available_zone = "ap-guangzhou-6"
165234
project_id = 0
166235
password = "test1234update"
167236
@@ -171,14 +240,14 @@ resource "tencentcloud_mongodb_instance" "mongodb" {
171240
}
172241
`
173242

174-
const testAccMongodbInstancePrepaid = `
243+
const testAccMongodbInstancePrepaid = DefaultMongoDBSpec + `
175244
resource "tencentcloud_mongodb_instance" "mongodb_prepaid" {
176245
instance_name = "tf-mongodb-test-prepaid"
177-
memory = 8
178-
volume = 200
179-
engine_version = "MONGO_40_WT"
180-
machine_type = "HIO10G"
181-
available_zone = "ap-guangzhou-3"
246+
memory = local.memory
247+
volume = local.volume
248+
engine_version = local.engine_version
249+
machine_type = local.machine_type
250+
available_zone = "ap-guangzhou-6"
182251
project_id = 0
183252
password = "test1234"
184253
charge_type = "PREPAID"
@@ -191,14 +260,14 @@ resource "tencentcloud_mongodb_instance" "mongodb_prepaid" {
191260
}
192261
`
193262

194-
const testAccMongodbInstancePrepaid_update = `
263+
const testAccMongodbInstancePrepaid_update = DefaultMongoDBSpec + `
195264
resource "tencentcloud_mongodb_instance" "mongodb_prepaid" {
196265
instance_name = "tf-mongodb-test-prepaid-update"
197-
memory = 4
198-
volume = 100
199-
engine_version = "MONGO_40_WT"
200-
machine_type = "HIO10G"
201-
available_zone = "ap-guangzhou-3"
266+
memory = local.memory
267+
volume = local.volume
268+
engine_version = local.engine_version
269+
machine_type = local.machine_type
270+
available_zone = "ap-guangzhou-6"
202271
project_id = 0
203272
password = "test1234update"
204273
charge_type = "PREPAID"

website/docs/r/mongodb_instance.html.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ resource "tencentcloud_mongodb_instance" "mongodb" {
3333
The following arguments are supported:
3434

3535
* `available_zone` - (Required, ForceNew) The available zone of the Mongodb.
36-
* `engine_version` - (Required, ForceNew) Version of the Mongodb, and available values include `MONGO_3_WT` (represents MongoDB 3.2 WiredTiger Edition), `MONGO_3_ROCKS` (represents MongoDB 3.2 RocksDB Edition), `MONGO_36_WT` (represents MongoDB 3.6 WiredTiger Edition) and `MONGO_40_WT` (represents MongoDB 4.0 WiredTiger Edition).
36+
* `engine_version` - (Required, ForceNew) Version of the Mongodb, and available values include `MONGO_36_WT` (MongoDB 3.6 WiredTiger Edition), `MONGO_40_WT` (MongoDB 4.0 WiredTiger Edition) and `MONGO_42_WT` (MongoDB 4.2 WiredTiger Edition). NOTE: `MONGO_3_WT` (MongoDB 3.2 WiredTiger Edition) and `MONGO_3_ROCKS` (MongoDB 3.2 RocksDB Edition) will deprecated.
3737
* `instance_name` - (Required) Name of the Mongodb instance.
3838
* `machine_type` - (Required, ForceNew) Type of Mongodb instance, and available values include `HIO`(or `GIO` which will be deprecated, represents high IO) and `HIO10G`(or `TGIO` which will be deprecated, represents 10-gigabit high IO).
3939
* `memory` - (Required) Memory size. The minimum value is 2, and unit is GB. Memory and volume must be upgraded or degraded simultaneously.

website/docs/r/mongodb_sharding_instance.html.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ resource "tencentcloud_mongodb_sharding_instance" "mongodb" {
3535
The following arguments are supported:
3636

3737
* `available_zone` - (Required, ForceNew) The available zone of the Mongodb.
38-
* `engine_version` - (Required, ForceNew) Version of the Mongodb, and available values include `MONGO_3_WT` (represents MongoDB 3.2 WiredTiger Edition), `MONGO_3_ROCKS` (represents MongoDB 3.2 RocksDB Edition), `MONGO_36_WT` (represents MongoDB 3.6 WiredTiger Edition) and `MONGO_40_WT` (represents MongoDB 4.0 WiredTiger Edition).
38+
* `engine_version` - (Required, ForceNew) Version of the Mongodb, and available values include `MONGO_36_WT` (MongoDB 3.6 WiredTiger Edition), `MONGO_40_WT` (MongoDB 4.0 WiredTiger Edition) and `MONGO_42_WT` (MongoDB 4.2 WiredTiger Edition). NOTE: `MONGO_3_WT` (MongoDB 3.2 WiredTiger Edition) and `MONGO_3_ROCKS` (MongoDB 3.2 RocksDB Edition) will deprecated.
3939
* `instance_name` - (Required) Name of the Mongodb instance.
4040
* `machine_type` - (Required, ForceNew) Type of Mongodb instance, and available values include `HIO`(or `GIO` which will be deprecated, represents high IO) and `HIO10G`(or `TGIO` which will be deprecated, represents 10-gigabit high IO).
4141
* `memory` - (Required) Memory size. The minimum value is 2, and unit is GB. Memory and volume must be upgraded or degraded simultaneously.

0 commit comments

Comments
 (0)