From c0271abb7862b2bd45835d7313afe82464f84cbb Mon Sep 17 00:00:00 2001 From: mikatong Date: Tue, 18 Feb 2025 18:47:04 +0800 Subject: [PATCH 1/4] update emr serverless hbase --- tencentcloud/provider.go | 1 + tencentcloud/provider.md | 1 + .../data_source_tc_lite_hbase_instances.go | 3 +- ...ta_source_tc_serverless_hbase_instances.go | 378 ++++++++++++++++++ ...ta_source_tc_serverless_hbase_instances.md | 9 + ...urce_tc_serverless_hbase_instances_test.go | 54 +++ .../resource_tc_serverless_hbase_instance.go | 5 + .../serverless_hbase_instances.html.markdown | 71 ++++ website/tencentcloud.erb | 3 + 9 files changed, 524 insertions(+), 1 deletion(-) create mode 100644 tencentcloud/services/emr/data_source_tc_serverless_hbase_instances.go create mode 100644 tencentcloud/services/emr/data_source_tc_serverless_hbase_instances.md create mode 100644 tencentcloud/services/emr/data_source_tc_serverless_hbase_instances_test.go create mode 100644 website/docs/d/serverless_hbase_instances.html.markdown diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go index c178be53c2..5704ecbe36 100644 --- a/tencentcloud/provider.go +++ b/tencentcloud/provider.go @@ -394,6 +394,7 @@ func Provider() *schema.Provider { "tencentcloud_emr_nodes": emr.DataSourceTencentCloudEmrNodes(), "tencentcloud_emr_cvm_quota": emr.DataSourceTencentCloudEmrCvmQuota(), "tencentcloud_emr_auto_scale_records": emr.DataSourceTencentCloudEmrAutoScaleRecords(), + "tencentcloud_serverless_hbase_instances": emr.DataSourceTencentCloudServerlessHbaseInstances(), "tencentcloud_availability_zones": common.DataSourceTencentCloudAvailabilityZones(), "tencentcloud_availability_zones_by_product": common.DataSourceTencentCloudAvailabilityZonesByProduct(), "tencentcloud_projects": project.DataSourceTencentCloudProjects(), diff --git a/tencentcloud/provider.md b/tencentcloud/provider.md index 5956148e4e..d623e8e525 100644 --- a/tencentcloud/provider.md +++ b/tencentcloud/provider.md @@ -1329,6 +1329,7 @@ MapReduce(EMR) tencentcloud_emr_nodes tencentcloud_emr_cvm_quota tencentcloud_lite_hbase_instances + tencentcloud_serverless_hbase_instances Resource tencentcloud_emr_cluster diff --git a/tencentcloud/services/emr/data_source_tc_lite_hbase_instances.go b/tencentcloud/services/emr/data_source_tc_lite_hbase_instances.go index 07670b11a8..0a5c8ac0e3 100644 --- a/tencentcloud/services/emr/data_source_tc_lite_hbase_instances.go +++ b/tencentcloud/services/emr/data_source_tc_lite_hbase_instances.go @@ -12,7 +12,8 @@ import ( func DataSourceTencentCloudLiteHbaseInstances() *schema.Resource { return &schema.Resource{ - Read: dataSourceTencentCloudLiteHbaseInstancesRead, + DeprecationMessage: "This data source will been deprecated in Terraform TencentCloud provider later version. Please use `tencentcloud_serverless_hbase_instances` instead.", + Read: dataSourceTencentCloudLiteHbaseInstancesRead, Schema: map[string]*schema.Schema{ "display_strategy": { Type: schema.TypeString, diff --git a/tencentcloud/services/emr/data_source_tc_serverless_hbase_instances.go b/tencentcloud/services/emr/data_source_tc_serverless_hbase_instances.go new file mode 100644 index 0000000000..c68eda5587 --- /dev/null +++ b/tencentcloud/services/emr/data_source_tc_serverless_hbase_instances.go @@ -0,0 +1,378 @@ +package emr + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + emr "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr/v20190103" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func DataSourceTencentCloudServerlessHbaseInstances() *schema.Resource { + return &schema.Resource{ + Read: dataSourceTencentCloudServerlessHbaseRead, + Schema: map[string]*schema.Schema{ + "display_strategy": { + Type: schema.TypeString, + Required: true, + Description: "Cluster filtering policy. Value range:\n" + + " * clusterList: Query the list of clusters except the destroyed cluster;\n" + + " * monitorManage: Queries the list of clusters except those destroyed, being created, and failed to create.", + }, + + "order_field": { + Type: schema.TypeString, + Optional: true, + Description: "Sorting field. Value range:\n" + + " * clusterId: Sorting by instance ID;\n" + + " * addTime: sorted by instance creation time;\n" + + " * status: sorted by the status code of the instance.", + }, + + "asc": { + Type: schema.TypeInt, + Optional: true, + Description: "Sort by OrderField in ascending or descending order. Value range:\n" + + " * 0: indicates the descending order;\n" + + " * 1: indicates the ascending order;\n" + + " The default value is 0.", + }, + + "filters": { + Type: schema.TypeList, + Optional: true, + Description: "Custom query.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Required: true, + Description: "Field name.", + }, + "values": { + Type: schema.TypeSet, + Required: true, + Description: "Filter field value.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + }, + }, + }, + + "instance_list": { + Type: schema.TypeList, + Computed: true, + Description: "Cluster instance list.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "cluster_id": { + Type: schema.TypeString, + Computed: true, + Description: "Cluster Instance String ID.", + }, + "id": { + Type: schema.TypeInt, + Computed: true, + Description: "Cluster Instance Digital ID.", + }, + "status_desc": { + Type: schema.TypeString, + Computed: true, + Description: "State description.", + }, + "cluster_name": { + Type: schema.TypeString, + Computed: true, + Description: "Cluster Instance name.", + }, + "region_id": { + Type: schema.TypeInt, + Computed: true, + Description: "Region ID.", + }, + "zone_id": { + Type: schema.TypeInt, + Computed: true, + Description: "Primary Availability Zone ID.", + }, + "zone": { + Type: schema.TypeString, + Computed: true, + Description: "Primary Availability Zone Name.", + }, + "app_id": { + Type: schema.TypeInt, + Computed: true, + Description: "User APP ID.", + }, + "vpc_id": { + Type: schema.TypeInt, + Computed: true, + Description: "Primary Availability Vpc ID.", + }, + "subnet_id": { + Type: schema.TypeInt, + Computed: true, + Description: "Primary Availability Subnet ID.", + }, + "status": { + Type: schema.TypeInt, + Computed: true, + Description: "Status code, please refer to the StatusDesc.", + }, + "add_time": { + Type: schema.TypeString, + Computed: true, + Description: "Creation time.", + }, + "pay_mode": { + Type: schema.TypeInt, + Computed: true, + Description: "Cluster charging type. 0 means charging by volume, 1 means annual and monthly.", + }, + "zone_settings": { + Type: schema.TypeList, + Computed: true, + Description: "Detailed configuration of the instance availability zone, including the availability zone name, VPC information, and the total number of nodes, where the total number of nodes must be greater than or equal to 3 and less than or equal to 50.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "zone": { + Type: schema.TypeString, + Computed: true, + Description: "The availability zone to which the instance belongs, such as ap-guangzhou-1.", + }, + "vpc_settings": { + Type: schema.TypeList, + Computed: true, + Description: "Private network related information configuration. This parameter can be used to specify the ID of the private network, subnet ID, and other information.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "vpc_id": { + Type: schema.TypeString, + Computed: true, + Description: "VPC ID.", + }, + "subnet_id": { + Type: schema.TypeString, + Computed: true, + Description: "Subnet ID.", + }, + }, + }, + }, + "node_num": { + Type: schema.TypeInt, + Computed: true, + Description: "Number of nodes.", + }, + }, + }, + }, + "tags": { + Type: schema.TypeList, + Computed: true, + Description: "List of tags.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "tag_key": { + Type: schema.TypeString, + Optional: true, + Description: "Tag key.", + }, + "tag_value": { + Type: schema.TypeString, + Optional: true, + Description: "Tag value.", + }, + }, + }, + }, + }, + }, + }, + + "result_output_file": { + Type: schema.TypeString, + Optional: true, + Description: "Used to save results.", + }, + }, + } +} + +func dataSourceTencentCloudServerlessHbaseRead(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("data_source.tencentcloud_serverless_hbase_instances.read")() + defer tccommon.InconsistentCheck(d, meta)() + + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + + service := EMRService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + + paramMap := make(map[string]interface{}) + if v, ok := d.GetOk("display_strategy"); ok { + paramMap["DisplayStrategy"] = helper.String(v.(string)) + } + + if v, ok := d.GetOk("order_field"); ok { + paramMap["OrderField"] = helper.String(v.(string)) + } + + if v, ok := d.GetOkExists("asc"); ok { + paramMap["Asc"] = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("filters"); ok { + filtersSet := v.([]interface{}) + tmpSet := make([]*emr.Filters, 0, len(filtersSet)) + for _, item := range filtersSet { + filtersMap := item.(map[string]interface{}) + filters := emr.Filters{} + if v, ok := filtersMap["name"]; ok { + filters.Name = helper.String(v.(string)) + } + if v, ok := filtersMap["values"]; ok { + valuesSet := v.(*schema.Set).List() + for i := range valuesSet { + values := valuesSet[i].(string) + filters.Values = append(filters.Values, helper.String(values)) + } + } + tmpSet = append(tmpSet, &filters) + } + paramMap["Filters"] = tmpSet + } + + instances, err := service.DescribeLiteHbaseInstancesByFilter(ctx, paramMap) + if err != nil { + return err + } + ids := make([]string, 0, len(instances)) + instanceList := make([]map[string]interface{}, 0, len(instances)) + if len(instances) > 0 { + for _, instance := range instances { + instanceMap := map[string]interface{}{} + + if instance.ClusterId != nil { + instanceMap["cluster_id"] = instance.ClusterId + } + + if instance.Id != nil { + instanceMap["id"] = instance.Id + ids = append(ids, (string)(*instance.Id)) + } + + if instance.StatusDesc != nil { + instanceMap["status_desc"] = instance.StatusDesc + } + + if instance.ClusterName != nil { + instanceMap["cluster_name"] = instance.ClusterName + } + + if instance.RegionId != nil { + instanceMap["region_id"] = instance.RegionId + } + + if instance.ZoneId != nil { + instanceMap["zone_id"] = instance.ZoneId + } + + if instance.Zone != nil { + instanceMap["zone"] = instance.Zone + } + + if instance.AppId != nil { + instanceMap["app_id"] = instance.AppId + } + + if instance.VpcId != nil { + instanceMap["vpc_id"] = instance.VpcId + } + + if instance.SubnetId != nil { + instanceMap["subnet_id"] = instance.SubnetId + } + + if instance.Status != nil { + instanceMap["status"] = instance.Status + } + + if instance.AddTime != nil { + instanceMap["add_time"] = instance.AddTime + } + + if instance.PayMode != nil { + instanceMap["pay_mode"] = instance.PayMode + } + + zoneSettingsList := make([]map[string]interface{}, 0, len(instance.ZoneSettings)) + if instance.ZoneSettings != nil { + for _, zoneSettings := range instance.ZoneSettings { + zoneSettingsMap := map[string]interface{}{} + + if zoneSettings.Zone != nil { + zoneSettingsMap["zone"] = zoneSettings.Zone + } + + vPCSettingsMap := map[string]interface{}{} + + if zoneSettings.VPCSettings != nil { + if zoneSettings.VPCSettings.VpcId != nil { + vPCSettingsMap["vpc_id"] = zoneSettings.VPCSettings.VpcId + } + + if zoneSettings.VPCSettings.SubnetId != nil { + vPCSettingsMap["subnet_id"] = zoneSettings.VPCSettings.SubnetId + } + + zoneSettingsMap["vpc_settings"] = []interface{}{vPCSettingsMap} + } + + if zoneSettings.NodeNum != nil { + zoneSettingsMap["node_num"] = zoneSettings.NodeNum + } + + zoneSettingsList = append(zoneSettingsList, zoneSettingsMap) + } + + instanceMap["zone_settings"] = zoneSettingsList + } + tagsList := make([]map[string]interface{}, 0, len(instance.Tags)) + if instance.Tags != nil { + for _, tags := range instance.Tags { + tagsMap := map[string]interface{}{} + + if tags.TagKey != nil { + tagsMap["tag_key"] = tags.TagKey + } + + if tags.TagValue != nil { + tagsMap["tag_value"] = tags.TagValue + } + + tagsList = append(tagsList, tagsMap) + } + + instanceMap["tags"] = tagsList + } + instanceList = append(instanceList, instanceMap) + } + } + + d.SetId(helper.DataResourceIdsHash(ids)) + _ = d.Set("instance_list", instanceList) + + output, ok := d.GetOk("result_output_file") + if ok && output.(string) != "" { + if e := tccommon.WriteToFile(output.(string), instanceList); e != nil { + return e + } + } + + return nil +} diff --git a/tencentcloud/services/emr/data_source_tc_serverless_hbase_instances.md b/tencentcloud/services/emr/data_source_tc_serverless_hbase_instances.md new file mode 100644 index 0000000000..19f2931f44 --- /dev/null +++ b/tencentcloud/services/emr/data_source_tc_serverless_hbase_instances.md @@ -0,0 +1,9 @@ +Use this data source to query detailed information of emr serverless_hbase_instances + +Example Usage + +```hcl +data "tencentcloud_serverless_hbase_instances" "serverless_hbase_instances" { + display_strategy = "clusterList" +} +``` diff --git a/tencentcloud/services/emr/data_source_tc_serverless_hbase_instances_test.go b/tencentcloud/services/emr/data_source_tc_serverless_hbase_instances_test.go new file mode 100644 index 0000000000..4f283fb917 --- /dev/null +++ b/tencentcloud/services/emr/data_source_tc_serverless_hbase_instances_test.go @@ -0,0 +1,54 @@ +package emr_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" +) + +func TestAccTencentCloudServerlessHbaseInstancesDataSource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { + tcacctest.AccPreCheck(t) + }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccServerlessHbaseInstancesDataSource, + Check: resource.ComposeTestCheckFunc( + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_serverless_hbase_instances.serverless_hbase_instances"), + resource.TestCheckResourceAttr("data.tencentcloud_serverless_hbase_instances.serverless_hbase_instances", "instance_list.#", "1"), + ), + }, + }, + }) +} + +const testAccServerlessHbaseInstancesDataSource = ` +resource "tencentcloud_serverless_hbase_instance" "serverless_hbase_instance" { + instance_name = "tf-test-datasource" + pay_mode = 0 + disk_type = "CLOUD_HSSD" + disk_size = 100 + node_type = "4C16G" + zone_settings { + zone = "ap-shanghai-2" + vpc_settings { + vpc_id = "vpc-muytmxhk" + subnet_id = "subnet-9ye3xm5v" + } + node_num = 3 + } +} + +data "tencentcloud_serverless_hbase_instances" "serverless_hbase_instances" { + display_strategy = "clusterList" + filters { + name = "ClusterId" + values = [tencentcloud_serverless_hbase_instance.serverless_hbase_instance.id] + } +} +` diff --git a/tencentcloud/services/emr/resource_tc_serverless_hbase_instance.go b/tencentcloud/services/emr/resource_tc_serverless_hbase_instance.go index 62b2879248..a94f5eb464 100644 --- a/tencentcloud/services/emr/resource_tc_serverless_hbase_instance.go +++ b/tencentcloud/services/emr/resource_tc_serverless_hbase_instance.go @@ -249,6 +249,8 @@ func resourceTencentCloudServerlessHbaseInstanceCreate(d *schema.ResourceData, m instanceId := *response.Response.InstanceId d.SetId(instanceId) + time.Sleep(10 * time.Second) + emrService := EMRService{ client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } @@ -431,6 +433,9 @@ func resourceTencentCloudServerlessHbaseInstanceUpdate(d *schema.ResourceData, m log.Printf("[CRITAL]%s update serverless hbase instance failed, reason:%+v", logId, err) return err } + + time.Sleep(10 * time.Second) + emrService := EMRService{ client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } diff --git a/website/docs/d/serverless_hbase_instances.html.markdown b/website/docs/d/serverless_hbase_instances.html.markdown new file mode 100644 index 0000000000..9731d37c15 --- /dev/null +++ b/website/docs/d/serverless_hbase_instances.html.markdown @@ -0,0 +1,71 @@ +--- +subcategory: "MapReduce(EMR)" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_serverless_hbase_instances" +sidebar_current: "docs-tencentcloud-datasource-serverless_hbase_instances" +description: |- + Use this data source to query detailed information of emr serverless_hbase_instances +--- + +# tencentcloud_serverless_hbase_instances + +Use this data source to query detailed information of emr serverless_hbase_instances + +## Example Usage + +```hcl +data "tencentcloud_serverless_hbase_instances" "serverless_hbase_instances" { + display_strategy = "clusterList" +} +``` + +## Argument Reference + +The following arguments are supported: + +* `display_strategy` - (Required, String) Cluster filtering policy. Value range: + * clusterList: Query the list of clusters except the destroyed cluster; + * monitorManage: Queries the list of clusters except those destroyed, being created, and failed to create. +* `asc` - (Optional, Int) Sort by OrderField in ascending or descending order. Value range: + * 0: indicates the descending order; + * 1: indicates the ascending order; + The default value is 0. +* `filters` - (Optional, List) Custom query. +* `order_field` - (Optional, String) Sorting field. Value range: + * clusterId: Sorting by instance ID; + * addTime: sorted by instance creation time; + * status: sorted by the status code of the instance. +* `result_output_file` - (Optional, String) Used to save results. + +The `filters` object supports the following: + +* `name` - (Required, String) Field name. +* `values` - (Required, Set) Filter field value. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `instance_list` - Cluster instance list. + * `add_time` - Creation time. + * `app_id` - User APP ID. + * `cluster_id` - Cluster Instance String ID. + * `cluster_name` - Cluster Instance name. + * `id` - Cluster Instance Digital ID. + * `pay_mode` - Cluster charging type. 0 means charging by volume, 1 means annual and monthly. + * `region_id` - Region ID. + * `status_desc` - State description. + * `status` - Status code, please refer to the StatusDesc. + * `subnet_id` - Primary Availability Subnet ID. + * `tags` - List of tags. + * `vpc_id` - Primary Availability Vpc ID. + * `zone_id` - Primary Availability Zone ID. + * `zone_settings` - Detailed configuration of the instance availability zone, including the availability zone name, VPC information, and the total number of nodes, where the total number of nodes must be greater than or equal to 3 and less than or equal to 50. + * `node_num` - Number of nodes. + * `vpc_settings` - Private network related information configuration. This parameter can be used to specify the ID of the private network, subnet ID, and other information. + * `subnet_id` - Subnet ID. + * `vpc_id` - VPC ID. + * `zone` - The availability zone to which the instance belongs, such as ap-guangzhou-1. + * `zone` - Primary Availability Zone Name. + + diff --git a/website/tencentcloud.erb b/website/tencentcloud.erb index 3ff6bbe0f9..e8e38ea435 100644 --- a/website/tencentcloud.erb +++ b/website/tencentcloud.erb @@ -2911,6 +2911,9 @@
  • tencentcloud_lite_hbase_instances
  • +
  • + tencentcloud_serverless_hbase_instances +
  • From 5983b804f4b7bf61c4550e0e91f95fe30bfc9adb Mon Sep 17 00:00:00 2001 From: mikatong Date: Tue, 18 Feb 2025 18:53:20 +0800 Subject: [PATCH 2/4] add changelog --- .changelog/3140.txt | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changelog/3140.txt diff --git a/.changelog/3140.txt b/.changelog/3140.txt new file mode 100644 index 0000000000..6c286c4e03 --- /dev/null +++ b/.changelog/3140.txt @@ -0,0 +1,7 @@ +```release-note:new-data-source +tencentcloud_serverless_hbase_instances +``` + +```release-note:enhancement +resource/tencentcloud_serverless_hbase_instance: fixed a delay in status updates +``` From c1d2b680e0bbc6a0031f2b1c17ac65fc41cfdb1c Mon Sep 17 00:00:00 2001 From: mikatong Date: Tue, 18 Feb 2025 20:50:15 +0800 Subject: [PATCH 3/4] update testcase --- ...ource_tc_serverless_hbase_instance_test.go | 75 +++++++++++++++++-- 1 file changed, 69 insertions(+), 6 deletions(-) diff --git a/tencentcloud/services/emr/resource_tc_serverless_hbase_instance_test.go b/tencentcloud/services/emr/resource_tc_serverless_hbase_instance_test.go index 1b36f7e4a9..ddf5311325 100644 --- a/tencentcloud/services/emr/resource_tc_serverless_hbase_instance_test.go +++ b/tencentcloud/services/emr/resource_tc_serverless_hbase_instance_test.go @@ -125,6 +125,31 @@ func TestAccTencentCloudServerlessHbaseInstanceResource_multiZone(t *testing.T) resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "tags.0.tag_value", "test"), ), }, + { + Config: testAccServerlessHbaseInstanceMultiZoneUpdate, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "id"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "instance_name", "tf-test-multi-zone"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "pay_mode", "0"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "disk_type", "CLOUD_HSSD"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "disk_size", "100"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "node_type", "4C16G"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.zone", "ap-shanghai-2"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.vpc_settings.0.vpc_id", "vpc-muytmxhk"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.vpc_settings.0.subnet_id", "subnet-9ye3xm5v"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.node_num", "2"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.zone", "ap-shanghai-5"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.vpc_settings.0.vpc_id", "vpc-muytmxhk"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.vpc_settings.0.subnet_id", "subnet-1ppkfg6t"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.node_num", "2"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.zone", "ap-shanghai-8"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.vpc_settings.0.vpc_id", "vpc-muytmxhk"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.vpc_settings.0.subnet_id", "subnet-1tup7mn1"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.node_num", "2"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "tags.0.tag_key", "test"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "tags.0.tag_value", "test"), + ), + }, }, }) } @@ -208,24 +233,24 @@ resource "tencentcloud_serverless_hbase_instance" "serverless_hbase_instance_mul zone_settings { zone = "ap-shanghai-2" vpc_settings { - vpc_id = "vpc-muytmxhk" - subnet_id = "subnet-9ye3xm5v" + vpc_id = "vpc-jcy9nxgi" + subnet_id = "subnet-q1tbmknp" } node_num = 1 } zone_settings { zone = "ap-shanghai-5" vpc_settings { - vpc_id = "vpc-muytmxhk" - subnet_id = "subnet-1ppkfg6t" + vpc_id = "vpc-jcy9nxgi" + subnet_id = "subnet-o787f1oz" } node_num = 1 } zone_settings { zone = "ap-shanghai-8" vpc_settings { - vpc_id = "vpc-muytmxhk" - subnet_id = "subnet-1tup7mn1" + vpc_id = "vpc-jcy9nxgi" + subnet_id = "subnet-huc1agnt" } node_num = 1 } @@ -235,3 +260,41 @@ resource "tencentcloud_serverless_hbase_instance" "serverless_hbase_instance_mul } } ` + +const testAccServerlessHbaseInstanceMultiZoneUpdate = ` +resource "tencentcloud_serverless_hbase_instance" "serverless_hbase_instance_multi_zone" { + instance_name = "tf-test-multi-zone" + pay_mode = 0 + disk_type = "CLOUD_HSSD" + disk_size = 100 + node_type = "4C16G" + zone_settings { + zone = "ap-shanghai-2" + vpc_settings { + vpc_id = "vpc-jcy9nxgi" + subnet_id = "subnet-q1tbmknp" + } + node_num = 2 + } + zone_settings { + zone = "ap-shanghai-5" + vpc_settings { + vpc_id = "vpc-jcy9nxgi" + subnet_id = "subnet-o787f1oz" + } + node_num = 2 + } + zone_settings { + zone = "ap-shanghai-8" + vpc_settings { + vpc_id = "vpc-jcy9nxgi" + subnet_id = "subnet-huc1agnt" + } + node_num = 2 + } + tags { + tag_key = "test" + tag_value = "test" + } +} +` From f81aac33a8e9ca4b24c2dcd1655d016c988a3569 Mon Sep 17 00:00:00 2001 From: mikatong Date: Tue, 18 Feb 2025 21:00:30 +0800 Subject: [PATCH 4/4] update testcase check --- ...ource_tc_serverless_hbase_instance_test.go | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tencentcloud/services/emr/resource_tc_serverless_hbase_instance_test.go b/tencentcloud/services/emr/resource_tc_serverless_hbase_instance_test.go index ddf5311325..587b65ada1 100644 --- a/tencentcloud/services/emr/resource_tc_serverless_hbase_instance_test.go +++ b/tencentcloud/services/emr/resource_tc_serverless_hbase_instance_test.go @@ -110,16 +110,16 @@ func TestAccTencentCloudServerlessHbaseInstanceResource_multiZone(t *testing.T) resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "disk_size", "100"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "node_type", "4C16G"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.zone", "ap-shanghai-2"), - resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.vpc_settings.0.vpc_id", "vpc-muytmxhk"), - resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.vpc_settings.0.subnet_id", "subnet-9ye3xm5v"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.vpc_settings.0.vpc_id", "vpc-jcy9nxgi"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.vpc_settings.0.subnet_id", "subnet-q1tbmknp"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.node_num", "1"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.zone", "ap-shanghai-5"), - resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.vpc_settings.0.vpc_id", "vpc-muytmxhk"), - resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.vpc_settings.0.subnet_id", "subnet-1ppkfg6t"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.vpc_settings.0.vpc_id", "vpc-jcy9nxgi"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.vpc_settings.0.subnet_id", "subnet-o787f1oz"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.node_num", "1"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.zone", "ap-shanghai-8"), - resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.vpc_settings.0.vpc_id", "vpc-muytmxhk"), - resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.vpc_settings.0.subnet_id", "subnet-1tup7mn1"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.vpc_settings.0.vpc_id", "vpc-jcy9nxgi"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.vpc_settings.0.subnet_id", "subnet-huc1agnt"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.node_num", "1"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "tags.0.tag_key", "test"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "tags.0.tag_value", "test"), @@ -135,16 +135,16 @@ func TestAccTencentCloudServerlessHbaseInstanceResource_multiZone(t *testing.T) resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "disk_size", "100"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "node_type", "4C16G"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.zone", "ap-shanghai-2"), - resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.vpc_settings.0.vpc_id", "vpc-muytmxhk"), - resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.vpc_settings.0.subnet_id", "subnet-9ye3xm5v"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.vpc_settings.0.vpc_id", "vpc-jcy9nxgi"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.vpc_settings.0.subnet_id", "subnet-q1tbmknp"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.0.node_num", "2"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.zone", "ap-shanghai-5"), - resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.vpc_settings.0.vpc_id", "vpc-muytmxhk"), - resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.vpc_settings.0.subnet_id", "subnet-1ppkfg6t"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.vpc_settings.0.vpc_id", "vpc-jcy9nxgi"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.vpc_settings.0.subnet_id", "subnet-o787f1oz"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.1.node_num", "2"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.zone", "ap-shanghai-8"), - resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.vpc_settings.0.vpc_id", "vpc-muytmxhk"), - resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.vpc_settings.0.subnet_id", "subnet-1tup7mn1"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.vpc_settings.0.vpc_id", "vpc-jcy9nxgi"), + resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.vpc_settings.0.subnet_id", "subnet-huc1agnt"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "zone_settings.2.node_num", "2"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "tags.0.tag_key", "test"), resource.TestCheckResourceAttr("tencentcloud_serverless_hbase_instance.serverless_hbase_instance_multi_zone", "tags.0.tag_value", "test"),