Skip to content

Commit 05cf3e2

Browse files
tongyimingmikatong
and
mikatong
authored
fix(cvm): [120399559]update test case (#3227)
* update test case * add changelog * update --------- Co-authored-by: mikatong <[email protected]>
1 parent 87b8525 commit 05cf3e2

File tree

3 files changed

+303
-9
lines changed

3 files changed

+303
-9
lines changed

.changelog/3227.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_instance: support `user_data` and `user_data_raw` update
3+
```
4+
5+
```release-note:enhancement
6+
resource/tencentcloud_reserved_instance: update cvm sdk
7+
```

tencentcloud/services/cvm/resource_tc_instance_test.go

Lines changed: 289 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,69 @@ func TestAccTencentCloudInstanceResourceBasic(t *testing.T) {
116116
},
117117
})
118118
}
119+
func TestAccTencentCloudInstanceResource_UserDataRaw(t *testing.T) {
120+
t.Parallel()
121+
resource.Test(t, resource.TestCase{
122+
PreCheck: func() {
123+
acctest.AccPreCheck(t)
124+
},
125+
Providers: acctest.AccProviders,
126+
CheckDestroy: testAccCheckCvmInstanceDestroy,
127+
Steps: []resource.TestStep{
128+
{
129+
Config: testAccCvmInstanceResource_UserDataRaw,
130+
Check: resource.ComposeTestCheckFunc(
131+
testAccCheckCvmInstanceExists("tencentcloud_instance.cvm_user_data_raw"),
132+
resource.TestCheckResourceAttr("tencentcloud_instance.cvm_user_data_raw", "user_data_raw", "test"),
133+
),
134+
},
135+
{
136+
Config: testAccCvmInstanceResource_UserDataRawUpdate,
137+
Check: resource.ComposeTestCheckFunc(
138+
testAccCheckCvmInstanceExists("tencentcloud_instance.cvm_user_data_raw"),
139+
resource.TestCheckResourceAttr("tencentcloud_instance.cvm_user_data_raw", "user_data_raw", "test-update"),
140+
),
141+
},
142+
{
143+
ResourceName: "tencentcloud_instance.cvm_user_data_raw",
144+
ImportState: true,
145+
ImportStateVerifyIgnore: []string{"disable_monitor_service", "disable_security_service", "disable_automation_service", "hostname", "password", "force_delete"},
146+
},
147+
},
148+
})
149+
}
150+
151+
func TestAccTencentCloudInstanceResource_UserData(t *testing.T) {
152+
t.Parallel()
153+
resource.Test(t, resource.TestCase{
154+
PreCheck: func() {
155+
acctest.AccPreCheck(t)
156+
},
157+
Providers: acctest.AccProviders,
158+
CheckDestroy: testAccCheckCvmInstanceDestroy,
159+
Steps: []resource.TestStep{
160+
{
161+
Config: testAccCvmInstanceResource_UserData,
162+
Check: resource.ComposeTestCheckFunc(
163+
testAccCheckCvmInstanceExists("tencentcloud_instance.cvm_user_data"),
164+
resource.TestCheckResourceAttr("tencentcloud_instance.cvm_user_data", "user_data", "dGVzdA=="),
165+
),
166+
},
167+
{
168+
Config: testAccCvmInstanceResource_UserDataUpdate,
169+
Check: resource.ComposeTestCheckFunc(
170+
testAccCheckCvmInstanceExists("tencentcloud_instance.cvm_user_data"),
171+
resource.TestCheckResourceAttr("tencentcloud_instance.cvm_user_data", "user_data", "dGVzdC11cGRhdGU="),
172+
),
173+
},
174+
{
175+
ResourceName: "tencentcloud_instance.cvm_user_data",
176+
ImportState: true,
177+
ImportStateVerifyIgnore: []string{"disable_monitor_service", "disable_security_service", "disable_automation_service", "hostname", "password", "force_delete"},
178+
},
179+
},
180+
})
181+
}
119182

120183
func testAccCheckCvmInstanceExists(n string) resource.TestCheckFunc {
121184
return func(s *terraform.State) error {
@@ -163,6 +226,232 @@ func testAccCheckCvmInstanceDestroy(s *terraform.State) error {
163226
return nil
164227
}
165228

229+
const testAccCvmInstanceResource_UserData = `
230+
231+
data "tencentcloud_availability_zones" "default" {
232+
}
233+
data "tencentcloud_images" "default" {
234+
image_type = ["PUBLIC_IMAGE"]
235+
image_name_regex = "Final"
236+
}
237+
data "tencentcloud_images" "testing" {
238+
image_type = ["PUBLIC_IMAGE"]
239+
}
240+
data "tencentcloud_instance_types" "default" {
241+
memory_size = 2
242+
exclude_sold_out = true
243+
244+
filter {
245+
name = "instance-family"
246+
values = ["S1","S2","S3","S4","S5"]
247+
}
248+
filter {
249+
name = "zone"
250+
values = ["ap-guangzhou-7"]
251+
}
252+
cpu_core_count = 2
253+
}
254+
resource "tencentcloud_vpc" "vpc" {
255+
name = "cvm-basic-vpc"
256+
cidr_block = "10.0.0.0/16"
257+
}
258+
resource "tencentcloud_subnet" "subnet" {
259+
availability_zone = "ap-guangzhou-7"
260+
vpc_id = tencentcloud_vpc.vpc.id
261+
name = "cvm-basic-subnet"
262+
cidr_block = "10.0.0.0/16"
263+
}
264+
resource "tencentcloud_instance" "cvm_user_data" {
265+
instance_name = "tf-test-user-data"
266+
availability_zone = "ap-guangzhou-7"
267+
image_id = data.tencentcloud_images.default.images.0.image_id
268+
vpc_id = tencentcloud_vpc.vpc.id
269+
270+
tags = {
271+
hostname = "tci"
272+
}
273+
274+
lifecycle {
275+
ignore_changes = [instance_type]
276+
}
277+
instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type
278+
subnet_id = tencentcloud_subnet.subnet.id
279+
system_disk_type = "CLOUD_PREMIUM"
280+
project_id = 0
281+
user_data = "dGVzdA=="
282+
}
283+
284+
`
285+
const testAccCvmInstanceResource_UserDataUpdate = `
286+
287+
data "tencentcloud_availability_zones" "default" {
288+
}
289+
data "tencentcloud_images" "default" {
290+
image_type = ["PUBLIC_IMAGE"]
291+
image_name_regex = "Final"
292+
}
293+
data "tencentcloud_images" "testing" {
294+
image_type = ["PUBLIC_IMAGE"]
295+
}
296+
data "tencentcloud_instance_types" "default" {
297+
memory_size = 2
298+
exclude_sold_out = true
299+
300+
filter {
301+
name = "instance-family"
302+
values = ["S1","S2","S3","S4","S5"]
303+
}
304+
filter {
305+
name = "zone"
306+
values = ["ap-guangzhou-7"]
307+
}
308+
cpu_core_count = 2
309+
}
310+
resource "tencentcloud_vpc" "vpc" {
311+
name = "cvm-basic-vpc"
312+
cidr_block = "10.0.0.0/16"
313+
}
314+
resource "tencentcloud_subnet" "subnet" {
315+
availability_zone = "ap-guangzhou-7"
316+
vpc_id = tencentcloud_vpc.vpc.id
317+
name = "cvm-basic-subnet"
318+
cidr_block = "10.0.0.0/16"
319+
}
320+
resource "tencentcloud_instance" "cvm_user_data" {
321+
instance_name = "tf-test-user-data"
322+
availability_zone = "ap-guangzhou-7"
323+
image_id = data.tencentcloud_images.default.images.0.image_id
324+
vpc_id = tencentcloud_vpc.vpc.id
325+
326+
tags = {
327+
hostname = "tci"
328+
}
329+
330+
lifecycle {
331+
ignore_changes = [instance_type]
332+
}
333+
instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type
334+
subnet_id = tencentcloud_subnet.subnet.id
335+
system_disk_type = "CLOUD_PREMIUM"
336+
project_id = 0
337+
user_data = "dGVzdC11cGRhdGU="
338+
}
339+
340+
`
341+
342+
const testAccCvmInstanceResource_UserDataRaw = `
343+
344+
data "tencentcloud_availability_zones" "default" {
345+
}
346+
data "tencentcloud_images" "default" {
347+
image_type = ["PUBLIC_IMAGE"]
348+
image_name_regex = "Final"
349+
}
350+
data "tencentcloud_images" "testing" {
351+
image_type = ["PUBLIC_IMAGE"]
352+
}
353+
data "tencentcloud_instance_types" "default" {
354+
memory_size = 2
355+
exclude_sold_out = true
356+
357+
filter {
358+
name = "instance-family"
359+
values = ["S1","S2","S3","S4","S5"]
360+
}
361+
filter {
362+
name = "zone"
363+
values = ["ap-guangzhou-7"]
364+
}
365+
cpu_core_count = 2
366+
}
367+
resource "tencentcloud_vpc" "vpc" {
368+
name = "cvm-basic-vpc"
369+
cidr_block = "10.0.0.0/16"
370+
}
371+
resource "tencentcloud_subnet" "subnet" {
372+
availability_zone = "ap-guangzhou-7"
373+
vpc_id = tencentcloud_vpc.vpc.id
374+
name = "cvm-basic-subnet"
375+
cidr_block = "10.0.0.0/16"
376+
}
377+
resource "tencentcloud_instance" "cvm_user_data_raw" {
378+
instance_name = "tf-test-user-data-raw"
379+
availability_zone = "ap-guangzhou-7"
380+
image_id = data.tencentcloud_images.default.images.0.image_id
381+
vpc_id = tencentcloud_vpc.vpc.id
382+
383+
tags = {
384+
hostname = "tci"
385+
}
386+
387+
lifecycle {
388+
ignore_changes = [instance_type]
389+
}
390+
instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type
391+
subnet_id = tencentcloud_subnet.subnet.id
392+
system_disk_type = "CLOUD_PREMIUM"
393+
project_id = 0
394+
user_data_raw = "test"
395+
}
396+
397+
`
398+
const testAccCvmInstanceResource_UserDataRawUpdate = `
399+
400+
data "tencentcloud_availability_zones" "default" {
401+
}
402+
data "tencentcloud_images" "default" {
403+
image_type = ["PUBLIC_IMAGE"]
404+
image_name_regex = "Final"
405+
}
406+
data "tencentcloud_images" "testing" {
407+
image_type = ["PUBLIC_IMAGE"]
408+
}
409+
data "tencentcloud_instance_types" "default" {
410+
memory_size = 2
411+
exclude_sold_out = true
412+
413+
filter {
414+
name = "instance-family"
415+
values = ["S1","S2","S3","S4","S5"]
416+
}
417+
filter {
418+
name = "zone"
419+
values = ["ap-guangzhou-7"]
420+
}
421+
cpu_core_count = 2
422+
}
423+
resource "tencentcloud_vpc" "vpc" {
424+
name = "cvm-basic-vpc"
425+
cidr_block = "10.0.0.0/16"
426+
}
427+
resource "tencentcloud_subnet" "subnet" {
428+
availability_zone = "ap-guangzhou-7"
429+
vpc_id = tencentcloud_vpc.vpc.id
430+
name = "cvm-basic-subnet"
431+
cidr_block = "10.0.0.0/16"
432+
}
433+
resource "tencentcloud_instance" "cvm_user_data_raw" {
434+
instance_name = "tf-test-user-data-raw"
435+
availability_zone = "ap-guangzhou-7"
436+
image_id = data.tencentcloud_images.default.images.0.image_id
437+
vpc_id = tencentcloud_vpc.vpc.id
438+
439+
tags = {
440+
hostname = "tci"
441+
}
442+
443+
lifecycle {
444+
ignore_changes = [instance_type]
445+
}
446+
instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type
447+
subnet_id = tencentcloud_subnet.subnet.id
448+
system_disk_type = "CLOUD_PREMIUM"
449+
project_id = 0
450+
user_data_raw = "test-update"
451+
}
452+
453+
`
454+
166455
const testAccCvmInstanceResource_BasicCreate = `
167456
168457
data "tencentcloud_availability_zones" "default" {

tencentcloud/services/cvm/resource_tc_reserved_instance_test.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
99
)
1010

11-
func TestAccTencentCloudReservedInstance(t *testing.T) {
11+
func TestAccTencentCloudReservedInstanceResource(t *testing.T) {
1212
t.Parallel()
1313
resource.Test(t, resource.TestCase{
1414
PreCheck: func() { tcacctest.AccPreCheck(t) },
@@ -17,28 +17,26 @@ func TestAccTencentCloudReservedInstance(t *testing.T) {
1717
{
1818
Config: testAccReservedInstance,
1919
Check: resource.ComposeTestCheckFunc(
20-
testAccCheckPlacementGroupExists("tencentcloud_reserved_instance.reserved_instance"),
21-
resource.TestCheckResourceAttr("tencentcloud_reserved_instance.reserved_instance", "config_id", "ca8d39c3-4605-4e8d-9a21-05188cc9d1d4"),
22-
resource.TestCheckResourceAttr("tencentcloud_reserved_instance.reserved_instance", "instance_count", "2"),
20+
resource.TestCheckResourceAttr("tencentcloud_reserved_instance.reserved_instance", "config_id", "3ae825a8-bf6f-4c43-aa2c-c507c08fba92"),
21+
resource.TestCheckResourceAttr("tencentcloud_reserved_instance.reserved_instance", "instance_count", "1"),
2322
resource.TestCheckResourceAttr("tencentcloud_reserved_instance.reserved_instance", "reserved_instance_name", "test"),
2423
resource.TestCheckResourceAttrSet("tencentcloud_reserved_instance.reserved_instance", "start_time"),
2524
resource.TestCheckResourceAttrSet("tencentcloud_reserved_instance.reserved_instance", "end_time"),
2625
resource.TestCheckResourceAttrSet("tencentcloud_reserved_instance.reserved_instance", "status"),
2726
),
2827
},
2928
{
30-
ResourceName: "tencentcloud_reserved_instance.reserved_instance",
31-
ImportState: true,
32-
ImportStateVerify: true,
29+
ResourceName: "tencentcloud_reserved_instance.reserved_instance",
30+
ImportState: true,
3331
},
3432
},
3533
})
3634
}
3735

3836
const testAccReservedInstance = `
3937
resource "tencentcloud_reserved_instance" "reserved_instance" {
40-
config_id = "ca8d39c3-4605-4e8d-9a21-05188cc9d1d4"
41-
instance_count = 2
38+
config_id = "3ae825a8-bf6f-4c43-aa2c-c507c08fba92"
39+
instance_count = 1
4240
reserved_instance_name = "test"
4341
}
4442
`

0 commit comments

Comments
 (0)