diff --git a/.changelog/3239.txt b/.changelog/3239.txt new file mode 100644 index 0000000000..2a7c132f0b --- /dev/null +++ b/.changelog/3239.txt @@ -0,0 +1,7 @@ +```release-note:new-resource +tencentcloud_cdwpg_dbconfig +``` + +```release-note:enhancement +resource/tencentcloud_cdwpg_instance: `count` update is supported +``` \ No newline at end of file diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go index 4a2c6f0230..93b834f2a6 100644 --- a/tencentcloud/provider.go +++ b/tencentcloud/provider.go @@ -2223,6 +2223,7 @@ func Provider() *schema.Provider { "tencentcloud_bi_embed_token_apply": bi.ResourceTencentCloudBiEmbedTokenApply(), "tencentcloud_bi_embed_interval_apply": bi.ResourceTencentCloudBiEmbedIntervalApply(), "tencentcloud_cdwpg_instance": cdwpg.ResourceTencentCloudCdwpgInstance(), + "tencentcloud_cdwpg_dbconfig": cdwpg.ResourceTencentCloudCdwpgDbconfig(), "tencentcloud_clickhouse_keyval_config": cdwch.ResourceTencentCloudClickhouseKeyvalConfig(), "tencentcloud_clickhouse_xml_config": cdwch.ResourceTencentCloudClickhouseXmlConfig(), "tencentcloud_clb_target_group_attachments": clb.ResourceTencentCloudClbTargetGroupAttachments(), diff --git a/tencentcloud/provider.md b/tencentcloud/provider.md index 1f7a0298cd..9ef80d04f5 100644 --- a/tencentcloud/provider.md +++ b/tencentcloud/provider.md @@ -2251,6 +2251,7 @@ tencentcloud_cdwpg_nodes Resource tencentcloud_cdwpg_instance +tencentcloud_cdwpg_dbconfig CSIP Resource diff --git a/tencentcloud/services/cdwpg/resource_tc_cdwpg_dbconfig.go b/tencentcloud/services/cdwpg/resource_tc_cdwpg_dbconfig.go new file mode 100644 index 0000000000..be67c711d6 --- /dev/null +++ b/tencentcloud/services/cdwpg/resource_tc_cdwpg_dbconfig.go @@ -0,0 +1,232 @@ +package cdwpg + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + cdwpgv20201230 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwpg/v20201230" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func ResourceTencentCloudCdwpgDbconfig() *schema.Resource { + return &schema.Resource{ + Create: resourceTencentCloudCdwpgDbconfigCreate, + Read: resourceTencentCloudCdwpgDbconfigRead, + Update: resourceTencentCloudCdwpgDbconfigUpdate, + Delete: resourceTencentCloudCdwpgDbconfigDelete, + Schema: map[string]*schema.Schema{ + "instance_id": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "Instance id.", + }, + "node_config_params": { + Type: schema.TypeSet, + Optional: true, + Description: "Node config parameters.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "node_type": { + Type: schema.TypeString, + Required: true, + Description: "Node type.", + }, + "parameter_name": { + Type: schema.TypeString, + Optional: true, + Description: "Parameter name.", + }, + "parameter_value": { + Type: schema.TypeString, + Optional: true, + Description: "Parameter value.", + }, + }, + }, + }, + }, + } +} + +func resourceTencentCloudCdwpgDbconfigCreate(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_cdwpg_dbconfig.create")() + defer tccommon.InconsistentCheck(d, meta)() + + instanceId := d.Get("instance_id").(string) + d.SetId(instanceId) + + return resourceTencentCloudCdwpgDbconfigUpdate(d, meta) +} + +func resourceTencentCloudCdwpgDbconfigRead(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_cdwpg_dbconfig.read")() + defer tccommon.InconsistentCheck(d, meta)() + + logId := tccommon.GetLogId(tccommon.ContextNil) + + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + + instanceId := d.Id() + + var respData []*cdwpgv20201230.ParamItem + paramMap := make(map[string]interface{}) + paramMap["InstanceId"] = helper.String(instanceId) + paramMap["NodeTypes"] = helper.Strings([]string{"cn", "dn"}) + service := CdwpgService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := service.DescribeCdwpgDbconfigByFilter(ctx, paramMap) + if e != nil { + return tccommon.RetryError(e) + } + respData = result + return nil + }) + if err != nil { + return err + } + + nodeConfigParamKeyMap := make(map[string]struct{}) + if v, ok := d.GetOk("node_config_params"); ok { + nodeConfigParams := v.(*schema.Set).List() + for _, nodeConfigParam := range nodeConfigParams { + nodeConfigParamMap := nodeConfigParam.(map[string]interface{}) + key := fmt.Sprintf("%s-%s", nodeConfigParamMap["node_type"], nodeConfigParamMap["parameter_name"]) + nodeConfigParamKeyMap[key] = struct{}{} + } + } + nodeConfigParams := make([]interface{}, 0) + for _, nodeConfigParam := range respData { + nodeType := nodeConfigParam.NodeType + for _, configParam := range nodeConfigParam.Details { + if nodeType != nil && configParam != nil && configParam.ParamName != nil { + key := fmt.Sprintf("%s-%s", *nodeType, *configParam.ParamName) + if _, ok := nodeConfigParamKeyMap[key]; ok { + nodeConfigParams = append(nodeConfigParams, map[string]interface{}{ + "node_type": nodeType, + "parameter_name": configParam.ParamName, + "parameter_value": configParam.RunningValue, + }) + } + } + } + } + _ = d.Set("instance_id", instanceId) + _ = d.Set("node_config_params", nodeConfigParams) + _ = instanceId + _ = ctx + return nil +} + +func resourceTencentCloudCdwpgDbconfigUpdate(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_cdwpg_dbconfig.update")() + defer tccommon.InconsistentCheck(d, meta)() + + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + instanceId := d.Id() + + needChange := false + mutableArgs := []string{"node_config_params"} + for _, v := range mutableArgs { + if d.HasChange(v) { + needChange = true + break + } + } + + if needChange { + var respData []*cdwpgv20201230.ParamItem + paramMap := make(map[string]interface{}) + paramMap["InstanceId"] = helper.String(instanceId) + paramMap["NodeTypes"] = helper.Strings([]string{"cn", "dn"}) + service := CdwpgService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := service.DescribeCdwpgDbconfigByFilter(ctx, paramMap) + if e != nil { + return tccommon.RetryError(e) + } + respData = result + return nil + }) + if err != nil { + return err + } + + nodeConfigParamMap := make(map[string]string) + for _, item := range respData { + nodeType := item.NodeType + for _, param := range item.Details { + key := fmt.Sprintf("%s-%s", *nodeType, *param.ParamName) + nodeConfigParamMap[key] = *param.RunningValue + } + } + + request := cdwpgv20201230.NewModifyDBParametersRequest() + request.InstanceId = helper.String(instanceId) + + if v, ok := d.GetOk("node_config_params"); ok { + params := v.(*schema.Set).List() + for _, item := range params { + nodeConfigParamsMap := item.(map[string]interface{}) + nodeConfigParams := cdwpgv20201230.NodeConfigParams{} + var nodeType, parameterName, parameterValue string + if v, ok := nodeConfigParamsMap["node_type"]; ok { + nodeType = v.(string) + nodeConfigParams.NodeType = helper.String(v.(string)) + } + if v, ok := nodeConfigParamsMap["parameter_name"]; ok { + parameterName = v.(string) + } + if v, ok := nodeConfigParamsMap["parameter_value"]; ok { + parameterValue = v.(string) + } + + key := fmt.Sprintf("%s-%s", nodeType, parameterName) + + configParams := cdwpgv20201230.ConfigParams{} + configParams.ParameterName = helper.String(parameterName) + configParams.ParameterOldValue = helper.String(nodeConfigParamMap[key]) + configParams.ParameterValue = helper.String(parameterValue) + nodeConfigParams.ConfigParams = append(nodeConfigParams.ConfigParams, &configParams) + request.NodeConfigParams = append(request.NodeConfigParams, &nodeConfigParams) + } + } + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCdwpgV20201230Client().ModifyDBParametersWithContext(ctx, request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s update cdwpg dbconfig failed, reason:%+v", logId, err) + return err + } + + conf := tccommon.BuildStateChangeConf([]string{}, []string{"Serving"}, 10*tccommon.ReadRetryTimeout, time.Second, service.InstanceStateRefreshFunc(instanceId, []string{})) + + if _, e := conf.WaitForState(); e != nil { + return e + } + + } + + return resourceTencentCloudCdwpgDbconfigRead(d, meta) +} + +func resourceTencentCloudCdwpgDbconfigDelete(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_cdwpg_dbconfig.delete")() + defer tccommon.InconsistentCheck(d, meta)() + + return nil +} diff --git a/tencentcloud/services/cdwpg/resource_tc_cdwpg_dbconfig.md b/tencentcloud/services/cdwpg/resource_tc_cdwpg_dbconfig.md new file mode 100644 index 0000000000..3cb904db7d --- /dev/null +++ b/tencentcloud/services/cdwpg/resource_tc_cdwpg_dbconfig.md @@ -0,0 +1,14 @@ +Provides a resource to create a cdwpg cdwpg_dbconfig + +Example Usage + +```hcl +resource "tencentcloud_cdwpg_dbconfig" "cdwpg_dbconfig" { + instance_id = "cdwpg-ua8wkqrt" + node_config_params { + node_type = "cn" + parameter_name = "log_min_duration_statement" + parameter_value = "10001" + } +} +``` diff --git a/tencentcloud/services/cdwpg/resource_tc_cdwpg_dbconfig_test.go b/tencentcloud/services/cdwpg/resource_tc_cdwpg_dbconfig_test.go new file mode 100644 index 0000000000..8e97a4ddb4 --- /dev/null +++ b/tencentcloud/services/cdwpg/resource_tc_cdwpg_dbconfig_test.go @@ -0,0 +1,36 @@ +package cdwpg_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" +) + +func TestAccTencentCloudCdwpgDbconfigResource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { + tcacctest.AccPreCheck(t) + }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCdwpgDbconfig, + Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_cdwpg_dbconfig.cdwpg_dbconfig", "id")), + }, + }, + }) +} + +const testAccCdwpgDbconfig = ` +resource "tencentcloud_cdwpg_dbconfig" "cdwpg_dbconfig" { + instance_id = "cdwpg-ua8wkqrt" + node_config_params { + node_type = "cn" + parameter_name = "log_min_duration_statement" + parameter_value = "10001" + } +} +` diff --git a/tencentcloud/services/cdwpg/resource_tc_cdwpg_instance.go b/tencentcloud/services/cdwpg/resource_tc_cdwpg_instance.go index 78cf9f88dc..3b83e129bf 100644 --- a/tencentcloud/services/cdwpg/resource_tc_cdwpg_instance.go +++ b/tencentcloud/services/cdwpg/resource_tc_cdwpg_instance.go @@ -389,7 +389,7 @@ func resourceTencentCloudCdwpgInstanceUpdate(d *schema.ResourceData, meta interf request.InstanceId = &instanceId - immutableArgs := []string{"zone", "user_vpc_id", "user_subnet_id", "charge_properties", "admin_password", "resources"} + immutableArgs := []string{"zone", "user_vpc_id", "user_subnet_id", "charge_properties", "admin_password"} for _, v := range immutableArgs { if d.HasChange(v) { @@ -397,31 +397,32 @@ func resourceTencentCloudCdwpgInstanceUpdate(d *schema.ResourceData, meta interf } } + service := CdwpgService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + if d.HasChange("instance_name") { if v, ok := d.GetOk("instance_name"); ok { request.InstanceName = helper.String(v.(string)) } - } + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCdwpgClient().ModifyInstance(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } - err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { - result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCdwpgClient().ModifyInstance(request) - if e != nil { - return tccommon.RetryError(e) - } else { - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s update cdwpg instance failed, reason:%+v", logId, err) + return err } - return nil - }) - if err != nil { - log.Printf("[CRITAL]%s update cdwpg instance failed, reason:%+v", logId, err) - return err - } - service := CdwpgService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := tccommon.BuildStateChangeConf([]string{}, []string{"Serving"}, 10*tccommon.ReadRetryTimeout, time.Second, service.InstanceStateRefreshFunc(instanceId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"Serving"}, 10*tccommon.ReadRetryTimeout, time.Second, service.InstanceStateRefreshFunc(instanceId, []string{})) - if _, e := conf.WaitForState(); e != nil { - return e + if _, e := conf.WaitForState(); e != nil { + return e + } } if d.HasChange("tags") { @@ -436,6 +437,58 @@ func resourceTencentCloudCdwpgInstanceUpdate(d *schema.ResourceData, meta interf } } + if d.HasChange("resources") { + if v, ok := d.GetOk("resources"); ok { + resources := v.([]interface{}) + for idx := range resources { + for _, resourcesItem := range []string{"spec_name", "disk_spec", "type"} { + key := fmt.Sprintf("resources.%d.%s", idx, resourcesItem) + if d.HasChange(key) { + return fmt.Errorf("argument `%s` cannot be changed", resourcesItem) + } + } + } + for idx, item := range resources { + resourceMap := item.(map[string]interface{}) + countKey := fmt.Sprintf("resources.%d.count", idx) + if d.HasChange(countKey) { + request := cdwpg.NewScaleOutInstanceRequest() + request.InstanceId = helper.String(instanceId) + request.NodeType = helper.String(resourceMap["type"].(string)) + oCount, nCount := d.GetChange(countKey) + if nCount.(int) < oCount.(int) { + return fmt.Errorf("only scale-out is supported") + } + request.ScaleOutCount = helper.IntInt64(nCount.(int) - oCount.(int)) + + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCdwpgClient().ScaleOutInstance(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + if result.Response.ErrorMsg != nil && *result.Response.ErrorMsg != "" { + return resource.NonRetryableError(fmt.Errorf(*result.Response.ErrorMsg)) + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s scale out cdwpg instance failed, reason:%+v", logId, err) + return err + } + + time.Sleep(5 * time.Second) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"Serving"}, 10*tccommon.ReadRetryTimeout, time.Second, service.InstanceStateRefreshFunc(instanceId, []string{})) + + if _, e := conf.WaitForState(); e != nil { + return e + } + + } + } + } + } return resourceTencentCloudCdwpgInstanceRead(d, meta) } diff --git a/tencentcloud/services/cdwpg/resource_tc_cdwpg_instance_test.go b/tencentcloud/services/cdwpg/resource_tc_cdwpg_instance_test.go index 26a0754ad8..7bb10c6ec8 100644 --- a/tencentcloud/services/cdwpg/resource_tc_cdwpg_instance_test.go +++ b/tencentcloud/services/cdwpg/resource_tc_cdwpg_instance_test.go @@ -21,7 +21,7 @@ func TestAccTencentCloudCdwpgInstanceResource_basic(t *testing.T) { resource.TestCheckResourceAttr("tencentcloud_cdwpg_instance.instance", "instance_name", "test_pg"), resource.TestCheckResourceAttr("tencentcloud_cdwpg_instance.instance", "zone", "ap-guangzhou-6"), resource.TestCheckResourceAttr("tencentcloud_cdwpg_instance.instance", "user_vpc_id", "vpc-axrsmmrv"), - resource.TestCheckResourceAttr("tencentcloud_cdwpg_instance.instance", "user_subnet_id", "subnet-o6qcrhzo"), + resource.TestCheckResourceAttr("tencentcloud_cdwpg_instance.instance", "user_subnet_id", "subnet-kxaxknmg"), resource.TestCheckResourceAttr("tencentcloud_cdwpg_instance.instance", "charge_properties.#", "1"), resource.TestCheckResourceAttr("tencentcloud_cdwpg_instance.instance", "resources.#", "2"), resource.TestCheckResourceAttr("tencentcloud_cdwpg_instance.instance", "tags.tagKey", "tagValue"), @@ -35,6 +35,13 @@ func TestAccTencentCloudCdwpgInstanceResource_basic(t *testing.T) { resource.TestCheckResourceAttr("tencentcloud_cdwpg_instance.instance", "tags.tagKey", "tagValueUpdate"), ), }, + { + Config: testAccCdwpgInstanceScaleOut, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_cdwpg_instance.instance", "id"), + resource.TestCheckResourceAttr("tencentcloud_cdwpg_instance.instance", "resources.0.count", "4"), + ), + }, { ResourceName: "tencentcloud_cdwpg_instance.instance", ImportState: true, @@ -50,7 +57,7 @@ resource "tencentcloud_cdwpg_instance" "instance" { instance_name = "test_pg" zone = "ap-guangzhou-6" user_vpc_id = "vpc-axrsmmrv" - user_subnet_id = "subnet-o6qcrhzo" + user_subnet_id = "subnet-kxaxknmg" charge_properties { renew_flag = 0 time_span = 1 @@ -92,7 +99,7 @@ resource "tencentcloud_cdwpg_instance" "instance" { instance_name = "test_pg_update" zone = "ap-guangzhou-6" user_vpc_id = "vpc-axrsmmrv" - user_subnet_id = "subnet-o6qcrhzo" + user_subnet_id = "subnet-kxaxknmg" charge_properties { renew_flag = 0 time_span = 1 @@ -128,3 +135,45 @@ resource "tencentcloud_cdwpg_instance" "instance" { } } ` + +const testAccCdwpgInstanceScaleOut = ` +resource "tencentcloud_cdwpg_instance" "instance" { + instance_name = "test_pg_update" + zone = "ap-guangzhou-6" + user_vpc_id = "vpc-axrsmmrv" + user_subnet_id = "subnet-kxaxknmg" + charge_properties { + renew_flag = 0 + time_span = 1 + time_unit = "h" + charge_type = "POSTPAID_BY_HOUR" + + } + admin_password = "bWJSZDVtVmZkNExJ" + resources { + spec_name = "S_4_16_H_CN" + count = 4 + disk_spec { + disk_type = "CLOUD_HSSD" + disk_size = 200 + disk_count = 1 + } + type = "cn" + + } + resources { + spec_name = "S_4_16_H_CN" + count = 2 + disk_spec { + disk_type = "CLOUD_HSSD" + disk_size = 20 + disk_count = 10 + } + type = "dn" + + } + tags = { + "tagKey" = "tagValueUpdate" + } +} +` diff --git a/tencentcloud/services/cdwpg/service_tencentcloud_cdwpg.go b/tencentcloud/services/cdwpg/service_tencentcloud_cdwpg.go index dca1070a5c..989ff95a41 100644 --- a/tencentcloud/services/cdwpg/service_tencentcloud_cdwpg.go +++ b/tencentcloud/services/cdwpg/service_tencentcloud_cdwpg.go @@ -295,3 +295,54 @@ func (me *CdwpgService) DescribeCdwpgNodesByFilter(ctx context.Context, param ma ret = response.Response return } + +func (me *CdwpgService) DescribeCdwpgDbconfigByFilter(ctx context.Context, param map[string]interface{}) (ret []*cdwpg.ParamItem, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = cdwpg.NewDescribeDBParamsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "NodeTypes" { + request.NodeTypes = v.([]*string) + } + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 100 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseCdwpgV20201230Client().DescribeDBParams(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Items) < 1 { + break + } + ret = append(ret, response.Response.Items...) + if len(response.Response.Items) < int(limit) { + break + } + + offset += limit + } + + return +} diff --git a/website/docs/r/cdwpg_dbconfig.html.markdown b/website/docs/r/cdwpg_dbconfig.html.markdown new file mode 100644 index 0000000000..7f5918855d --- /dev/null +++ b/website/docs/r/cdwpg_dbconfig.html.markdown @@ -0,0 +1,47 @@ +--- +subcategory: "CDWPG" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_cdwpg_dbconfig" +sidebar_current: "docs-tencentcloud-resource-cdwpg_dbconfig" +description: |- + Provides a resource to create a cdwpg cdwpg_dbconfig +--- + +# tencentcloud_cdwpg_dbconfig + +Provides a resource to create a cdwpg cdwpg_dbconfig + +## Example Usage + +```hcl +resource "tencentcloud_cdwpg_dbconfig" "cdwpg_dbconfig" { + instance_id = "cdwpg-ua8wkqrt" + node_config_params { + node_type = "cn" + parameter_name = "log_min_duration_statement" + parameter_value = "10001" + } +} +``` + +## Argument Reference + +The following arguments are supported: + +* `instance_id` - (Required, String, ForceNew) Instance id. +* `node_config_params` - (Optional, Set) Node config parameters. + +The `node_config_params` object supports the following: + +* `node_type` - (Required, String) Node type. +* `parameter_name` - (Optional, String) Parameter name. +* `parameter_value` - (Optional, String) Parameter value. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `id` - ID of the resource. + + + diff --git a/website/tencentcloud.erb b/website/tencentcloud.erb index 61010036c6..87110ece2d 100644 --- a/website/tencentcloud.erb +++ b/website/tencentcloud.erb @@ -582,6 +582,9 @@