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 +``` 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/tencentcloud/services/emr/resource_tc_serverless_hbase_instance_test.go b/tencentcloud/services/emr/resource_tc_serverless_hbase_instance_test.go index 1b36f7e4a9..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,21 +110,46 @@ 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"), ), }, + { + 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-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-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-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"), + ), + }, }, }) } @@ -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" + } +} +` 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 @@