diff --git a/tencentcloud/acctest/basic.go b/tencentcloud/acctest/basic.go index ab8f6d6472..ae4a255390 100644 --- a/tencentcloud/acctest/basic.go +++ b/tencentcloud/acctest/basic.go @@ -137,7 +137,7 @@ variable "sg_id" { const ( DefaultCvmId = "ins-8oqqya08" DefaultDiskId = "disk-5jjrs2lm" - DefaultSnapId = "snap-8f2updnb" + DefaultSnapId = "snap-gem0ivcj" ) const DefaultCvmImageVariable = ` diff --git a/tencentcloud/services/cvm/data_source_tc_instances_set_test.go b/tencentcloud/services/cvm/data_source_tc_instances_set_test.go new file mode 100644 index 0000000000..8041c541f1 --- /dev/null +++ b/tencentcloud/services/cvm/data_source_tc_instances_set_test.go @@ -0,0 +1,76 @@ +package cvm_test + +import ( + "testing" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" +) + +func TestAccTencentCloudInstanceSetDataSource_Basic(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccTencentCloudInstancesSetBasic, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("data.tencentcloud_instances_set.foo", "instance_list.#", "1"), + ), + }, + }, + }) +} + +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 +} +resource "tencentcloud_vpc" "vpc" { + name = "cvm-basic-vpc" + cidr_block = "10.0.0.0/16" +} +resource "tencentcloud_subnet" "subnet" { + availability_zone = "ap-guangzhou-7" + vpc_id = tencentcloud_vpc.vpc.id + name = "cvm-basic-subnet" + cidr_block = "10.0.0.0/16" +} +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 + 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 "tencentcloud_instances_set" "foo" { + instance_id = tencentcloud_instance.instances_set.id +} +` diff --git a/tencentcloud/services/cvm/resource_tc_image_test.go b/tencentcloud/services/cvm/resource_tc_image_test.go index 878919bbe2..0925369852 100644 --- a/tencentcloud/services/cvm/resource_tc_image_test.go +++ b/tencentcloud/services/cvm/resource_tc_image_test.go @@ -21,7 +21,7 @@ const ( func TestAccTencentCloudImageResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + PreCheck: func() { tcacctest.AccPreCheck(t) }, Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckImageDestroy, Steps: []resource.TestStep{ @@ -57,7 +57,7 @@ func TestAccTencentCloudImageResource(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckImageExists(ImageInstance), resource.TestCheckResourceAttr(ImageInstance, "image_name", "image-instance-keep"), - resource.TestCheckResourceAttr(ImageInstance, "instance_id", tcacctest.DefaultCvmId), + resource.TestCheckResourceAttrSet(ImageInstance, "instance_id"), resource.TestCheckResourceAttr(ImageInstance, "data_disk_ids.#", "1"), resource.TestCheckResourceAttr(ImageInstance, "image_description", "create image with instance"), ), @@ -66,8 +66,6 @@ func TestAccTencentCloudImageResource(t *testing.T) { Config: testAccImageWithInstanceUpdate, Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr(ImageInstance, "image_name", "image-instance-update-keep"), - resource.TestCheckResourceAttr(ImageInstance, "instance_id", tcacctest.DefaultCvmId), - resource.TestCheckResourceAttr(ImageInstance, "data_disk_ids.#", "1"), resource.TestCheckResourceAttr(ImageInstance, "image_description", "update image with instance"), ), }, @@ -151,18 +149,117 @@ const ( }` testAccImageWithInstance = tcacctest.DefaultCvmImageVariable + ` + + 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 = ["S4","SA2"] + } + filter { + values = ["ap-guangzhou-7"] + name = "zone" + } + cpu_core_count = 2 + memory_size = 2 + exclude_sold_out = true + } + resource "tencentcloud_vpc" "vpc" { + name = "image-vpc" + cidr_block = "10.0.0.0/16" + } + resource "tencentcloud_subnet" "subnet" { + vpc_id = tencentcloud_vpc.vpc.id + name = "image-subnet" + cidr_block = "10.0.0.0/16" + availability_zone = "ap-guangzhou-7" + } + resource "tencentcloud_instance" "cvm_image" { + subnet_id = tencentcloud_subnet.subnet.id + system_disk_type = "CLOUD_PREMIUM" + project_id = 0 + instance_name = "cvm-image" + availability_zone = "ap-guangzhou-7" + image_id = data.tencentcloud_images.default.images.0.image_id + instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type + vpc_id = tencentcloud_vpc.vpc.id + data_disks { + delete_with_instance = true + data_disk_type = "CLOUD_PREMIUM" + data_disk_size = 100 + } + } + resource "tencentcloud_image" "image_instance" { image_name = "image-instance-keep" - instance_id = var.cvm_id - data_disk_ids = [var.disk_id] + instance_id = tencentcloud_instance.cvm_image.id + data_disk_ids = [tencentcloud_instance.cvm_image.data_disks.0.data_disk_id] image_description = "create image with instance" }` testAccImageWithInstanceUpdate = tcacctest.DefaultCvmImageVariable + ` + 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 = ["S4","SA2"] + } + filter { + values = ["ap-guangzhou-7"] + name = "zone" + } + cpu_core_count = 2 + memory_size = 2 + exclude_sold_out = true + } + resource "tencentcloud_vpc" "vpc" { + name = "image-vpc" + cidr_block = "10.0.0.0/16" + } + resource "tencentcloud_subnet" "subnet" { + vpc_id = tencentcloud_vpc.vpc.id + name = "image-subnet" + cidr_block = "10.0.0.0/16" + availability_zone = "ap-guangzhou-7" + } + resource "tencentcloud_instance" "cvm_image" { + subnet_id = tencentcloud_subnet.subnet.id + system_disk_type = "CLOUD_PREMIUM" + project_id = 0 + instance_name = "cvm-image" + availability_zone = "ap-guangzhou-7" + image_id = data.tencentcloud_images.default.images.0.image_id + instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type + vpc_id = tencentcloud_vpc.vpc.id + data_disks { + delete_with_instance = true + data_disk_type = "CLOUD_PREMIUM" + data_disk_size = 100 + } + } + resource "tencentcloud_image" "image_instance" { image_name = "image-instance-update-keep" - instance_id = var.cvm_id - data_disk_ids = [var.disk_id] + instance_id = tencentcloud_instance.cvm_image.id + data_disk_ids = [tencentcloud_instance.cvm_image.data_disks.0.data_disk_id] image_description = "update image with instance" }` ) diff --git a/tencentcloud/services/cvm/resource_tc_instance_set_test.go b/tencentcloud/services/cvm/resource_tc_instance_set_test.go new file mode 100644 index 0000000000..2407c6dc96 --- /dev/null +++ b/tencentcloud/services/cvm/resource_tc_instance_set_test.go @@ -0,0 +1,68 @@ +package cvm_test + +import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" +) + +func TestAccTencentCloudNeedFixInstanceSetResource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccInstanceSetBasic, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("tencentcloud_instance_set.foo", "instance_ids.#", "2"), + ), + }, + }, + }) +} + +const testAccInstanceSetBasic = ` +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 +} +resource "tencentcloud_instance_set" "foo" { + timeouts { + create = "10m" + read = "10m" + delete = "10m" + } + + instance_count = 2 + instance_name = "tf-ci-test" + availability_zone = "ap-guangzhou-7" + image_id = data.tencentcloud_images.default.images.0.image_id + instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type + system_disk_type = "CLOUD_PREMIUM" + system_disk_size = 50 + hostname = "user" + project_id = 0 +} +`