From aeef76895062be97beea8f3a8c3062ebfe2a2d48 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Thu, 30 May 2024 14:10:38 +0800 Subject: [PATCH 1/6] add --- .../services/cvm/data_source_tc_eips.md | 38 +++++++- .../services/cvm/data_source_tc_eips_test.go | 49 +++++++---- .../services/cvm/data_source_tc_image.md | 29 ++++++- .../services/cvm/data_source_tc_image_test.go | 6 +- .../services/cvm/data_source_tc_images.md | 45 +++++++++- .../cvm/data_source_tc_images_test.go | 37 ++++---- .../cvm/data_source_tc_instance_types.md | 28 +++--- .../cvm/data_source_tc_instance_types_test.go | 20 +++-- .../services/cvm/data_source_tc_instances.md | 31 ++++++- .../cvm/data_source_tc_instances_set.md | 13 ++- .../cvm/data_source_tc_instances_set_test.go | 87 +++++++++++-------- .../cvm/data_source_tc_instances_test.go | 74 +++++++++++++--- .../services/cvm/data_source_tc_key_pairs.md | 9 +- .../cvm/data_source_tc_key_pairs_test.go | 27 +++--- .../cvm/data_source_tc_placement_groups.md | 6 +- .../data_source_tc_placement_groups_test.go | 20 +++-- .../cvm/resource_tc_cvm_renew_instance.md | 55 ++++++++++-- .../resource_tc_cvm_renew_instance_test.go | 65 ++++++++++++-- ...source_tc_cvm_security_group_attachment.md | 59 ++++++++++++- ...e_tc_cvm_security_group_attachment_test.go | 55 ++++++++++-- .../services/cvm/resource_tc_instance.go | 15 ++++ 21 files changed, 598 insertions(+), 170 deletions(-) diff --git a/tencentcloud/services/cvm/data_source_tc_eips.md b/tencentcloud/services/cvm/data_source_tc_eips.md index 845c170780..3327218a58 100644 --- a/tencentcloud/services/cvm/data_source_tc_eips.md +++ b/tencentcloud/services/cvm/data_source_tc_eips.md @@ -2,8 +2,42 @@ Use this data source to query eip instances. Example Usage +Query all eip instances + +```hcl +data "tencentcloud_eips" "example" {} +``` + +Query eip instances by eip ID + ```hcl -data "tencentcloud_eips" "foo" { +data "tencentcloud_eips" "example" { eip_id = "eip-ry9h95hg" } -``` \ No newline at end of file +``` + +Query eip instances by eip name + +```hcl +data "tencentcloud_eips" "example" { + eip_name = "tf-example" +} +``` + +Query eip instances by public ip + +```hcl +data "tencentcloud_eips" "example" { + public_ip = "1.12.62.3" +} +``` + +Query eip instances by tags + +```hcl +data "tencentcloud_eips" "example" { + tags = { + "test" = "test" + } +} +``` diff --git a/tencentcloud/services/cvm/data_source_tc_eips_test.go b/tencentcloud/services/cvm/data_source_tc_eips_test.go index da3a996b56..a87f5f9c22 100644 --- a/tencentcloud/services/cvm/data_source_tc_eips_test.go +++ b/tencentcloud/services/cvm/data_source_tc_eips_test.go @@ -8,7 +8,8 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) -func TestAccTencentCloudEipsDataSource(t *testing.T) { +// go test -i; go test -test.run TestAccTencentCloudEipsDataSource_basic -v +func TestAccTencentCloudEipsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { tcacctest.AccPreCheck(t) }, @@ -18,17 +19,23 @@ func TestAccTencentCloudEipsDataSource(t *testing.T) { { Config: testAccEipsDataSource, Check: resource.ComposeTestCheckFunc( - tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eips.data_eips"), - resource.TestCheckResourceAttr("data.tencentcloud_eips.data_eips", "eip_list.#", "1"), - resource.TestCheckResourceAttrSet("data.tencentcloud_eips.data_eips", "eip_list.0.eip_id"), - resource.TestCheckResourceAttr("data.tencentcloud_eips.data_eips", "eip_list.0.eip_name", "tf-test-eip"), - resource.TestCheckResourceAttrSet("data.tencentcloud_eips.data_eips", "eip_list.0.eip_type"), - resource.TestCheckResourceAttrSet("data.tencentcloud_eips.data_eips", "eip_list.0.status"), - resource.TestCheckResourceAttrSet("data.tencentcloud_eips.data_eips", "eip_list.0.public_ip"), - resource.TestCheckResourceAttrSet("data.tencentcloud_eips.data_eips", "eip_list.0.create_time"), - - tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eips.tags"), - resource.TestCheckResourceAttr("data.tencentcloud_eips.tags", "eip_list.0.tags.test", "test"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eips.example"), + resource.TestCheckResourceAttr("data.tencentcloud_eips.example", "eip_list.#", "1"), + + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eips.example_by_id"), + resource.TestCheckResourceAttr("data.tencentcloud_eips.example_by_id", "eip_list.#", "1"), + resource.TestCheckResourceAttrSet("data.tencentcloud_eips.example_by_id", "eip_list.0.eip_id"), + resource.TestCheckResourceAttr("data.tencentcloud_eips.example_by_id", "eip_list.0.eip_name", "tf-example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_eips.example_by_id", "eip_list.0.eip_type"), + resource.TestCheckResourceAttrSet("data.tencentcloud_eips.example_by_id", "eip_list.0.status"), + resource.TestCheckResourceAttrSet("data.tencentcloud_eips.example_by_id", "eip_list.0.public_ip"), + resource.TestCheckResourceAttrSet("data.tencentcloud_eips.example_by_id", "eip_list.0.create_time"), + + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eips.example_by_name"), + resource.TestCheckResourceAttr("data.tencentcloud_eips.example_by_name", "eip_list.0.eip_name", "tf-example"), + + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eips.example_by_tags"), + resource.TestCheckResourceAttr("data.tencentcloud_eips.example_by_tags", "eip_list.0.tags.test", "test"), ), }, }, @@ -36,19 +43,25 @@ func TestAccTencentCloudEipsDataSource(t *testing.T) { } const testAccEipsDataSource = ` -resource "tencentcloud_eip" "eip" { - name = "tf-test-eip" +resource "tencentcloud_eip" "example" { + name = "tf-example" tags = { "test" = "test" } } -data "tencentcloud_eips" "data_eips" { - eip_id = tencentcloud_eip.eip.id +data "tencentcloud_eips" "example" {} + +data "tencentcloud_eips" "example_by_id" { + eip_id = tencentcloud_eip.example.id +} + +data "tencentcloud_eips" "example_by_name" { + eip_name = tencentcloud_eip.example.name } -data "tencentcloud_eips" "tags" { - tags = tencentcloud_eip.eip.tags +data "tencentcloud_eips" "example_by_tags" { + tags = tencentcloud_eip.example.tags } ` diff --git a/tencentcloud/services/cvm/data_source_tc_image.md b/tencentcloud/services/cvm/data_source_tc_image.md index 83763edad6..b620fbf9f6 100644 --- a/tencentcloud/services/cvm/data_source_tc_image.md +++ b/tencentcloud/services/cvm/data_source_tc_image.md @@ -1,18 +1,41 @@ Provides an available image for the user. -The Images data source fetch proper image, which could be one of the private images of the user and images of system resources provided by TencentCloud, as well as other public images and those available on the image market. +The Images data source fetch proper image, which could be one of the private images of the user and images of system +resources provided by TencentCloud, as well as other public images and those available on the image market. ~> **NOTE:** This data source will be deprecated, please use `tencentcloud_images` instead. Example Usage +Query image + ```hcl -data "tencentcloud_image" "my_favorate_image" { - os_name = "centos" +data "tencentcloud_image" "example" {} +``` +Query image by filter + +```hcl +data "tencentcloud_image" "example" { filter { name = "image-type" values = ["PUBLIC_IMAGE"] } } +``` + +Query image by os name + +```hcl +data "tencentcloud_image" "example" { + os_name = "centos" +} +``` + +Query image by image name regex + +```hcl +data "tencentcloud_image" "example" { + image_name_regex = "^Windows\\s.*$" +} ``` \ No newline at end of file diff --git a/tencentcloud/services/cvm/data_source_tc_image_test.go b/tencentcloud/services/cvm/data_source_tc_image_test.go index d4f554013b..7bbc4b1c1c 100644 --- a/tencentcloud/services/cvm/data_source_tc_image_test.go +++ b/tencentcloud/services/cvm/data_source_tc_image_test.go @@ -9,7 +9,8 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) -func TestAccTencentCloudDataSourceImageBase(t *testing.T) { +// go test -i; go test -test.run TestAccTencentCloudDataSourceImageBase_basic -v +func TestAccTencentCloudDataSourceImageBase_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { tcacctest.AccPreCheck(t) }, @@ -52,8 +53,7 @@ func TestAccTencentCloudDataSourceImageBase(t *testing.T) { } const testAccTencentCloudDataSourceImageBase = ` -data "tencentcloud_image" "public_image" { -} +data "tencentcloud_image" "public_image" {} ` const testAccTencentCloudDataSourceImageBaseWithFilter = ` diff --git a/tencentcloud/services/cvm/data_source_tc_images.md b/tencentcloud/services/cvm/data_source_tc_images.md index 73ab9ea4f7..df535fb465 100644 --- a/tencentcloud/services/cvm/data_source_tc_images.md +++ b/tencentcloud/services/cvm/data_source_tc_images.md @@ -2,9 +2,48 @@ Use this data source to query images. Example Usage +Query all images + +```hcl +data "tencentcloud_images" "example" {} +``` + +Query images by image ID + +```hcl +data "tencentcloud_images" "example" { + image_id = "img-9qrfy1xt" +} +``` + +Query images by os name + +```hcl +data "tencentcloud_images" "example" { + os_name = "TencentOS Server 3.2 (Final)" +} +``` + +Query images by image name regex + +```hcl +data "tencentcloud_images" "example" { + image_name_regex = "^TencentOS" +} +``` + +Query images by image type + ```hcl -data "tencentcloud_images" "foo" { +data "tencentcloud_images" "example" { image_type = ["PUBLIC_IMAGE"] - os_name = "centos 7.5" } -``` \ No newline at end of file +``` + +Query images by instance type + +```hcl +data "tencentcloud_images" "example" { + instance_type = "S1.SMALL1" +} +``` diff --git a/tencentcloud/services/cvm/data_source_tc_images_test.go b/tencentcloud/services/cvm/data_source_tc_images_test.go index c771d6cc8b..46871da0a6 100644 --- a/tencentcloud/services/cvm/data_source_tc_images_test.go +++ b/tencentcloud/services/cvm/data_source_tc_images_test.go @@ -8,7 +8,8 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) -func TestAccTencentCloudDataSourceImagesBase(t *testing.T) { +// go test -i; go test -test.run TestAccTencentCloudDataSourceImagesBase_basic -v +func TestAccTencentCloudDataSourceImagesBase_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { tcacctest.AccPreCheck(t) }, @@ -17,36 +18,36 @@ func TestAccTencentCloudDataSourceImagesBase(t *testing.T) { { Config: testAccTencentCloudDataSourceImagesBase, Check: resource.ComposeTestCheckFunc( - tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.foo"), - resource.TestCheckResourceAttrSet("data.tencentcloud_images.foo", "images.#"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_images.example", "images.#"), ), }, { Config: testAccTencentCloudDataSourceImagesBaseWithFilter, Check: resource.ComposeTestCheckFunc( - tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.foo"), - resource.TestCheckResourceAttrSet("data.tencentcloud_images.foo", "images.#"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_images.example", "images.#"), ), }, { Config: testAccTencentCloudDataSourceImagesBaseWithOsName, Check: resource.ComposeTestCheckFunc( - tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.foo"), - resource.TestCheckResourceAttrSet("data.tencentcloud_images.foo", "images.#"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_images.example", "images.#"), ), }, { Config: testAccTencentCloudDataSourceImagesBaseWithImageNameRegex, Check: resource.ComposeTestCheckFunc( - tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.foo"), - resource.TestCheckResourceAttrSet("data.tencentcloud_images.foo", "images.#"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_images.example", "images.#"), ), }, { Config: testAccTencentCloudDataSourceImagesBaseWithInstanceType, Check: resource.ComposeTestCheckFunc( - tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.foo"), - resource.TestCheckResourceAttrSet("data.tencentcloud_images.foo", "images.#"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_images.example", "images.#"), ), }, }, @@ -54,33 +55,33 @@ func TestAccTencentCloudDataSourceImagesBase(t *testing.T) { } const testAccTencentCloudDataSourceImagesBase = ` -data "tencentcloud_images" "foo" { +data "tencentcloud_images" "example" { result_output_file = "data_source_tc_images_test.txt" } ` const testAccTencentCloudDataSourceImagesBaseWithFilter = ` -data "tencentcloud_images" "foo" { +data "tencentcloud_images" "example" { image_type = ["PRIVATE_IMAGE"] } ` const testAccTencentCloudDataSourceImagesBaseWithOsName = ` -data "tencentcloud_images" "foo" { +data "tencentcloud_images" "example" { image_type = ["PUBLIC_IMAGE"] - os_name = "CentOS 7.5" + os_name = "CentOS 7.5" } ` const testAccTencentCloudDataSourceImagesBaseWithImageNameRegex = ` -data "tencentcloud_images" "foo" { - image_type = ["PUBLIC_IMAGE"] +data "tencentcloud_images" "example" { + image_type = ["PUBLIC_IMAGE"] image_name_regex = "^CentOS\\s+7\\.5\\s+64\\w*" } ` const testAccTencentCloudDataSourceImagesBaseWithInstanceType = ` -data "tencentcloud_images" "foo" { +data "tencentcloud_images" "example" { instance_type = "S1.SMALL1" } ` diff --git a/tencentcloud/services/cvm/data_source_tc_instance_types.md b/tencentcloud/services/cvm/data_source_tc_instance_types.md index 969268d88c..dfa9e09771 100644 --- a/tencentcloud/services/cvm/data_source_tc_instance_types.md +++ b/tencentcloud/services/cvm/data_source_tc_instance_types.md @@ -3,23 +3,29 @@ Use this data source to query instances type. Example Usage ```hcl -data "tencentcloud_instance_types" "foo" { - availability_zone = "ap-guangzhou-2" - cpu_core_count = 2 - memory_size = 4 +data "tencentcloud_instance_types" "example" { + availability_zone = "ap-guangzhou-6" + cpu_core_count = 4 + memory_size = 8 } +``` + +Complete Example + +```hcl +data "tencentcloud_instance_types" "example" { + cpu_core_count = 4 + memory_size = 8 + exclude_sold_out = true -data tencentcloud_instance_types "t1c1g" { - cpu_core_count = 1 - memory_size = 1 - exclude_sold_out=true filter { - name = "instance-charge-type" - values = ["POSTPAID_BY_HOUR"] + name = "instance-family" + values = ["SA2"] } + filter { name = "zone" - values = ["ap-shanghai-2"] + values = ["ap-guangzhou-6"] } } ``` \ No newline at end of file diff --git a/tencentcloud/services/cvm/data_source_tc_instance_types_test.go b/tencentcloud/services/cvm/data_source_tc_instance_types_test.go index fd58706427..16ff0f9bcf 100644 --- a/tencentcloud/services/cvm/data_source_tc_instance_types_test.go +++ b/tencentcloud/services/cvm/data_source_tc_instance_types_test.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) +// go test -i; go test -test.run TestAccTencentCloudInstanceTypesDataSource_basic -v func TestAccTencentCloudInstanceTypesDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ @@ -17,15 +18,16 @@ func TestAccTencentCloudInstanceTypesDataSource_basic(t *testing.T) { { Config: testAccTencentCloudInstanceTypesDataSourceConfigBasic, Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("data.tencentcloud_instance_types.t4c8g", "instance_types.0.cpu_core_count", "4"), - resource.TestCheckResourceAttr("data.tencentcloud_instance_types.t4c8g", "instance_types.0.memory_size", "8"), - resource.TestCheckResourceAttr("data.tencentcloud_instance_types.t4c8g", "instance_types.0.availability_zone", "ap-guangzhou-3"), + resource.TestCheckResourceAttr("data.tencentcloud_instance_types.example", "instance_types.0.cpu_core_count", "4"), + resource.TestCheckResourceAttr("data.tencentcloud_instance_types.example", "instance_types.0.memory_size", "8"), + resource.TestCheckResourceAttr("data.tencentcloud_instance_types.example", "instance_types.0.availability_zone", "ap-guangzhou-3"), ), }, }, }) } +// go test -i; go test -test.run TestAccTencentCloudInstanceTypesDataSource_sell -v func TestAccTencentCloudInstanceTypesDataSource_sell(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ @@ -35,10 +37,10 @@ func TestAccTencentCloudInstanceTypesDataSource_sell(t *testing.T) { { Config: testAccTencentCloudInstanceTypesDataSourceConfigSell, Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("data.tencentcloud_instance_types.t4c8g", "instance_types.0.cpu_core_count", "2"), - resource.TestCheckResourceAttr("data.tencentcloud_instance_types.t4c8g", "instance_types.0.memory_size", "2"), - resource.TestCheckResourceAttr("data.tencentcloud_instance_types.t4c8g", "instance_types.0.availability_zone", "ap-guangzhou-3"), - resource.TestCheckResourceAttr("data.tencentcloud_instance_types.t4c8g", "instance_types.0.family", "SA2"), + resource.TestCheckResourceAttr("data.tencentcloud_instance_types.example", "instance_types.0.cpu_core_count", "2"), + resource.TestCheckResourceAttr("data.tencentcloud_instance_types.example", "instance_types.0.memory_size", "2"), + resource.TestCheckResourceAttr("data.tencentcloud_instance_types.example", "instance_types.0.availability_zone", "ap-guangzhou-3"), + resource.TestCheckResourceAttr("data.tencentcloud_instance_types.example", "instance_types.0.family", "SA2"), ), }, }, @@ -46,7 +48,7 @@ func TestAccTencentCloudInstanceTypesDataSource_sell(t *testing.T) { } const testAccTencentCloudInstanceTypesDataSourceConfigBasic = ` -data "tencentcloud_instance_types" "t4c8g" { +data "tencentcloud_instance_types" "example" { availability_zone = "ap-guangzhou-3" cpu_core_count = 4 memory_size = 8 @@ -54,7 +56,7 @@ data "tencentcloud_instance_types" "t4c8g" { ` const testAccTencentCloudInstanceTypesDataSourceConfigSell = ` -data "tencentcloud_instance_types" "t4c8g" { +data "tencentcloud_instance_types" "example" { cpu_core_count = 2 memory_size = 2 exclude_sold_out = true diff --git a/tencentcloud/services/cvm/data_source_tc_instances.md b/tencentcloud/services/cvm/data_source_tc_instances.md index 1003aa58e2..c5e3f62545 100644 --- a/tencentcloud/services/cvm/data_source_tc_instances.md +++ b/tencentcloud/services/cvm/data_source_tc_instances.md @@ -2,8 +2,33 @@ Use this data source to query cvm instances. Example Usage +Query all cvm instances + +```hcl +data "tencentcloud_instances" "example" {} +``` + +Query cvm instances by filters + +```hcl +data "tencentcloud_instances" "example" { + instance_id = "ins-a81rnm8c" + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + project_id = 0 + vpc_id = "vpc-l040hycv" + subnet_id = "subnet-1to7t9au" + + tags = { + tagKey = "tagValue" + } +} +``` + +Or by instance set id list + ```hcl -data "tencentcloud_instances" "foo" { - instance_id = "ins-da412f5a" +data "tencentcloud_instances" "example" { + instance_set_ids = ["ins-a81rnm8c"] } -``` \ No newline at end of file +``` diff --git a/tencentcloud/services/cvm/data_source_tc_instances_set.md b/tencentcloud/services/cvm/data_source_tc_instances_set.md index 53bdf4ee7a..bab9e9a988 100644 --- a/tencentcloud/services/cvm/data_source_tc_instances_set.md +++ b/tencentcloud/services/cvm/data_source_tc_instances_set.md @@ -3,7 +3,16 @@ Use this data source to query cvm instances in parallel. Example Usage ```hcl -data "tencentcloud_instances_set" "foo" { - vpc_id = "vpc-4owdpnwr" +data "tencentcloud_instances_set" "example" { + instance_id = "ins-a81rnm8c" + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + project_id = 0 + vpc_id = "vpc-l040hycv" + subnet_id = "subnet-1to7t9au" + + tags = { + tagKey = "tagValue" + } } ``` \ No newline at end of file diff --git a/tencentcloud/services/cvm/data_source_tc_instances_set_test.go b/tencentcloud/services/cvm/data_source_tc_instances_set_test.go index 8041c541f1..27296bd94a 100644 --- a/tencentcloud/services/cvm/data_source_tc_instances_set_test.go +++ b/tencentcloud/services/cvm/data_source_tc_instances_set_test.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) +// go test -i; go test -test.run TestAccTencentCloudInstanceSetDataSource_Basic -v func TestAccTencentCloudInstanceSetDataSource_Basic(t *testing.T) { t.Parallel() @@ -18,7 +19,15 @@ func TestAccTencentCloudInstanceSetDataSource_Basic(t *testing.T) { { Config: testAccTencentCloudInstancesSetBasic, Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("data.tencentcloud_instances_set.foo", "instance_list.#", "1"), + testAccCheckTencentCloudInstanceExists("tencentcloud_instance.example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances_set.example", "instance_list.0.instance_id"), + resource.TestCheckResourceAttr("data.tencentcloud_instances_set.example", "instance_list.0.instance_name", "tf_example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances_set.example", "instance_list.0.instance_type"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances_set.example", "instance_list.0.cpu"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances_set.example", "instance_list.0.memory"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances_set.example", "instance_list.0.availability_zone"), + resource.TestCheckResourceAttr("data.tencentcloud_instances_set.example", "instance_list.0.project_id", "0"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances_set.example", "instance_list.0.system_disk_type"), ), }, }, @@ -26,51 +35,55 @@ func TestAccTencentCloudInstanceSetDataSource_Basic(t *testing.T) { } const testAccTencentCloudInstancesSetBasic = ` -data "tencentcloud_availability_zones" "default" { -} -data "tencentcloud_images" "default" { - image_type = ["PUBLIC_IMAGE"] - image_name_regex = "Final" -} -data "tencentcloud_images" "testing" { - image_type = ["PUBLIC_IMAGE"] -} -data "tencentcloud_instance_types" "default" { - - filter { - name = "instance-family" - values = ["S1", "S2", "S3", "S4", "S5"] - } - filter { - name = "zone" - values = ["ap-guangzhou-7"] - } - cpu_core_count = 2 - memory_size = 2 - exclude_sold_out = true -} +# create vpc resource "tencentcloud_vpc" "vpc" { - name = "cvm-basic-vpc" + name = "vpc" cidr_block = "10.0.0.0/16" } + +# create vpc subnet resource "tencentcloud_subnet" "subnet" { - availability_zone = "ap-guangzhou-7" + name = "subnet" vpc_id = tencentcloud_vpc.vpc.id - name = "cvm-basic-subnet" - cidr_block = "10.0.0.0/16" + availability_zone = "ap-guangzhou-6" + cidr_block = "10.0.20.0/28" + is_multicast = false } -resource "tencentcloud_instance" "instances_set" { - instance_name = "tf-ci-test" - availability_zone = "ap-guangzhou-7" - image_id = data.tencentcloud_images.default.images.0.image_id + +# create cvm +resource "tencentcloud_instance" "example" { + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + image_id = "img-9qrfy1xt" + instance_type = "SA3.MEDIUM4" + system_disk_type = "CLOUD_HSSD" + system_disk_size = 100 + hostname = "example" + project_id = 0 vpc_id = tencentcloud_vpc.vpc.id subnet_id = tencentcloud_subnet.subnet.id - instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type - system_disk_type = "CLOUD_PREMIUM" - project_id = 0 + + data_disks { + data_disk_type = "CLOUD_HSSD" + data_disk_size = 50 + encrypt = false + } + + tags = { + tagKey = "tagValue" + } } -data "tencentcloud_instances_set" "foo" { - instance_id = tencentcloud_instance.instances_set.id +data "tencentcloud_instances_set" "example" { + instance_id = tencentcloud_instance.example.id + instance_name = tencentcloud_instance.example.instance_name + availability_zone = tencentcloud_instance.example.availability_zone + project_id = tencentcloud_instance.example.project_id + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + + tags = { + tagKey = "tagValue" + } } ` diff --git a/tencentcloud/services/cvm/data_source_tc_instances_test.go b/tencentcloud/services/cvm/data_source_tc_instances_test.go index 7318ad66f4..cdc896a045 100644 --- a/tencentcloud/services/cvm/data_source_tc_instances_test.go +++ b/tencentcloud/services/cvm/data_source_tc_instances_test.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) +// go test -i; go test -test.run TestAccTencentCloudDataSourceInstancesBase -v func TestAccTencentCloudDataSourceInstancesBase(t *testing.T) { t.Parallel() @@ -19,24 +20,71 @@ func TestAccTencentCloudDataSourceInstancesBase(t *testing.T) { { Config: testAccTencentCloudDataSourceInstancesBase, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudInstanceExists("tencentcloud_instance.default"), - resource.TestCheckResourceAttrSet("data.tencentcloud_instances.foo", "instance_list.0.instance_id"), - resource.TestCheckResourceAttr("data.tencentcloud_instances.foo", "instance_list.0.instance_name", tcacctest.DefaultInsName), - resource.TestCheckResourceAttrSet("data.tencentcloud_instances.foo", "instance_list.0.instance_type"), - resource.TestCheckResourceAttrSet("data.tencentcloud_instances.foo", "instance_list.0.cpu"), - resource.TestCheckResourceAttrSet("data.tencentcloud_instances.foo", "instance_list.0.memory"), - resource.TestCheckResourceAttrSet("data.tencentcloud_instances.foo", "instance_list.0.availability_zone"), - resource.TestCheckResourceAttr("data.tencentcloud_instances.foo", "instance_list.0.project_id", "0"), - resource.TestCheckResourceAttrSet("data.tencentcloud_instances.foo", "instance_list.0.system_disk_type"), + testAccCheckTencentCloudInstanceExists("tencentcloud_instance.example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances.example", "instance_list.0.instance_id"), + resource.TestCheckResourceAttr("data.tencentcloud_instances.example", "instance_list.0.instance_name", "tf_example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances.example", "instance_list.0.instance_type"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances.example", "instance_list.0.cpu"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances.example", "instance_list.0.memory"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances.example", "instance_list.0.availability_zone"), + resource.TestCheckResourceAttr("data.tencentcloud_instances.example", "instance_list.0.project_id", "0"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances.example", "instance_list.0.system_disk_type"), ), }, }, }) } -const testAccTencentCloudDataSourceInstancesBase = tcacctest.InstanceCommonTestCase + ` -data "tencentcloud_instances" "foo" { - instance_id = tencentcloud_instance.default.id - instance_name = tencentcloud_instance.default.instance_name +const testAccTencentCloudDataSourceInstancesBase = ` +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} + +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + availability_zone = "ap-guangzhou-6" + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create cvm +resource "tencentcloud_instance" "example" { + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + image_id = "img-9qrfy1xt" + instance_type = "SA3.MEDIUM4" + system_disk_type = "CLOUD_HSSD" + system_disk_size = 100 + hostname = "example" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + + data_disks { + data_disk_type = "CLOUD_HSSD" + data_disk_size = 50 + encrypt = false + } + + tags = { + tagKey = "tagValue" + } +} + +data "tencentcloud_instances" "example" { + instance_id = tencentcloud_instance.example.id + instance_name = tencentcloud_instance.example.instance_name + availability_zone = tencentcloud_instance.example.availability_zone + project_id = tencentcloud_instance.example.project_id + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + + tags = { + tagKey = "tagValue" + } } ` diff --git a/tencentcloud/services/cvm/data_source_tc_key_pairs.md b/tencentcloud/services/cvm/data_source_tc_key_pairs.md index 8d80d310e0..ab22490d31 100644 --- a/tencentcloud/services/cvm/data_source_tc_key_pairs.md +++ b/tencentcloud/services/cvm/data_source_tc_key_pairs.md @@ -2,12 +2,17 @@ Use this data source to query key pairs. Example Usage +Query key pairs by key ID + ```hcl -data "tencentcloud_key_pairs" "foo" { +data "tencentcloud_key_pairs" "key_id" { key_id = "skey-ie97i3ml" } +``` -data "tencentcloud_key_pairs" "name" { +Query key pairs by key name +```hcl +data "tencentcloud_key_pairs" "key_name" { key_name = "^test$" } ``` \ No newline at end of file diff --git a/tencentcloud/services/cvm/data_source_tc_key_pairs_test.go b/tencentcloud/services/cvm/data_source_tc_key_pairs_test.go index fcf010c595..7c4f111c4b 100644 --- a/tencentcloud/services/cvm/data_source_tc_key_pairs_test.go +++ b/tencentcloud/services/cvm/data_source_tc_key_pairs_test.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) +// go test -i; go test -test.run TestAccTencentCloudKeyPairsDataSource -v func TestAccTencentCloudKeyPairsDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ @@ -18,16 +19,16 @@ func TestAccTencentCloudKeyPairsDataSource(t *testing.T) { { Config: testAccKeyPairDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckKeyPairExists("tencentcloud_key_pair.key"), - resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.data_key", "key_pair_list.#", "1"), - resource.TestCheckResourceAttrSet("data.tencentcloud_key_pairs.data_key", "key_pair_list.0.key_id"), - resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.data_key", "key_pair_list.0.key_name", "tf_test_key"), - resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.data_key", "key_pair_list.0.project_id", "0"), - resource.TestCheckResourceAttrSet("data.tencentcloud_key_pairs.data_key", "key_pair_list.0.public_key"), - resource.TestCheckResourceAttrSet("data.tencentcloud_key_pairs.data_key", "key_pair_list.0.create_time"), + testAccCheckKeyPairExists("tencentcloud_key_pair.example"), + resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.key_id", "key_pair_list.#", "1"), + resource.TestCheckResourceAttrSet("data.tencentcloud_key_pairs.key_id", "key_pair_list.0.key_id"), + resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.key_id", "key_pair_list.0.key_name", "tf_example"), + resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.key_id", "key_pair_list.0.project_id", "0"), + resource.TestCheckResourceAttrSet("data.tencentcloud_key_pairs.key_id", "key_pair_list.0.public_key"), + resource.TestCheckResourceAttrSet("data.tencentcloud_key_pairs.key_id", "key_pair_list.0.create_time"), resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.key_name", "key_pair_list.#", "1"), resource.TestCheckResourceAttrSet("data.tencentcloud_key_pairs.key_name", "key_pair_list.0.key_id"), - resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.key_name", "key_pair_list.0.key_name", "tf_test_key"), + resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.key_name", "key_pair_list.0.key_name", "tf_example"), ), }, }, @@ -35,16 +36,16 @@ func TestAccTencentCloudKeyPairsDataSource(t *testing.T) { } const testAccKeyPairDataSource = ` -resource "tencentcloud_key_pair" "key" { - key_name = "tf_test_key" +resource "tencentcloud_key_pair" "example" { + key_name = "tf_example" public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDjd8fTnp7Dcuj4mLaQxf9Zs/ORgUL9fQxRCNKkPgP1paTy1I513maMX126i36Lxxl3+FUB52oVbo/FgwlIfX8hyCnv8MCxqnuSDozf1CD0/wRYHcTWAtgHQHBPCC2nJtod6cVC3kB18KeV4U7zsxmwFeBIxojMOOmcOBuh7+trRw==" } -data "tencentcloud_key_pairs" "data_key" { - key_id = tencentcloud_key_pair.key.id +data "tencentcloud_key_pairs" "key_id" { + key_id = tencentcloud_key_pair.example.id } data "tencentcloud_key_pairs" "key_name" { - key_name = "^${tencentcloud_key_pair.key.key_name}$" + key_name = "^${tencentcloud_key_pair.example.key_name}$" } ` diff --git a/tencentcloud/services/cvm/data_source_tc_placement_groups.md b/tencentcloud/services/cvm/data_source_tc_placement_groups.md index 1200193fb0..fe66e4000b 100644 --- a/tencentcloud/services/cvm/data_source_tc_placement_groups.md +++ b/tencentcloud/services/cvm/data_source_tc_placement_groups.md @@ -3,8 +3,8 @@ Use this data source to query placement groups. Example Usage ```hcl -data "tencentcloud_placement_groups" "foo" { - placement_group_id = "ps-21q9ibvr" - name = "test" +data "tencentcloud_placement_groups" "example" { + placement_group_id = "ps-bwvst92h" + name = "tf_example" } ``` \ No newline at end of file diff --git a/tencentcloud/services/cvm/data_source_tc_placement_groups_test.go b/tencentcloud/services/cvm/data_source_tc_placement_groups_test.go index 6345f42234..e385d432f0 100644 --- a/tencentcloud/services/cvm/data_source_tc_placement_groups_test.go +++ b/tencentcloud/services/cvm/data_source_tc_placement_groups_test.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) +// go test -i; go test -test.run TestAccTencentCloudPlacementGroupsDataSource -v func TestAccTencentCloudPlacementGroupsDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ @@ -18,11 +19,11 @@ func TestAccTencentCloudPlacementGroupsDataSource(t *testing.T) { { Config: testAccPlacementGroupDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckPlacementGroupExists("tencentcloud_placement_group.placement"), - resource.TestCheckResourceAttr("data.tencentcloud_placement_groups.data_placement", "placement_group_list.#", "1"), - resource.TestCheckResourceAttrSet("data.tencentcloud_placement_groups.data_placement", "placement_group_list.0.placement_group_id"), - resource.TestCheckResourceAttr("data.tencentcloud_placement_groups.data_placement", "placement_group_list.0.name", "tf-test-placement"), - resource.TestCheckResourceAttr("data.tencentcloud_placement_groups.data_placement", "placement_group_list.0.type", "HOST"), + testAccCheckPlacementGroupExists("tencentcloud_placement_group.example"), + resource.TestCheckResourceAttr("data.tencentcloud_placement_groups.placement_group", "placement_group_list.#", "1"), + resource.TestCheckResourceAttrSet("data.tencentcloud_placement_groups.placement_group", "placement_group_list.0.placement_group_id"), + resource.TestCheckResourceAttr("data.tencentcloud_placement_groups.placement_group", "placement_group_list.0.name", "tf_example"), + resource.TestCheckResourceAttr("data.tencentcloud_placement_groups.placement_group", "placement_group_list.0.type", "HOST"), ), }, }, @@ -30,12 +31,13 @@ func TestAccTencentCloudPlacementGroupsDataSource(t *testing.T) { } const testAccPlacementGroupDataSource = ` -resource "tencentcloud_placement_group" "placement" { - name = "tf-test-placement" +resource "tencentcloud_placement_group" "example" { + name = "tf_example" type = "HOST" } -data "tencentcloud_placement_groups" "data_placement" { - placement_group_id = tencentcloud_placement_group.placement.id +data "tencentcloud_placement_groups" "placement_group" { + name = tencentcloud_placement_group.example.name + placement_group_id = tencentcloud_placement_group.example.id } ` diff --git a/tencentcloud/services/cvm/resource_tc_cvm_renew_instance.md b/tencentcloud/services/cvm/resource_tc_cvm_renew_instance.md index 15c6f10f12..b5173e6b06 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_renew_instance.md +++ b/tencentcloud/services/cvm/resource_tc_cvm_renew_instance.md @@ -3,12 +3,57 @@ Provides a resource to create a cvm renew_instance Example Usage ```hcl -resource "tencentcloud_cvm_renew_instance" "renew_instance" { - instance_id = "ins-f9jr4bd2" - instance_charge_prepaid { - period = 1 - renew_flag = "NOTIFY_AND_AUTO_RENEW" +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} + +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + availability_zone = "ap-guangzhou-6" + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create cvm +resource "tencentcloud_instance" "example" { + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + image_id = "img-9qrfy1xt" + instance_type = "SA3.MEDIUM4" + system_disk_type = "CLOUD_HSSD" + system_disk_size = 100 + hostname = "example" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + force_delete = true + instance_charge_type = "PREPAID" + instance_charge_type_prepaid_period = 1 + instance_charge_type_prepaid_renew_flag = "NOTIFY_AND_MANUAL_RENEW" + + data_disks { + data_disk_type = "CLOUD_HSSD" + data_disk_size = 50 + encrypt = false } + + tags = { + tagKey = "tagValue" + } +} + +# renew instance +resource "tencentcloud_cvm_renew_instance" "example" { + instance_id = tencentcloud_instance.example.id renew_portable_data_disk = true + + instance_charge_prepaid { + period = 1 + renew_flag = "NOTIFY_AND_MANUAL_RENEW" + } } ``` \ No newline at end of file diff --git a/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go b/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go index 47abe75784..17d33d9b48 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go @@ -8,26 +8,77 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) +// go test -i; go test -test.run TestAccTencentCloudCvmRenewInstanceResource_basic -v func TestAccTencentCloudCvmRenewInstanceResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ - PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + PreCheck: func() { tcacctest.AccPreCheck(t) }, Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccCvmRenewInstance, - Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_cvm_renew_instance.renew_instance", "id")), + Check: resource.ComposeTestCheckFunc( + testAccCheckTencentCloudInstanceExists("tencentcloud_instance.example"), + resource.TestCheckResourceAttrSet("tencentcloud_cvm_renew_instance.example", "id"), + resource.TestCheckResourceAttrSet("tencentcloud_cvm_renew_instance.example", "renew_portable_data_disk"), + resource.TestCheckResourceAttrSet("tencentcloud_cvm_renew_instance.example", "instance_charge_prepaid.#"), + ), }, }, }) } -const testAccCvmRenewInstance = testAccTencentCloudInstanceBasicToPrepaid + ` +const testAccCvmRenewInstance = ` +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} -resource "tencentcloud_cvm_renew_instance" "renew_instance" { - instance_id = tencentcloud_instance.foo.id - instance_charge_prepaid { - period = 1 +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + availability_zone = "ap-guangzhou-6" + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create cvm +resource "tencentcloud_instance" "example" { + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + image_id = "img-9qrfy1xt" + instance_type = "SA3.MEDIUM4" + system_disk_type = "CLOUD_HSSD" + system_disk_size = 100 + hostname = "example" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + force_delete = true + instance_charge_type = "PREPAID" + instance_charge_type_prepaid_period = 1 + instance_charge_type_prepaid_renew_flag = "NOTIFY_AND_MANUAL_RENEW" + + data_disks { + data_disk_type = "CLOUD_HSSD" + data_disk_size = 50 + encrypt = false + } + + tags = { + tagKey = "tagValue" } } +# renew instance +resource "tencentcloud_cvm_renew_instance" "example" { + instance_id = tencentcloud_instance.example.id + renew_portable_data_disk = true + + instance_charge_prepaid { + period = 1 + renew_flag = "NOTIFY_AND_MANUAL_RENEW" + } +} ` diff --git a/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment.md b/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment.md index 98a6943239..3a44efdb21 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment.md +++ b/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment.md @@ -3,9 +3,60 @@ Provides a resource to create a cvm security_group_attachment Example Usage ```hcl -resource "tencentcloud_cvm_security_group_attachment" "security_group_attachment" { - security_group_id = "sg-xxxxxxx" - instance_id = "ins-xxxxxxxx" +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} + +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + availability_zone = "ap-guangzhou-6" + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create security group +resource "tencentcloud_security_group" "example" { + name = "tf-example" + description = "sg desc." + project_id = 0 + + tags = { + "example" = "test" + } +} + +# create cvm +resource "tencentcloud_instance" "example" { + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + image_id = "img-9qrfy1xt" + instance_type = "SA3.MEDIUM4" + system_disk_type = "CLOUD_HSSD" + system_disk_size = 100 + hostname = "example" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + + data_disks { + data_disk_type = "CLOUD_HSSD" + data_disk_size = 50 + encrypt = false + } + + tags = { + tagKey = "tagValue" + } +} + +# attachment security group +resource "tencentcloud_cvm_security_group_attachment" "example" { + instance_id = tencentcloud_instance.example.id + security_group_id = tencentcloud_security_group.example.id } ``` @@ -14,5 +65,5 @@ Import cvm security_group_attachment can be imported using the id, e.g. ``` -terraform import tencentcloud_cvm_security_group_attachment.security_group_attachment ${instance_id}#${security_group_id} +terraform import tencentcloud_cvm_security_group_attachment.example ins-odl0lrcy#sg-5275dorp ``` \ No newline at end of file diff --git a/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment_test.go b/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment_test.go index 724fb2a860..a24fbb6a30 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment_test.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment_test.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) +// go test -i; go test -test.run TestAccTencentCloudCvmSecurityGroupAttachmentResource_basic -v func TestAccTencentCloudCvmSecurityGroupAttachmentResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ @@ -18,10 +19,14 @@ func TestAccTencentCloudCvmSecurityGroupAttachmentResource_basic(t *testing.T) { Steps: []resource.TestStep{ { Config: testAccCvmSecurityGroupAttachment, - Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_cvm_security_group_attachment.security_group_attachment", "id")), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_cvm_security_group_attachment.example", "id"), + resource.TestCheckResourceAttrSet("tencentcloud_cvm_security_group_attachment.example", "instance_id"), + resource.TestCheckResourceAttrSet("tencentcloud_cvm_security_group_attachment.example", "security_group_id"), + ), }, { - ResourceName: "tencentcloud_cvm_security_group_attachment.security_group_attachment", + ResourceName: "tencentcloud_cvm_security_group_attachment.example", ImportState: true, ImportStateVerify: true, }, @@ -30,8 +35,48 @@ func TestAccTencentCloudCvmSecurityGroupAttachmentResource_basic(t *testing.T) { } const testAccCvmSecurityGroupAttachment = ` -resource "tencentcloud_cvm_security_group_attachment" "security_group_attachment" { - security_group_id = "sg-a0212ii1" - instance_id = "ins-cr2rfq78" +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} + +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + availability_zone = "ap-guangzhou-6" + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create cvm +resource "tencentcloud_instance" "example" { + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + image_id = "img-9qrfy1xt" + instance_type = "SA3.MEDIUM4" + system_disk_type = "CLOUD_HSSD" + system_disk_size = 100 + hostname = "example" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + + data_disks { + data_disk_type = "CLOUD_HSSD" + data_disk_size = 50 + encrypt = false + } + + tags = { + tagKey = "tagValue" + } +} + +# attachment security group +resource "tencentcloud_cvm_security_group_attachment" "example" { + instance_id = tencentcloud_instance.example.id + security_group_id = "sg-5275dorp" } ` diff --git a/tencentcloud/services/cvm/resource_tc_instance.go b/tencentcloud/services/cvm/resource_tc_instance.go index eb1bdad5f4..aae9cc3b48 100644 --- a/tencentcloud/services/cvm/resource_tc_instance.go +++ b/tencentcloud/services/cvm/resource_tc_instance.go @@ -1442,6 +1442,7 @@ func resourceTencentCloudInstanceDelete(d *schema.ResourceData, meta interface{} instanceId := d.Id() //check is force delete or not forceDelete := d.Get("force_delete").(bool) + //instanceChargeType := d.Get("instance_charge_type").(string) cvmService := CvmService{ client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), @@ -1463,6 +1464,20 @@ func resourceTencentCloudInstanceDelete(d *schema.ResourceData, meta interface{} return err } + // prepaid need delete again + //if instanceChargeType == CVM_CHARGE_TYPE_PREPAID { + // err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + // errRet := cvmService.DeleteInstance(ctx, instanceId) + // if errRet != nil { + // return tccommon.RetryError(errRet) + // } + // return nil + // }) + // if err != nil { + // return err + // } + //} + //check recycling notExist := false From d3008368e4b1197c627355ad2cb54ccdac86077b Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Fri, 31 May 2024 16:38:07 +0800 Subject: [PATCH 2/6] add --- .../services/cvm/resource_tc_cvm_renew_instance_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go b/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go index 17d33d9b48..ae2235ea12 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go @@ -8,8 +8,8 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) -// go test -i; go test -test.run TestAccTencentCloudCvmRenewInstanceResource_basic -v -func TestAccTencentCloudCvmRenewInstanceResource_basic(t *testing.T) { +// go test -i; go test -test.run TestAccTencentCloudNeedFixCvmRenewInstanceResource_basic -v +func TestAccTencentCloudNeedFixCvmRenewInstanceResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { tcacctest.AccPreCheck(t) }, Providers: tcacctest.AccProviders, From 273e2be4781b024d96d4e2bfb8e6096d2815e9a6 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Fri, 31 May 2024 16:52:28 +0800 Subject: [PATCH 3/6] add --- .../services/cvm/data_source_tc_eips.md | 38 +++++- .../services/cvm/data_source_tc_eips_test.go | 49 +++++--- .../services/cvm/data_source_tc_image.md | 29 ++++- .../services/cvm/data_source_tc_image_test.go | 6 +- .../services/cvm/data_source_tc_images.md | 45 ++++++- .../cvm/data_source_tc_images_test.go | 37 +++--- .../cvm/data_source_tc_instance_types.md | 28 +++-- .../cvm/data_source_tc_instance_types_test.go | 20 +-- .../services/cvm/data_source_tc_instances.md | 31 ++++- .../cvm/data_source_tc_instances_set.md | 13 +- .../cvm/data_source_tc_instances_set_test.go | 116 ++++++++++-------- .../cvm/data_source_tc_instances_test.go | 74 +++++++++-- .../services/cvm/data_source_tc_key_pairs.md | 9 +- .../cvm/data_source_tc_key_pairs_test.go | 48 +++++--- .../cvm/data_source_tc_placement_groups.md | 6 +- .../data_source_tc_placement_groups_test.go | 41 ++++--- .../cvm/resource_tc_cvm_renew_instance.md | 55 ++++++++- .../resource_tc_cvm_renew_instance_test.go | 65 ++++++++-- ...source_tc_cvm_security_group_attachment.md | 59 ++++++++- ...e_tc_cvm_security_group_attachment_test.go | 55 ++++++++- .../services/cvm/resource_tc_instance.go | 15 +++ 21 files changed, 642 insertions(+), 197 deletions(-) diff --git a/tencentcloud/services/cvm/data_source_tc_eips.md b/tencentcloud/services/cvm/data_source_tc_eips.md index 845c170780..3327218a58 100644 --- a/tencentcloud/services/cvm/data_source_tc_eips.md +++ b/tencentcloud/services/cvm/data_source_tc_eips.md @@ -2,8 +2,42 @@ Use this data source to query eip instances. Example Usage +Query all eip instances + +```hcl +data "tencentcloud_eips" "example" {} +``` + +Query eip instances by eip ID + ```hcl -data "tencentcloud_eips" "foo" { +data "tencentcloud_eips" "example" { eip_id = "eip-ry9h95hg" } -``` \ No newline at end of file +``` + +Query eip instances by eip name + +```hcl +data "tencentcloud_eips" "example" { + eip_name = "tf-example" +} +``` + +Query eip instances by public ip + +```hcl +data "tencentcloud_eips" "example" { + public_ip = "1.12.62.3" +} +``` + +Query eip instances by tags + +```hcl +data "tencentcloud_eips" "example" { + tags = { + "test" = "test" + } +} +``` diff --git a/tencentcloud/services/cvm/data_source_tc_eips_test.go b/tencentcloud/services/cvm/data_source_tc_eips_test.go index da3a996b56..a87f5f9c22 100644 --- a/tencentcloud/services/cvm/data_source_tc_eips_test.go +++ b/tencentcloud/services/cvm/data_source_tc_eips_test.go @@ -8,7 +8,8 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) -func TestAccTencentCloudEipsDataSource(t *testing.T) { +// go test -i; go test -test.run TestAccTencentCloudEipsDataSource_basic -v +func TestAccTencentCloudEipsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { tcacctest.AccPreCheck(t) }, @@ -18,17 +19,23 @@ func TestAccTencentCloudEipsDataSource(t *testing.T) { { Config: testAccEipsDataSource, Check: resource.ComposeTestCheckFunc( - tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eips.data_eips"), - resource.TestCheckResourceAttr("data.tencentcloud_eips.data_eips", "eip_list.#", "1"), - resource.TestCheckResourceAttrSet("data.tencentcloud_eips.data_eips", "eip_list.0.eip_id"), - resource.TestCheckResourceAttr("data.tencentcloud_eips.data_eips", "eip_list.0.eip_name", "tf-test-eip"), - resource.TestCheckResourceAttrSet("data.tencentcloud_eips.data_eips", "eip_list.0.eip_type"), - resource.TestCheckResourceAttrSet("data.tencentcloud_eips.data_eips", "eip_list.0.status"), - resource.TestCheckResourceAttrSet("data.tencentcloud_eips.data_eips", "eip_list.0.public_ip"), - resource.TestCheckResourceAttrSet("data.tencentcloud_eips.data_eips", "eip_list.0.create_time"), - - tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eips.tags"), - resource.TestCheckResourceAttr("data.tencentcloud_eips.tags", "eip_list.0.tags.test", "test"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eips.example"), + resource.TestCheckResourceAttr("data.tencentcloud_eips.example", "eip_list.#", "1"), + + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eips.example_by_id"), + resource.TestCheckResourceAttr("data.tencentcloud_eips.example_by_id", "eip_list.#", "1"), + resource.TestCheckResourceAttrSet("data.tencentcloud_eips.example_by_id", "eip_list.0.eip_id"), + resource.TestCheckResourceAttr("data.tencentcloud_eips.example_by_id", "eip_list.0.eip_name", "tf-example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_eips.example_by_id", "eip_list.0.eip_type"), + resource.TestCheckResourceAttrSet("data.tencentcloud_eips.example_by_id", "eip_list.0.status"), + resource.TestCheckResourceAttrSet("data.tencentcloud_eips.example_by_id", "eip_list.0.public_ip"), + resource.TestCheckResourceAttrSet("data.tencentcloud_eips.example_by_id", "eip_list.0.create_time"), + + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eips.example_by_name"), + resource.TestCheckResourceAttr("data.tencentcloud_eips.example_by_name", "eip_list.0.eip_name", "tf-example"), + + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eips.example_by_tags"), + resource.TestCheckResourceAttr("data.tencentcloud_eips.example_by_tags", "eip_list.0.tags.test", "test"), ), }, }, @@ -36,19 +43,25 @@ func TestAccTencentCloudEipsDataSource(t *testing.T) { } const testAccEipsDataSource = ` -resource "tencentcloud_eip" "eip" { - name = "tf-test-eip" +resource "tencentcloud_eip" "example" { + name = "tf-example" tags = { "test" = "test" } } -data "tencentcloud_eips" "data_eips" { - eip_id = tencentcloud_eip.eip.id +data "tencentcloud_eips" "example" {} + +data "tencentcloud_eips" "example_by_id" { + eip_id = tencentcloud_eip.example.id +} + +data "tencentcloud_eips" "example_by_name" { + eip_name = tencentcloud_eip.example.name } -data "tencentcloud_eips" "tags" { - tags = tencentcloud_eip.eip.tags +data "tencentcloud_eips" "example_by_tags" { + tags = tencentcloud_eip.example.tags } ` diff --git a/tencentcloud/services/cvm/data_source_tc_image.md b/tencentcloud/services/cvm/data_source_tc_image.md index 83763edad6..b620fbf9f6 100644 --- a/tencentcloud/services/cvm/data_source_tc_image.md +++ b/tencentcloud/services/cvm/data_source_tc_image.md @@ -1,18 +1,41 @@ Provides an available image for the user. -The Images data source fetch proper image, which could be one of the private images of the user and images of system resources provided by TencentCloud, as well as other public images and those available on the image market. +The Images data source fetch proper image, which could be one of the private images of the user and images of system +resources provided by TencentCloud, as well as other public images and those available on the image market. ~> **NOTE:** This data source will be deprecated, please use `tencentcloud_images` instead. Example Usage +Query image + ```hcl -data "tencentcloud_image" "my_favorate_image" { - os_name = "centos" +data "tencentcloud_image" "example" {} +``` +Query image by filter + +```hcl +data "tencentcloud_image" "example" { filter { name = "image-type" values = ["PUBLIC_IMAGE"] } } +``` + +Query image by os name + +```hcl +data "tencentcloud_image" "example" { + os_name = "centos" +} +``` + +Query image by image name regex + +```hcl +data "tencentcloud_image" "example" { + image_name_regex = "^Windows\\s.*$" +} ``` \ No newline at end of file diff --git a/tencentcloud/services/cvm/data_source_tc_image_test.go b/tencentcloud/services/cvm/data_source_tc_image_test.go index d4f554013b..7bbc4b1c1c 100644 --- a/tencentcloud/services/cvm/data_source_tc_image_test.go +++ b/tencentcloud/services/cvm/data_source_tc_image_test.go @@ -9,7 +9,8 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) -func TestAccTencentCloudDataSourceImageBase(t *testing.T) { +// go test -i; go test -test.run TestAccTencentCloudDataSourceImageBase_basic -v +func TestAccTencentCloudDataSourceImageBase_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { tcacctest.AccPreCheck(t) }, @@ -52,8 +53,7 @@ func TestAccTencentCloudDataSourceImageBase(t *testing.T) { } const testAccTencentCloudDataSourceImageBase = ` -data "tencentcloud_image" "public_image" { -} +data "tencentcloud_image" "public_image" {} ` const testAccTencentCloudDataSourceImageBaseWithFilter = ` diff --git a/tencentcloud/services/cvm/data_source_tc_images.md b/tencentcloud/services/cvm/data_source_tc_images.md index 73ab9ea4f7..df535fb465 100644 --- a/tencentcloud/services/cvm/data_source_tc_images.md +++ b/tencentcloud/services/cvm/data_source_tc_images.md @@ -2,9 +2,48 @@ Use this data source to query images. Example Usage +Query all images + +```hcl +data "tencentcloud_images" "example" {} +``` + +Query images by image ID + +```hcl +data "tencentcloud_images" "example" { + image_id = "img-9qrfy1xt" +} +``` + +Query images by os name + +```hcl +data "tencentcloud_images" "example" { + os_name = "TencentOS Server 3.2 (Final)" +} +``` + +Query images by image name regex + +```hcl +data "tencentcloud_images" "example" { + image_name_regex = "^TencentOS" +} +``` + +Query images by image type + ```hcl -data "tencentcloud_images" "foo" { +data "tencentcloud_images" "example" { image_type = ["PUBLIC_IMAGE"] - os_name = "centos 7.5" } -``` \ No newline at end of file +``` + +Query images by instance type + +```hcl +data "tencentcloud_images" "example" { + instance_type = "S1.SMALL1" +} +``` diff --git a/tencentcloud/services/cvm/data_source_tc_images_test.go b/tencentcloud/services/cvm/data_source_tc_images_test.go index c771d6cc8b..46871da0a6 100644 --- a/tencentcloud/services/cvm/data_source_tc_images_test.go +++ b/tencentcloud/services/cvm/data_source_tc_images_test.go @@ -8,7 +8,8 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) -func TestAccTencentCloudDataSourceImagesBase(t *testing.T) { +// go test -i; go test -test.run TestAccTencentCloudDataSourceImagesBase_basic -v +func TestAccTencentCloudDataSourceImagesBase_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { tcacctest.AccPreCheck(t) }, @@ -17,36 +18,36 @@ func TestAccTencentCloudDataSourceImagesBase(t *testing.T) { { Config: testAccTencentCloudDataSourceImagesBase, Check: resource.ComposeTestCheckFunc( - tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.foo"), - resource.TestCheckResourceAttrSet("data.tencentcloud_images.foo", "images.#"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_images.example", "images.#"), ), }, { Config: testAccTencentCloudDataSourceImagesBaseWithFilter, Check: resource.ComposeTestCheckFunc( - tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.foo"), - resource.TestCheckResourceAttrSet("data.tencentcloud_images.foo", "images.#"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_images.example", "images.#"), ), }, { Config: testAccTencentCloudDataSourceImagesBaseWithOsName, Check: resource.ComposeTestCheckFunc( - tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.foo"), - resource.TestCheckResourceAttrSet("data.tencentcloud_images.foo", "images.#"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_images.example", "images.#"), ), }, { Config: testAccTencentCloudDataSourceImagesBaseWithImageNameRegex, Check: resource.ComposeTestCheckFunc( - tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.foo"), - resource.TestCheckResourceAttrSet("data.tencentcloud_images.foo", "images.#"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_images.example", "images.#"), ), }, { Config: testAccTencentCloudDataSourceImagesBaseWithInstanceType, Check: resource.ComposeTestCheckFunc( - tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.foo"), - resource.TestCheckResourceAttrSet("data.tencentcloud_images.foo", "images.#"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_images.example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_images.example", "images.#"), ), }, }, @@ -54,33 +55,33 @@ func TestAccTencentCloudDataSourceImagesBase(t *testing.T) { } const testAccTencentCloudDataSourceImagesBase = ` -data "tencentcloud_images" "foo" { +data "tencentcloud_images" "example" { result_output_file = "data_source_tc_images_test.txt" } ` const testAccTencentCloudDataSourceImagesBaseWithFilter = ` -data "tencentcloud_images" "foo" { +data "tencentcloud_images" "example" { image_type = ["PRIVATE_IMAGE"] } ` const testAccTencentCloudDataSourceImagesBaseWithOsName = ` -data "tencentcloud_images" "foo" { +data "tencentcloud_images" "example" { image_type = ["PUBLIC_IMAGE"] - os_name = "CentOS 7.5" + os_name = "CentOS 7.5" } ` const testAccTencentCloudDataSourceImagesBaseWithImageNameRegex = ` -data "tencentcloud_images" "foo" { - image_type = ["PUBLIC_IMAGE"] +data "tencentcloud_images" "example" { + image_type = ["PUBLIC_IMAGE"] image_name_regex = "^CentOS\\s+7\\.5\\s+64\\w*" } ` const testAccTencentCloudDataSourceImagesBaseWithInstanceType = ` -data "tencentcloud_images" "foo" { +data "tencentcloud_images" "example" { instance_type = "S1.SMALL1" } ` diff --git a/tencentcloud/services/cvm/data_source_tc_instance_types.md b/tencentcloud/services/cvm/data_source_tc_instance_types.md index 969268d88c..dfa9e09771 100644 --- a/tencentcloud/services/cvm/data_source_tc_instance_types.md +++ b/tencentcloud/services/cvm/data_source_tc_instance_types.md @@ -3,23 +3,29 @@ Use this data source to query instances type. Example Usage ```hcl -data "tencentcloud_instance_types" "foo" { - availability_zone = "ap-guangzhou-2" - cpu_core_count = 2 - memory_size = 4 +data "tencentcloud_instance_types" "example" { + availability_zone = "ap-guangzhou-6" + cpu_core_count = 4 + memory_size = 8 } +``` + +Complete Example + +```hcl +data "tencentcloud_instance_types" "example" { + cpu_core_count = 4 + memory_size = 8 + exclude_sold_out = true -data tencentcloud_instance_types "t1c1g" { - cpu_core_count = 1 - memory_size = 1 - exclude_sold_out=true filter { - name = "instance-charge-type" - values = ["POSTPAID_BY_HOUR"] + name = "instance-family" + values = ["SA2"] } + filter { name = "zone" - values = ["ap-shanghai-2"] + values = ["ap-guangzhou-6"] } } ``` \ No newline at end of file diff --git a/tencentcloud/services/cvm/data_source_tc_instance_types_test.go b/tencentcloud/services/cvm/data_source_tc_instance_types_test.go index fd58706427..16ff0f9bcf 100644 --- a/tencentcloud/services/cvm/data_source_tc_instance_types_test.go +++ b/tencentcloud/services/cvm/data_source_tc_instance_types_test.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) +// go test -i; go test -test.run TestAccTencentCloudInstanceTypesDataSource_basic -v func TestAccTencentCloudInstanceTypesDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ @@ -17,15 +18,16 @@ func TestAccTencentCloudInstanceTypesDataSource_basic(t *testing.T) { { Config: testAccTencentCloudInstanceTypesDataSourceConfigBasic, Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("data.tencentcloud_instance_types.t4c8g", "instance_types.0.cpu_core_count", "4"), - resource.TestCheckResourceAttr("data.tencentcloud_instance_types.t4c8g", "instance_types.0.memory_size", "8"), - resource.TestCheckResourceAttr("data.tencentcloud_instance_types.t4c8g", "instance_types.0.availability_zone", "ap-guangzhou-3"), + resource.TestCheckResourceAttr("data.tencentcloud_instance_types.example", "instance_types.0.cpu_core_count", "4"), + resource.TestCheckResourceAttr("data.tencentcloud_instance_types.example", "instance_types.0.memory_size", "8"), + resource.TestCheckResourceAttr("data.tencentcloud_instance_types.example", "instance_types.0.availability_zone", "ap-guangzhou-3"), ), }, }, }) } +// go test -i; go test -test.run TestAccTencentCloudInstanceTypesDataSource_sell -v func TestAccTencentCloudInstanceTypesDataSource_sell(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ @@ -35,10 +37,10 @@ func TestAccTencentCloudInstanceTypesDataSource_sell(t *testing.T) { { Config: testAccTencentCloudInstanceTypesDataSourceConfigSell, Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("data.tencentcloud_instance_types.t4c8g", "instance_types.0.cpu_core_count", "2"), - resource.TestCheckResourceAttr("data.tencentcloud_instance_types.t4c8g", "instance_types.0.memory_size", "2"), - resource.TestCheckResourceAttr("data.tencentcloud_instance_types.t4c8g", "instance_types.0.availability_zone", "ap-guangzhou-3"), - resource.TestCheckResourceAttr("data.tencentcloud_instance_types.t4c8g", "instance_types.0.family", "SA2"), + resource.TestCheckResourceAttr("data.tencentcloud_instance_types.example", "instance_types.0.cpu_core_count", "2"), + resource.TestCheckResourceAttr("data.tencentcloud_instance_types.example", "instance_types.0.memory_size", "2"), + resource.TestCheckResourceAttr("data.tencentcloud_instance_types.example", "instance_types.0.availability_zone", "ap-guangzhou-3"), + resource.TestCheckResourceAttr("data.tencentcloud_instance_types.example", "instance_types.0.family", "SA2"), ), }, }, @@ -46,7 +48,7 @@ func TestAccTencentCloudInstanceTypesDataSource_sell(t *testing.T) { } const testAccTencentCloudInstanceTypesDataSourceConfigBasic = ` -data "tencentcloud_instance_types" "t4c8g" { +data "tencentcloud_instance_types" "example" { availability_zone = "ap-guangzhou-3" cpu_core_count = 4 memory_size = 8 @@ -54,7 +56,7 @@ data "tencentcloud_instance_types" "t4c8g" { ` const testAccTencentCloudInstanceTypesDataSourceConfigSell = ` -data "tencentcloud_instance_types" "t4c8g" { +data "tencentcloud_instance_types" "example" { cpu_core_count = 2 memory_size = 2 exclude_sold_out = true diff --git a/tencentcloud/services/cvm/data_source_tc_instances.md b/tencentcloud/services/cvm/data_source_tc_instances.md index 1003aa58e2..c5e3f62545 100644 --- a/tencentcloud/services/cvm/data_source_tc_instances.md +++ b/tencentcloud/services/cvm/data_source_tc_instances.md @@ -2,8 +2,33 @@ Use this data source to query cvm instances. Example Usage +Query all cvm instances + +```hcl +data "tencentcloud_instances" "example" {} +``` + +Query cvm instances by filters + +```hcl +data "tencentcloud_instances" "example" { + instance_id = "ins-a81rnm8c" + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + project_id = 0 + vpc_id = "vpc-l040hycv" + subnet_id = "subnet-1to7t9au" + + tags = { + tagKey = "tagValue" + } +} +``` + +Or by instance set id list + ```hcl -data "tencentcloud_instances" "foo" { - instance_id = "ins-da412f5a" +data "tencentcloud_instances" "example" { + instance_set_ids = ["ins-a81rnm8c"] } -``` \ No newline at end of file +``` diff --git a/tencentcloud/services/cvm/data_source_tc_instances_set.md b/tencentcloud/services/cvm/data_source_tc_instances_set.md index 53bdf4ee7a..bab9e9a988 100644 --- a/tencentcloud/services/cvm/data_source_tc_instances_set.md +++ b/tencentcloud/services/cvm/data_source_tc_instances_set.md @@ -3,7 +3,16 @@ Use this data source to query cvm instances in parallel. Example Usage ```hcl -data "tencentcloud_instances_set" "foo" { - vpc_id = "vpc-4owdpnwr" +data "tencentcloud_instances_set" "example" { + instance_id = "ins-a81rnm8c" + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + project_id = 0 + vpc_id = "vpc-l040hycv" + subnet_id = "subnet-1to7t9au" + + tags = { + tagKey = "tagValue" + } } ``` \ No newline at end of file diff --git a/tencentcloud/services/cvm/data_source_tc_instances_set_test.go b/tencentcloud/services/cvm/data_source_tc_instances_set_test.go index 0f959f00c5..27296bd94a 100644 --- a/tencentcloud/services/cvm/data_source_tc_instances_set_test.go +++ b/tencentcloud/services/cvm/data_source_tc_instances_set_test.go @@ -3,73 +3,87 @@ package cvm_test import ( "testing" - resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - acctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) +// go test -i; go test -test.run TestAccTencentCloudInstanceSetDataSource_Basic -v func TestAccTencentCloudInstanceSetDataSource_Basic(t *testing.T) { t.Parallel() + resource.Test(t, resource.TestCase{ - PreCheck: func() { - acctest.AccPreCheck(t) - }, - Providers: acctest.AccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: testAccInstanceSetDataSource_BasicCreate, - Check: resource.ComposeTestCheckFunc(acctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_instances_set.foo"), resource.TestCheckResourceAttr("data.tencentcloud_instances_set.foo", "instance_list.#", "1")), + Config: testAccTencentCloudInstancesSetBasic, + Check: resource.ComposeTestCheckFunc( + testAccCheckTencentCloudInstanceExists("tencentcloud_instance.example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances_set.example", "instance_list.0.instance_id"), + resource.TestCheckResourceAttr("data.tencentcloud_instances_set.example", "instance_list.0.instance_name", "tf_example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances_set.example", "instance_list.0.instance_type"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances_set.example", "instance_list.0.cpu"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances_set.example", "instance_list.0.memory"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances_set.example", "instance_list.0.availability_zone"), + resource.TestCheckResourceAttr("data.tencentcloud_instances_set.example", "instance_list.0.project_id", "0"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances_set.example", "instance_list.0.system_disk_type"), + ), }, }, }) } -const testAccInstanceSetDataSource_BasicCreate = ` - -data "tencentcloud_availability_zones" "default" { -} -data "tencentcloud_images" "testing" { - image_type = ["PUBLIC_IMAGE"] -} -data "tencentcloud_images" "default" { - image_type = ["PUBLIC_IMAGE"] - image_name_regex = "Final" -} -data "tencentcloud_instance_types" "default" { - memory_size = 2 - exclude_sold_out = true - - filter { - values = ["ap-guangzhou-7"] - name = "zone" - } - filter { - values = ["S1","S2","S3","S4","S5"] - name = "instance-family" - } - cpu_core_count = 2 -} -data "tencentcloud_instances_set" "foo" { - instance_id = tencentcloud_instance.instances_set.id -} +const testAccTencentCloudInstancesSetBasic = ` +# create vpc resource "tencentcloud_vpc" "vpc" { - name = "cvm-basic-vpc" - cidr_block = "10.0.0.0/16" + name = "vpc" + cidr_block = "10.0.0.0/16" } + +# create vpc subnet resource "tencentcloud_subnet" "subnet" { - name = "cvm-basic-subnet" - cidr_block = "10.0.0.0/16" - availability_zone = "ap-guangzhou-7" - vpc_id = tencentcloud_vpc.vpc.id + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + availability_zone = "ap-guangzhou-6" + cidr_block = "10.0.20.0/28" + is_multicast = false } -resource "tencentcloud_instance" "instances_set" { - availability_zone = "ap-guangzhou-7" - image_id = data.tencentcloud_images.default.images.0.image_id - vpc_id = tencentcloud_vpc.vpc.id - subnet_id = tencentcloud_subnet.subnet.id - instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type - system_disk_type = "CLOUD_PREMIUM" - project_id = 0 - instance_name = "tf-ci-test" + +# create cvm +resource "tencentcloud_instance" "example" { + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + image_id = "img-9qrfy1xt" + instance_type = "SA3.MEDIUM4" + system_disk_type = "CLOUD_HSSD" + system_disk_size = 100 + hostname = "example" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + + data_disks { + data_disk_type = "CLOUD_HSSD" + data_disk_size = 50 + encrypt = false + } + + tags = { + tagKey = "tagValue" + } } +data "tencentcloud_instances_set" "example" { + instance_id = tencentcloud_instance.example.id + instance_name = tencentcloud_instance.example.instance_name + availability_zone = tencentcloud_instance.example.availability_zone + project_id = tencentcloud_instance.example.project_id + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + + tags = { + tagKey = "tagValue" + } +} ` diff --git a/tencentcloud/services/cvm/data_source_tc_instances_test.go b/tencentcloud/services/cvm/data_source_tc_instances_test.go index 7318ad66f4..cdc896a045 100644 --- a/tencentcloud/services/cvm/data_source_tc_instances_test.go +++ b/tencentcloud/services/cvm/data_source_tc_instances_test.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) +// go test -i; go test -test.run TestAccTencentCloudDataSourceInstancesBase -v func TestAccTencentCloudDataSourceInstancesBase(t *testing.T) { t.Parallel() @@ -19,24 +20,71 @@ func TestAccTencentCloudDataSourceInstancesBase(t *testing.T) { { Config: testAccTencentCloudDataSourceInstancesBase, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudInstanceExists("tencentcloud_instance.default"), - resource.TestCheckResourceAttrSet("data.tencentcloud_instances.foo", "instance_list.0.instance_id"), - resource.TestCheckResourceAttr("data.tencentcloud_instances.foo", "instance_list.0.instance_name", tcacctest.DefaultInsName), - resource.TestCheckResourceAttrSet("data.tencentcloud_instances.foo", "instance_list.0.instance_type"), - resource.TestCheckResourceAttrSet("data.tencentcloud_instances.foo", "instance_list.0.cpu"), - resource.TestCheckResourceAttrSet("data.tencentcloud_instances.foo", "instance_list.0.memory"), - resource.TestCheckResourceAttrSet("data.tencentcloud_instances.foo", "instance_list.0.availability_zone"), - resource.TestCheckResourceAttr("data.tencentcloud_instances.foo", "instance_list.0.project_id", "0"), - resource.TestCheckResourceAttrSet("data.tencentcloud_instances.foo", "instance_list.0.system_disk_type"), + testAccCheckTencentCloudInstanceExists("tencentcloud_instance.example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances.example", "instance_list.0.instance_id"), + resource.TestCheckResourceAttr("data.tencentcloud_instances.example", "instance_list.0.instance_name", "tf_example"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances.example", "instance_list.0.instance_type"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances.example", "instance_list.0.cpu"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances.example", "instance_list.0.memory"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances.example", "instance_list.0.availability_zone"), + resource.TestCheckResourceAttr("data.tencentcloud_instances.example", "instance_list.0.project_id", "0"), + resource.TestCheckResourceAttrSet("data.tencentcloud_instances.example", "instance_list.0.system_disk_type"), ), }, }, }) } -const testAccTencentCloudDataSourceInstancesBase = tcacctest.InstanceCommonTestCase + ` -data "tencentcloud_instances" "foo" { - instance_id = tencentcloud_instance.default.id - instance_name = tencentcloud_instance.default.instance_name +const testAccTencentCloudDataSourceInstancesBase = ` +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} + +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + availability_zone = "ap-guangzhou-6" + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create cvm +resource "tencentcloud_instance" "example" { + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + image_id = "img-9qrfy1xt" + instance_type = "SA3.MEDIUM4" + system_disk_type = "CLOUD_HSSD" + system_disk_size = 100 + hostname = "example" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + + data_disks { + data_disk_type = "CLOUD_HSSD" + data_disk_size = 50 + encrypt = false + } + + tags = { + tagKey = "tagValue" + } +} + +data "tencentcloud_instances" "example" { + instance_id = tencentcloud_instance.example.id + instance_name = tencentcloud_instance.example.instance_name + availability_zone = tencentcloud_instance.example.availability_zone + project_id = tencentcloud_instance.example.project_id + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + + tags = { + tagKey = "tagValue" + } } ` diff --git a/tencentcloud/services/cvm/data_source_tc_key_pairs.md b/tencentcloud/services/cvm/data_source_tc_key_pairs.md index 8d80d310e0..ab22490d31 100644 --- a/tencentcloud/services/cvm/data_source_tc_key_pairs.md +++ b/tencentcloud/services/cvm/data_source_tc_key_pairs.md @@ -2,12 +2,17 @@ Use this data source to query key pairs. Example Usage +Query key pairs by key ID + ```hcl -data "tencentcloud_key_pairs" "foo" { +data "tencentcloud_key_pairs" "key_id" { key_id = "skey-ie97i3ml" } +``` -data "tencentcloud_key_pairs" "name" { +Query key pairs by key name +```hcl +data "tencentcloud_key_pairs" "key_name" { key_name = "^test$" } ``` \ No newline at end of file diff --git a/tencentcloud/services/cvm/data_source_tc_key_pairs_test.go b/tencentcloud/services/cvm/data_source_tc_key_pairs_test.go index 5a8d587aeb..7c4f111c4b 100644 --- a/tencentcloud/services/cvm/data_source_tc_key_pairs_test.go +++ b/tencentcloud/services/cvm/data_source_tc_key_pairs_test.go @@ -3,37 +3,49 @@ package cvm_test import ( "testing" - resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - acctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) -func TestAccTencentCloudKeyPairsDataSource_Basic(t *testing.T) { +// go test -i; go test -test.run TestAccTencentCloudKeyPairsDataSource -v +func TestAccTencentCloudKeyPairsDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { - acctest.AccPreCheck(t) - }, - Providers: acctest.AccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, + CheckDestroy: testAccCheckKeyPairDestroy, Steps: []resource.TestStep{ { - Config: testAccKeyPairsDataSource_BasicCreate, - Check: resource.ComposeTestCheckFunc(acctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_key_pairs.data_key"), resource.TestCheckResourceAttrSet("data.tencentcloud_key_pairs.data_key", "key_pair_list.0.public_key"), resource.TestCheckResourceAttrSet("data.tencentcloud_key_pairs.data_key", "key_pair_list.0.create_time"), resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.data_key", "key_pair_list.#", "1"), resource.TestCheckResourceAttrSet("data.tencentcloud_key_pairs.data_key", "key_pair_list.0.key_id"), resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.data_key", "key_pair_list.0.key_name", "tf_test_key"), resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.data_key", "key_pair_list.0.project_id", "0")), + Config: testAccKeyPairDataSource, + Check: resource.ComposeTestCheckFunc( + testAccCheckKeyPairExists("tencentcloud_key_pair.example"), + resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.key_id", "key_pair_list.#", "1"), + resource.TestCheckResourceAttrSet("data.tencentcloud_key_pairs.key_id", "key_pair_list.0.key_id"), + resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.key_id", "key_pair_list.0.key_name", "tf_example"), + resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.key_id", "key_pair_list.0.project_id", "0"), + resource.TestCheckResourceAttrSet("data.tencentcloud_key_pairs.key_id", "key_pair_list.0.public_key"), + resource.TestCheckResourceAttrSet("data.tencentcloud_key_pairs.key_id", "key_pair_list.0.create_time"), + resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.key_name", "key_pair_list.#", "1"), + resource.TestCheckResourceAttrSet("data.tencentcloud_key_pairs.key_name", "key_pair_list.0.key_id"), + resource.TestCheckResourceAttr("data.tencentcloud_key_pairs.key_name", "key_pair_list.0.key_name", "tf_example"), + ), }, }, }) } -const testAccKeyPairsDataSource_BasicCreate = ` +const testAccKeyPairDataSource = ` +resource "tencentcloud_key_pair" "example" { + key_name = "tf_example" + public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDjd8fTnp7Dcuj4mLaQxf9Zs/ORgUL9fQxRCNKkPgP1paTy1I513maMX126i36Lxxl3+FUB52oVbo/FgwlIfX8hyCnv8MCxqnuSDozf1CD0/wRYHcTWAtgHQHBPCC2nJtod6cVC3kB18KeV4U7zsxmwFeBIxojMOOmcOBuh7+trRw==" +} -data "tencentcloud_key_pairs" "data_key" { - key_id = tencentcloud_key_pair.key.id +data "tencentcloud_key_pairs" "key_id" { + key_id = tencentcloud_key_pair.example.id } + data "tencentcloud_key_pairs" "key_name" { - key_name = "^${tencentcloud_key_pair.key.key_name}$" -} -resource "tencentcloud_key_pair" "key" { - key_name = "tf_test_key" - public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDjd8fTnp7Dcuj4mLaQxf9Zs/ORgUL9fQxRCNKkPgP1paTy1I513maMX126i36Lxxl3+FUB52oVbo/FgwlIfX8hyCnv8MCxqnuSDozf1CD0/wRYHcTWAtgHQHBPCC2nJtod6cVC3kB18KeV4U7zsxmwFeBIxojMOOmcOBuh7+trRw==" + key_name = "^${tencentcloud_key_pair.example.key_name}$" } - ` diff --git a/tencentcloud/services/cvm/data_source_tc_placement_groups.md b/tencentcloud/services/cvm/data_source_tc_placement_groups.md index 1200193fb0..fe66e4000b 100644 --- a/tencentcloud/services/cvm/data_source_tc_placement_groups.md +++ b/tencentcloud/services/cvm/data_source_tc_placement_groups.md @@ -3,8 +3,8 @@ Use this data source to query placement groups. Example Usage ```hcl -data "tencentcloud_placement_groups" "foo" { - placement_group_id = "ps-21q9ibvr" - name = "test" +data "tencentcloud_placement_groups" "example" { + placement_group_id = "ps-bwvst92h" + name = "tf_example" } ``` \ No newline at end of file diff --git a/tencentcloud/services/cvm/data_source_tc_placement_groups_test.go b/tencentcloud/services/cvm/data_source_tc_placement_groups_test.go index 2a2895201a..e385d432f0 100644 --- a/tencentcloud/services/cvm/data_source_tc_placement_groups_test.go +++ b/tencentcloud/services/cvm/data_source_tc_placement_groups_test.go @@ -3,34 +3,41 @@ package cvm_test import ( "testing" - resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - acctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) -func TestAccTencentCloudPlacementGroupsDataSource_Basic(t *testing.T) { +// go test -i; go test -test.run TestAccTencentCloudPlacementGroupsDataSource -v +func TestAccTencentCloudPlacementGroupsDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { - acctest.AccPreCheck(t) - }, - Providers: acctest.AccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, + CheckDestroy: testAccCheckPlacementGroupDestroy, Steps: []resource.TestStep{ { - Config: testAccPlacementGroupsDataSource_BasicCreate, - Check: resource.ComposeTestCheckFunc(acctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_placement_groups.data_placement"), resource.TestCheckResourceAttrSet("data.tencentcloud_placement_groups.data_placement", "placement_group_list.0.placement_group_id"), resource.TestCheckResourceAttr("data.tencentcloud_placement_groups.data_placement", "placement_group_list.0.type", "HOST"), resource.TestCheckResourceAttr("data.tencentcloud_placement_groups.data_placement", "placement_group_list.0.name", "tf-test-placement"), resource.TestCheckResourceAttr("data.tencentcloud_placement_groups.data_placement", "placement_group_list.#", "1")), + Config: testAccPlacementGroupDataSource, + Check: resource.ComposeTestCheckFunc( + testAccCheckPlacementGroupExists("tencentcloud_placement_group.example"), + resource.TestCheckResourceAttr("data.tencentcloud_placement_groups.placement_group", "placement_group_list.#", "1"), + resource.TestCheckResourceAttrSet("data.tencentcloud_placement_groups.placement_group", "placement_group_list.0.placement_group_id"), + resource.TestCheckResourceAttr("data.tencentcloud_placement_groups.placement_group", "placement_group_list.0.name", "tf_example"), + resource.TestCheckResourceAttr("data.tencentcloud_placement_groups.placement_group", "placement_group_list.0.type", "HOST"), + ), }, }, }) } -const testAccPlacementGroupsDataSource_BasicCreate = ` - -data "tencentcloud_placement_groups" "data_placement" { - placement_group_id = tencentcloud_placement_group.placement.id -} -resource "tencentcloud_placement_group" "placement" { - name = "tf-test-placement" - type = "HOST" +const testAccPlacementGroupDataSource = ` +resource "tencentcloud_placement_group" "example" { + name = "tf_example" + type = "HOST" } +data "tencentcloud_placement_groups" "placement_group" { + name = tencentcloud_placement_group.example.name + placement_group_id = tencentcloud_placement_group.example.id +} ` diff --git a/tencentcloud/services/cvm/resource_tc_cvm_renew_instance.md b/tencentcloud/services/cvm/resource_tc_cvm_renew_instance.md index 15c6f10f12..b5173e6b06 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_renew_instance.md +++ b/tencentcloud/services/cvm/resource_tc_cvm_renew_instance.md @@ -3,12 +3,57 @@ Provides a resource to create a cvm renew_instance Example Usage ```hcl -resource "tencentcloud_cvm_renew_instance" "renew_instance" { - instance_id = "ins-f9jr4bd2" - instance_charge_prepaid { - period = 1 - renew_flag = "NOTIFY_AND_AUTO_RENEW" +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} + +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + availability_zone = "ap-guangzhou-6" + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create cvm +resource "tencentcloud_instance" "example" { + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + image_id = "img-9qrfy1xt" + instance_type = "SA3.MEDIUM4" + system_disk_type = "CLOUD_HSSD" + system_disk_size = 100 + hostname = "example" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + force_delete = true + instance_charge_type = "PREPAID" + instance_charge_type_prepaid_period = 1 + instance_charge_type_prepaid_renew_flag = "NOTIFY_AND_MANUAL_RENEW" + + data_disks { + data_disk_type = "CLOUD_HSSD" + data_disk_size = 50 + encrypt = false } + + tags = { + tagKey = "tagValue" + } +} + +# renew instance +resource "tencentcloud_cvm_renew_instance" "example" { + instance_id = tencentcloud_instance.example.id renew_portable_data_disk = true + + instance_charge_prepaid { + period = 1 + renew_flag = "NOTIFY_AND_MANUAL_RENEW" + } } ``` \ No newline at end of file diff --git a/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go b/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go index 47abe75784..17d33d9b48 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go @@ -8,26 +8,77 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) +// go test -i; go test -test.run TestAccTencentCloudCvmRenewInstanceResource_basic -v func TestAccTencentCloudCvmRenewInstanceResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ - PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + PreCheck: func() { tcacctest.AccPreCheck(t) }, Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccCvmRenewInstance, - Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_cvm_renew_instance.renew_instance", "id")), + Check: resource.ComposeTestCheckFunc( + testAccCheckTencentCloudInstanceExists("tencentcloud_instance.example"), + resource.TestCheckResourceAttrSet("tencentcloud_cvm_renew_instance.example", "id"), + resource.TestCheckResourceAttrSet("tencentcloud_cvm_renew_instance.example", "renew_portable_data_disk"), + resource.TestCheckResourceAttrSet("tencentcloud_cvm_renew_instance.example", "instance_charge_prepaid.#"), + ), }, }, }) } -const testAccCvmRenewInstance = testAccTencentCloudInstanceBasicToPrepaid + ` +const testAccCvmRenewInstance = ` +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} -resource "tencentcloud_cvm_renew_instance" "renew_instance" { - instance_id = tencentcloud_instance.foo.id - instance_charge_prepaid { - period = 1 +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + availability_zone = "ap-guangzhou-6" + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create cvm +resource "tencentcloud_instance" "example" { + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + image_id = "img-9qrfy1xt" + instance_type = "SA3.MEDIUM4" + system_disk_type = "CLOUD_HSSD" + system_disk_size = 100 + hostname = "example" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + force_delete = true + instance_charge_type = "PREPAID" + instance_charge_type_prepaid_period = 1 + instance_charge_type_prepaid_renew_flag = "NOTIFY_AND_MANUAL_RENEW" + + data_disks { + data_disk_type = "CLOUD_HSSD" + data_disk_size = 50 + encrypt = false + } + + tags = { + tagKey = "tagValue" } } +# renew instance +resource "tencentcloud_cvm_renew_instance" "example" { + instance_id = tencentcloud_instance.example.id + renew_portable_data_disk = true + + instance_charge_prepaid { + period = 1 + renew_flag = "NOTIFY_AND_MANUAL_RENEW" + } +} ` diff --git a/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment.md b/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment.md index 98a6943239..3a44efdb21 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment.md +++ b/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment.md @@ -3,9 +3,60 @@ Provides a resource to create a cvm security_group_attachment Example Usage ```hcl -resource "tencentcloud_cvm_security_group_attachment" "security_group_attachment" { - security_group_id = "sg-xxxxxxx" - instance_id = "ins-xxxxxxxx" +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} + +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + availability_zone = "ap-guangzhou-6" + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create security group +resource "tencentcloud_security_group" "example" { + name = "tf-example" + description = "sg desc." + project_id = 0 + + tags = { + "example" = "test" + } +} + +# create cvm +resource "tencentcloud_instance" "example" { + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + image_id = "img-9qrfy1xt" + instance_type = "SA3.MEDIUM4" + system_disk_type = "CLOUD_HSSD" + system_disk_size = 100 + hostname = "example" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + + data_disks { + data_disk_type = "CLOUD_HSSD" + data_disk_size = 50 + encrypt = false + } + + tags = { + tagKey = "tagValue" + } +} + +# attachment security group +resource "tencentcloud_cvm_security_group_attachment" "example" { + instance_id = tencentcloud_instance.example.id + security_group_id = tencentcloud_security_group.example.id } ``` @@ -14,5 +65,5 @@ Import cvm security_group_attachment can be imported using the id, e.g. ``` -terraform import tencentcloud_cvm_security_group_attachment.security_group_attachment ${instance_id}#${security_group_id} +terraform import tencentcloud_cvm_security_group_attachment.example ins-odl0lrcy#sg-5275dorp ``` \ No newline at end of file diff --git a/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment_test.go b/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment_test.go index 724fb2a860..a24fbb6a30 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment_test.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_security_group_attachment_test.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) +// go test -i; go test -test.run TestAccTencentCloudCvmSecurityGroupAttachmentResource_basic -v func TestAccTencentCloudCvmSecurityGroupAttachmentResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ @@ -18,10 +19,14 @@ func TestAccTencentCloudCvmSecurityGroupAttachmentResource_basic(t *testing.T) { Steps: []resource.TestStep{ { Config: testAccCvmSecurityGroupAttachment, - Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_cvm_security_group_attachment.security_group_attachment", "id")), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_cvm_security_group_attachment.example", "id"), + resource.TestCheckResourceAttrSet("tencentcloud_cvm_security_group_attachment.example", "instance_id"), + resource.TestCheckResourceAttrSet("tencentcloud_cvm_security_group_attachment.example", "security_group_id"), + ), }, { - ResourceName: "tencentcloud_cvm_security_group_attachment.security_group_attachment", + ResourceName: "tencentcloud_cvm_security_group_attachment.example", ImportState: true, ImportStateVerify: true, }, @@ -30,8 +35,48 @@ func TestAccTencentCloudCvmSecurityGroupAttachmentResource_basic(t *testing.T) { } const testAccCvmSecurityGroupAttachment = ` -resource "tencentcloud_cvm_security_group_attachment" "security_group_attachment" { - security_group_id = "sg-a0212ii1" - instance_id = "ins-cr2rfq78" +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} + +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + availability_zone = "ap-guangzhou-6" + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create cvm +resource "tencentcloud_instance" "example" { + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + image_id = "img-9qrfy1xt" + instance_type = "SA3.MEDIUM4" + system_disk_type = "CLOUD_HSSD" + system_disk_size = 100 + hostname = "example" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + + data_disks { + data_disk_type = "CLOUD_HSSD" + data_disk_size = 50 + encrypt = false + } + + tags = { + tagKey = "tagValue" + } +} + +# attachment security group +resource "tencentcloud_cvm_security_group_attachment" "example" { + instance_id = tencentcloud_instance.example.id + security_group_id = "sg-5275dorp" } ` diff --git a/tencentcloud/services/cvm/resource_tc_instance.go b/tencentcloud/services/cvm/resource_tc_instance.go index eb1bdad5f4..aae9cc3b48 100644 --- a/tencentcloud/services/cvm/resource_tc_instance.go +++ b/tencentcloud/services/cvm/resource_tc_instance.go @@ -1442,6 +1442,7 @@ func resourceTencentCloudInstanceDelete(d *schema.ResourceData, meta interface{} instanceId := d.Id() //check is force delete or not forceDelete := d.Get("force_delete").(bool) + //instanceChargeType := d.Get("instance_charge_type").(string) cvmService := CvmService{ client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), @@ -1463,6 +1464,20 @@ func resourceTencentCloudInstanceDelete(d *schema.ResourceData, meta interface{} return err } + // prepaid need delete again + //if instanceChargeType == CVM_CHARGE_TYPE_PREPAID { + // err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + // errRet := cvmService.DeleteInstance(ctx, instanceId) + // if errRet != nil { + // return tccommon.RetryError(errRet) + // } + // return nil + // }) + // if err != nil { + // return err + // } + //} + //check recycling notExist := false From 2e643967007ed4c13158581204f5f43949e25abf Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Fri, 31 May 2024 16:38:07 +0800 Subject: [PATCH 4/6] add --- .../services/cvm/resource_tc_cvm_renew_instance_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go b/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go index 17d33d9b48..ae2235ea12 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_renew_instance_test.go @@ -8,8 +8,8 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) -// go test -i; go test -test.run TestAccTencentCloudCvmRenewInstanceResource_basic -v -func TestAccTencentCloudCvmRenewInstanceResource_basic(t *testing.T) { +// go test -i; go test -test.run TestAccTencentCloudNeedFixCvmRenewInstanceResource_basic -v +func TestAccTencentCloudNeedFixCvmRenewInstanceResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { tcacctest.AccPreCheck(t) }, Providers: tcacctest.AccProviders, From bfc605854bdca13cde626a330bd1dd4c3f9199d9 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Fri, 31 May 2024 16:56:45 +0800 Subject: [PATCH 5/6] add --- website/docs/d/eips.html.markdown | 36 ++++++++++- website/docs/d/image.html.markdown | 29 ++++++++- website/docs/d/images.html.markdown | 43 +++++++++++++- website/docs/d/instance_types.html.markdown | 26 ++++---- website/docs/d/instances.html.markdown | 29 ++++++++- website/docs/d/instances_set.html.markdown | 13 +++- website/docs/d/key_pairs.html.markdown | 10 +++- website/docs/d/placement_groups.html.markdown | 6 +- .../docs/r/cvm_renew_instance.html.markdown | 53 +++++++++++++++-- ...vm_security_group_attachment.html.markdown | 59 +++++++++++++++++-- 10 files changed, 271 insertions(+), 33 deletions(-) diff --git a/website/docs/d/eips.html.markdown b/website/docs/d/eips.html.markdown index 0c41041700..a79ede63f7 100644 --- a/website/docs/d/eips.html.markdown +++ b/website/docs/d/eips.html.markdown @@ -13,12 +13,46 @@ Use this data source to query eip instances. ## Example Usage +### Query all eip instances + +```hcl +data "tencentcloud_eips" "example" {} +``` + +### Query eip instances by eip ID + ```hcl -data "tencentcloud_eips" "foo" { +data "tencentcloud_eips" "example" { eip_id = "eip-ry9h95hg" } ``` +### Query eip instances by eip name + +```hcl +data "tencentcloud_eips" "example" { + eip_name = "tf-example" +} +``` + +### Query eip instances by public ip + +```hcl +data "tencentcloud_eips" "example" { + public_ip = "1.12.62.3" +} +``` + +### Query eip instances by tags + +```hcl +data "tencentcloud_eips" "example" { + tags = { + "test" = "test" + } +} +``` + ## Argument Reference The following arguments are supported: diff --git a/website/docs/d/image.html.markdown b/website/docs/d/image.html.markdown index 6ee4a6ad7e..348edbed47 100644 --- a/website/docs/d/image.html.markdown +++ b/website/docs/d/image.html.markdown @@ -11,16 +11,23 @@ description: |- Provides an available image for the user. -The Images data source fetch proper image, which could be one of the private images of the user and images of system resources provided by TencentCloud, as well as other public images and those available on the image market. +The Images data source fetch proper image, which could be one of the private images of the user and images of system +resources provided by TencentCloud, as well as other public images and those available on the image market. ~> **NOTE:** This data source will be deprecated, please use `tencentcloud_images` instead. ## Example Usage +### Query image + ```hcl -data "tencentcloud_image" "my_favorate_image" { - os_name = "centos" +data "tencentcloud_image" "example" {} +``` + +### Query image by filter +```hcl +data "tencentcloud_image" "example" { filter { name = "image-type" values = ["PUBLIC_IMAGE"] @@ -28,6 +35,22 @@ data "tencentcloud_image" "my_favorate_image" { } ``` +### Query image by os name + +```hcl +data "tencentcloud_image" "example" { + os_name = "centos" +} +``` + +### Query image by image name regex + +```hcl +data "tencentcloud_image" "example" { + image_name_regex = "^Windows\\s.*$" +} +``` + ## Argument Reference The following arguments are supported: diff --git a/website/docs/d/images.html.markdown b/website/docs/d/images.html.markdown index c1c01b811e..66aec58dcd 100644 --- a/website/docs/d/images.html.markdown +++ b/website/docs/d/images.html.markdown @@ -13,10 +13,49 @@ Use this data source to query images. ## Example Usage +### Query all images + ```hcl -data "tencentcloud_images" "foo" { +data "tencentcloud_images" "example" {} +``` + +### Query images by image ID + +```hcl +data "tencentcloud_images" "example" { + image_id = "img-9qrfy1xt" +} +``` + +### Query images by os name + +```hcl +data "tencentcloud_images" "example" { + os_name = "TencentOS Server 3.2 (Final)" +} +``` + +### Query images by image name regex + +```hcl +data "tencentcloud_images" "example" { + image_name_regex = "^TencentOS" +} +``` + +### Query images by image type + +```hcl +data "tencentcloud_images" "example" { image_type = ["PUBLIC_IMAGE"] - os_name = "centos 7.5" +} +``` + +### Query images by instance type + +```hcl +data "tencentcloud_images" "example" { + instance_type = "S1.SMALL1" } ``` diff --git a/website/docs/d/instance_types.html.markdown b/website/docs/d/instance_types.html.markdown index 1d41be68dc..f71c7a229b 100644 --- a/website/docs/d/instance_types.html.markdown +++ b/website/docs/d/instance_types.html.markdown @@ -14,23 +14,29 @@ Use this data source to query instances type. ## Example Usage ```hcl -data "tencentcloud_instance_types" "foo" { - availability_zone = "ap-guangzhou-2" - cpu_core_count = 2 - memory_size = 4 +data "tencentcloud_instance_types" "example" { + availability_zone = "ap-guangzhou-6" + cpu_core_count = 4 + memory_size = 8 } +``` + +### Complete Example -data tencentcloud_instance_types "t1c1g" { - cpu_core_count = 1 - memory_size = 1 +```hcl +data "tencentcloud_instance_types" "example" { + cpu_core_count = 4 + memory_size = 8 exclude_sold_out = true + filter { - name = "instance-charge-type" - values = ["POSTPAID_BY_HOUR"] + name = "instance-family" + values = ["SA2"] } + filter { name = "zone" - values = ["ap-shanghai-2"] + values = ["ap-guangzhou-6"] } } ``` diff --git a/website/docs/d/instances.html.markdown b/website/docs/d/instances.html.markdown index 862799b274..3b8e497e6f 100644 --- a/website/docs/d/instances.html.markdown +++ b/website/docs/d/instances.html.markdown @@ -13,9 +13,34 @@ Use this data source to query cvm instances. ## Example Usage +### Query all cvm instances + +```hcl +data "tencentcloud_instances" "example" {} +``` + +### Query cvm instances by filters + +```hcl +data "tencentcloud_instances" "example" { + instance_id = "ins-a81rnm8c" + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + project_id = 0 + vpc_id = "vpc-l040hycv" + subnet_id = "subnet-1to7t9au" + + tags = { + tagKey = "tagValue" + } +} +``` + +### Or by instance set id list + ```hcl -data "tencentcloud_instances" "foo" { - instance_id = "ins-da412f5a" +data "tencentcloud_instances" "example" { + instance_set_ids = ["ins-a81rnm8c"] } ``` diff --git a/website/docs/d/instances_set.html.markdown b/website/docs/d/instances_set.html.markdown index 8cf2e71156..2d9d5f8151 100644 --- a/website/docs/d/instances_set.html.markdown +++ b/website/docs/d/instances_set.html.markdown @@ -14,8 +14,17 @@ Use this data source to query cvm instances in parallel. ## Example Usage ```hcl -data "tencentcloud_instances_set" "foo" { - vpc_id = "vpc-4owdpnwr" +data "tencentcloud_instances_set" "example" { + instance_id = "ins-a81rnm8c" + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + project_id = 0 + vpc_id = "vpc-l040hycv" + subnet_id = "subnet-1to7t9au" + + tags = { + tagKey = "tagValue" + } } ``` diff --git a/website/docs/d/key_pairs.html.markdown b/website/docs/d/key_pairs.html.markdown index 8bcff114ac..1f5be9db7f 100644 --- a/website/docs/d/key_pairs.html.markdown +++ b/website/docs/d/key_pairs.html.markdown @@ -13,12 +13,18 @@ Use this data source to query key pairs. ## Example Usage +### Query key pairs by key ID + ```hcl -data "tencentcloud_key_pairs" "foo" { +data "tencentcloud_key_pairs" "key_id" { key_id = "skey-ie97i3ml" } +``` -data "tencentcloud_key_pairs" "name" { +### Query key pairs by key name + +```hcl +data "tencentcloud_key_pairs" "key_name" { key_name = "^test$" } ``` diff --git a/website/docs/d/placement_groups.html.markdown b/website/docs/d/placement_groups.html.markdown index af892603ce..b58e27760a 100644 --- a/website/docs/d/placement_groups.html.markdown +++ b/website/docs/d/placement_groups.html.markdown @@ -14,9 +14,9 @@ Use this data source to query placement groups. ## Example Usage ```hcl -data "tencentcloud_placement_groups" "foo" { - placement_group_id = "ps-21q9ibvr" - name = "test" +data "tencentcloud_placement_groups" "example" { + placement_group_id = "ps-bwvst92h" + name = "tf_example" } ``` diff --git a/website/docs/r/cvm_renew_instance.html.markdown b/website/docs/r/cvm_renew_instance.html.markdown index 779e955bb0..f9f5107600 100644 --- a/website/docs/r/cvm_renew_instance.html.markdown +++ b/website/docs/r/cvm_renew_instance.html.markdown @@ -14,13 +14,58 @@ Provides a resource to create a cvm renew_instance ## Example Usage ```hcl -resource "tencentcloud_cvm_renew_instance" "renew_instance" { - instance_id = "ins-f9jr4bd2" +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} + +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + availability_zone = "ap-guangzhou-6" + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create cvm +resource "tencentcloud_instance" "example" { + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + image_id = "img-9qrfy1xt" + instance_type = "SA3.MEDIUM4" + system_disk_type = "CLOUD_HSSD" + system_disk_size = 100 + hostname = "example" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + force_delete = true + instance_charge_type = "PREPAID" + instance_charge_type_prepaid_period = 1 + instance_charge_type_prepaid_renew_flag = "NOTIFY_AND_MANUAL_RENEW" + + data_disks { + data_disk_type = "CLOUD_HSSD" + data_disk_size = 50 + encrypt = false + } + + tags = { + tagKey = "tagValue" + } +} + +# renew instance +resource "tencentcloud_cvm_renew_instance" "example" { + instance_id = tencentcloud_instance.example.id + renew_portable_data_disk = true + instance_charge_prepaid { period = 1 - renew_flag = "NOTIFY_AND_AUTO_RENEW" + renew_flag = "NOTIFY_AND_MANUAL_RENEW" } - renew_portable_data_disk = true } ``` diff --git a/website/docs/r/cvm_security_group_attachment.html.markdown b/website/docs/r/cvm_security_group_attachment.html.markdown index ad0325c1a7..1b411ac3d4 100644 --- a/website/docs/r/cvm_security_group_attachment.html.markdown +++ b/website/docs/r/cvm_security_group_attachment.html.markdown @@ -14,9 +14,60 @@ Provides a resource to create a cvm security_group_attachment ## Example Usage ```hcl -resource "tencentcloud_cvm_security_group_attachment" "security_group_attachment" { - security_group_id = "sg-xxxxxxx" - instance_id = "ins-xxxxxxxx" +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} + +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + availability_zone = "ap-guangzhou-6" + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create security group +resource "tencentcloud_security_group" "example" { + name = "tf-example" + description = "sg desc." + project_id = 0 + + tags = { + "example" = "test" + } +} + +# create cvm +resource "tencentcloud_instance" "example" { + instance_name = "tf_example" + availability_zone = "ap-guangzhou-6" + image_id = "img-9qrfy1xt" + instance_type = "SA3.MEDIUM4" + system_disk_type = "CLOUD_HSSD" + system_disk_size = 100 + hostname = "example" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + + data_disks { + data_disk_type = "CLOUD_HSSD" + data_disk_size = 50 + encrypt = false + } + + tags = { + tagKey = "tagValue" + } +} + +# attachment security group +resource "tencentcloud_cvm_security_group_attachment" "example" { + instance_id = tencentcloud_instance.example.id + security_group_id = tencentcloud_security_group.example.id } ``` @@ -40,6 +91,6 @@ In addition to all arguments above, the following attributes are exported: cvm security_group_attachment can be imported using the id, e.g. ``` -terraform import tencentcloud_cvm_security_group_attachment.security_group_attachment ${instance_id}#${security_group_id} +terraform import tencentcloud_cvm_security_group_attachment.example ins-odl0lrcy#sg-5275dorp ``` From 58551f88bd6cdf779855fc11f92d97965cc38824 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Fri, 31 May 2024 22:25:45 +0800 Subject: [PATCH 6/6] add --- tencentcloud/services/cvm/data_source_tc_eips_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tencentcloud/services/cvm/data_source_tc_eips_test.go b/tencentcloud/services/cvm/data_source_tc_eips_test.go index a87f5f9c22..fff7788d9d 100644 --- a/tencentcloud/services/cvm/data_source_tc_eips_test.go +++ b/tencentcloud/services/cvm/data_source_tc_eips_test.go @@ -20,7 +20,7 @@ func TestAccTencentCloudEipsDataSource_basic(t *testing.T) { Config: testAccEipsDataSource, Check: resource.ComposeTestCheckFunc( tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eips.example"), - resource.TestCheckResourceAttr("data.tencentcloud_eips.example", "eip_list.#", "1"), + resource.TestCheckResourceAttr("data.tencentcloud_eips.example", "eip_list.#", "0"), tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eips.example_by_id"), resource.TestCheckResourceAttr("data.tencentcloud_eips.example_by_id", "eip_list.#", "1"),