diff --git a/.changelog/2845.txt b/.changelog/2845.txt new file mode 100644 index 0000000000..5496e6cbf1 --- /dev/null +++ b/.changelog/2845.txt @@ -0,0 +1,11 @@ +```release-note:enhancement +resource/tencentcloud_postgresql_instance: support `dedicated_cluster_id` params +``` + +```release-note:enhancement +resource/tencentcloud_postgresql_readonly_instance: support `dedicated_cluster_id` params +``` + +```release-note:new-data-source +tencentcloud_postgresql_dedicated_clusters +``` diff --git a/go.mod b/go.mod index 7eba3ed95f..e1bc093f9a 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.984 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.970 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1008 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1010 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.960 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.692 @@ -70,7 +70,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.844 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.853 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1008 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.995 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1010 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.859 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.762 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.976 diff --git a/go.sum b/go.sum index fa80fd1bd1..56894e2c3e 100644 --- a/go.sum +++ b/go.sum @@ -932,6 +932,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1006 h1:WX1 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1006/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1008 h1:BQJUiwOi2d368bF1qmdCjHjUMEt24vM6d68r9S+OrQM= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1008/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1010 h1:HwhKTg+VcQd5M9AyaEZaqKmpKuWxbf5kni23g1KRmOk= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1010/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU= @@ -990,6 +992,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1008 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1008/go.mod h1:wyPjTCtmxGUaR99fm3V4Fh53zi/oTy55l0+ZSQhsOog= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.995 h1:chLBYIeKYtDy2kB/IO4uFMLZzlYn/rDoBi7K34HWJu0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.995/go.mod h1:Qv44A5kdz3uX4TYhXz4WacYVSZ0BQL9aYtTdJEwDCQw= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1010 h1:lx554ZfB++mge+/Gk7LnDUI5Dwm9r+DgGNN9C/DqhE4= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1010/go.mod h1:GGhAf2ehV2/jwKf3Sezr2x/soJ3nDuefJFlcoZnlflA= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.859 h1:VrE3qzwzWB5mV/ejTJuwZbqZ/CNYLoc8X+uFbWEEOnY= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.859/go.mod h1:FeOl14rPWpNEu6r4bPEsTNHIB9qaRTg0dRhxhRwQ5Hw= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.762 h1:rZDKucVVtTnmnbZFDyh6t47dHswkb2oSuOxOHTTkygA= diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go index eee6f98c8d..48c53cffa8 100644 --- a/tencentcloud/provider.go +++ b/tencentcloud/provider.go @@ -690,6 +690,7 @@ func Provider() *schema.Provider { "tencentcloud_postgresql_db_instance_versions": postgresql.DataSourceTencentCloudPostgresqlDbInstanceVersions(), "tencentcloud_postgresql_zones": postgresql.DataSourceTencentCloudPostgresqlZones(), "tencentcloud_postgresql_account_privileges": postgresql.DataSourceTencentCloudPostgresqlAccountPrivileges(), + "tencentcloud_postgresql_dedicated_clusters": postgresql.DataSourceTencentCloudPostgresqlDedicatedClusters(), "tencentcloud_sqlserver_zone_config": sqlserver.DataSourceTencentCloudSqlserverZoneConfig(), "tencentcloud_sqlserver_instances": sqlserver.DataSourceTencentCloudSqlserverInstances(), "tencentcloud_sqlserver_backups": sqlserver.DataSourceTencentCloudSqlserverBackups(), diff --git a/tencentcloud/provider.md b/tencentcloud/provider.md index f4572e5711..cbe39e42c8 100644 --- a/tencentcloud/provider.md +++ b/tencentcloud/provider.md @@ -876,6 +876,7 @@ TencentDB for PostgreSQL(PostgreSQL) tencentcloud_postgresql_db_instance_versions tencentcloud_postgresql_zones tencentcloud_postgresql_account_privileges + tencentcloud_postgresql_dedicated_clusters Resource tencentcloud_postgresql_instance diff --git a/tencentcloud/services/postgresql/data_source_tc_postgresql_dedicated_clusters.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_dedicated_clusters.go new file mode 100644 index 0000000000..ac236478c6 --- /dev/null +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_dedicated_clusters.go @@ -0,0 +1,232 @@ +// Code generated by iacg; DO NOT EDIT. +package postgresql + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func DataSourceTencentCloudPostgresqlDedicatedClusters() *schema.Resource { + return &schema.Resource{ + Read: dataSourceTencentCloudPostgresqlDedicatedClustersRead, + Schema: map[string]*schema.Schema{ + "filters": { + Type: schema.TypeList, + Optional: true, + Description: "Querying based on one or more filtering criteria, the currently supported filtering criteria are: dedicated-cluster-id: filtering by dedicated cluster ID.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Optional: true, + Description: "Filter name.", + }, + "values": { + Type: schema.TypeSet, + Optional: true, + Description: "Filter values.", + Elem: &schema.Schema{Type: schema.TypeString}, + }, + }, + }, + }, + // computed + "dedicated_cluster_set": { + Type: schema.TypeList, + Computed: true, + Description: "Dedicated cluster set info.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "dedicated_cluster_id": { + Type: schema.TypeString, + Optional: true, + Description: "Dedicated cluster ID.", + }, + "name": { + Type: schema.TypeString, + Optional: true, + Description: "Name.", + }, + "zone": { + Type: schema.TypeString, + Optional: true, + Description: "Zone.", + }, + "standby_dedicated_cluster_set": { + Type: schema.TypeSet, + Optional: true, + Description: "Disaster recovery cluster.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "instance_count": { + Type: schema.TypeInt, + Optional: true, + Description: "Instance count.", + }, + "cpu_total": { + Type: schema.TypeInt, + Optional: true, + Description: "Cpu total.", + }, + "cpu_available": { + Type: schema.TypeInt, + Optional: true, + Description: "Number of available CPUs.", + }, + "mem_total": { + Type: schema.TypeInt, + Optional: true, + Description: "Total amount of memory.", + }, + "mem_available": { + Type: schema.TypeInt, + Optional: true, + Description: "Available Memory.", + }, + "disk_total": { + Type: schema.TypeInt, + Optional: true, + Description: "Total number of disks.", + }, + "disk_available": { + Type: schema.TypeInt, + Optional: true, + Description: "Disk availability.", + }, + }, + }, + }, + "result_output_file": { + Type: schema.TypeString, + Optional: true, + Description: "Used to save results.", + }, + }, + } +} + +func dataSourceTencentCloudPostgresqlDedicatedClustersRead(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("data_source.tencentcloud_postgresql_dedicated_clusters.read")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + logId = tccommon.GetLogId(nil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + service = PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + respData []*postgresql.DedicatedCluster + ) + + paramMap := make(map[string]interface{}) + if v, ok := d.GetOk("filters"); ok { + filtersSet := v.([]interface{}) + tmpSet := make([]*postgresql.Filter, 0, len(filtersSet)) + for _, item := range filtersSet { + filtersMap := item.(map[string]interface{}) + filter := postgresql.Filter{} + if v, ok := filtersMap["name"]; ok { + filter.Name = helper.String(v.(string)) + } + + if v, ok := filtersMap["values"]; ok { + valuesSet := v.(*schema.Set).List() + for i := range valuesSet { + values := valuesSet[i].(string) + filter.Values = append(filter.Values, helper.String(values)) + } + } + + tmpSet = append(tmpSet, &filter) + } + + paramMap["Filters"] = tmpSet + } + + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := service.DescribePostgresqlDedicatedClustersByFilter(ctx, paramMap) + if e != nil { + return tccommon.RetryError(e) + } + + respData = result + return nil + }) + + if err != nil { + return err + } + + ids := make([]string, 0, len(respData)) + dedicatedClusterSetList := make([]map[string]interface{}, 0, len(respData)) + if respData != nil { + for _, dedicatedClusterSet := range respData { + dedicatedClusterSetMap := map[string]interface{}{} + + if dedicatedClusterSet.DedicatedClusterId != nil { + dedicatedClusterSetMap["dedicated_cluster_id"] = dedicatedClusterSet.DedicatedClusterId + } + + if dedicatedClusterSet.Name != nil { + dedicatedClusterSetMap["name"] = dedicatedClusterSet.Name + } + + if dedicatedClusterSet.Zone != nil { + dedicatedClusterSetMap["zone"] = dedicatedClusterSet.Zone + } + + if dedicatedClusterSet.StandbyDedicatedClusterSet != nil { + dedicatedClusterSetMap["standby_dedicated_cluster_set"] = helper.PStrings(dedicatedClusterSet.StandbyDedicatedClusterSet) + } + + if dedicatedClusterSet.InstanceCount != nil { + dedicatedClusterSetMap["instance_count"] = dedicatedClusterSet.InstanceCount + } + + if dedicatedClusterSet.CpuTotal != nil { + dedicatedClusterSetMap["cpu_total"] = dedicatedClusterSet.CpuTotal + } + + if dedicatedClusterSet.CpuAvailable != nil { + dedicatedClusterSetMap["cpu_available"] = dedicatedClusterSet.CpuAvailable + } + + if dedicatedClusterSet.MemTotal != nil { + dedicatedClusterSetMap["mem_total"] = dedicatedClusterSet.MemTotal + } + + if dedicatedClusterSet.MemAvailable != nil { + dedicatedClusterSetMap["mem_available"] = dedicatedClusterSet.MemAvailable + } + + if dedicatedClusterSet.DiskTotal != nil { + dedicatedClusterSetMap["disk_total"] = dedicatedClusterSet.DiskTotal + } + + if dedicatedClusterSet.DiskAvailable != nil { + dedicatedClusterSetMap["disk_available"] = dedicatedClusterSet.DiskAvailable + } + + ids = append(ids, *dedicatedClusterSet.DedicatedClusterId) + dedicatedClusterSetList = append(dedicatedClusterSetList, dedicatedClusterSetMap) + } + + _ = d.Set("dedicated_cluster_set", dedicatedClusterSetList) + } + + d.SetId(helper.DataResourceIdsHash(ids)) + output, ok := d.GetOk("result_output_file") + if ok && output.(string) != "" { + if e := tccommon.WriteToFile(output.(string), dedicatedClusterSetList); e != nil { + return e + } + } + + return nil +} diff --git a/tencentcloud/services/postgresql/data_source_tc_postgresql_dedicated_clusters.md b/tencentcloud/services/postgresql/data_source_tc_postgresql_dedicated_clusters.md new file mode 100644 index 0000000000..238b88da07 --- /dev/null +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_dedicated_clusters.md @@ -0,0 +1,20 @@ +Use this data source to query detailed information of Postgresql dedicated clusters + +Example Usage + +Query all instances + +```hcl +data "tencentcloud_postgresql_dedicated_clusters" "example" {} +``` + +Query instances by filters + +```hcl +data "tencentcloud_postgresql_dedicated_clusters" "example" { + filters { + name = "dedicated-cluster-id" + values = ["cluster-262n63e8"] + } +} +``` diff --git a/tencentcloud/services/postgresql/data_source_tc_postgresql_dedicated_clusters_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_dedicated_clusters_test.go new file mode 100644 index 0000000000..9bd679ce27 --- /dev/null +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_dedicated_clusters_test.go @@ -0,0 +1,37 @@ +package postgresql_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" +) + +// go test -i; go test -test.run TestAccTencentCloudPostgresqlDedicatedClustersDataSource_basic -v +func TestAccTencentCloudPostgresqlDedicatedClustersDataSource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { + tcacctest.AccPreCheck(t) + }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccPostgresqlDedicatedClustersDataSource, + Check: resource.ComposeTestCheckFunc( + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_dedicated_clusters.example"), + ), + }, + }, + }) +} + +const testAccPostgresqlDedicatedClustersDataSource = ` +data "tencentcloud_postgresql_dedicated_clusters" "example" { + filters { + name = "dedicated-cluster-id" + values = ["cluster-262n63e8"] + } +} +` diff --git a/tencentcloud/services/postgresql/resource_tc_postgresql_instance.go b/tencentcloud/services/postgresql/resource_tc_postgresql_instance.go index f8448548fb..e12df3de5b 100644 --- a/tencentcloud/services/postgresql/resource_tc_postgresql_instance.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_instance.go @@ -275,6 +275,11 @@ func ResourceTencentCloudPostgresqlInstance() *schema.Resource { Required: true, Description: "Indicates the node available zone.", }, + "dedicated_cluster_id": { + Type: schema.TypeString, + Optional: true, + Description: "Dedicated cluster ID.", + }, }, }, }, @@ -479,14 +484,25 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i if len(nodeSet) > 0 { for i := range nodeSet { var ( - item = nodeSet[i].(map[string]interface{}) - role = item["role"].(string) - zone = item["zone"].(string) + item = nodeSet[i].(map[string]interface{}) + role = item["role"].(string) + zone = item["zone"].(string) + dedicatedClusterId = item["dedicated_cluster_id"].(string) + node *postgresql.DBNode + ) + + if dedicatedClusterId != "" { + node = &postgresql.DBNode{ + Role: &role, + Zone: &zone, + DedicatedClusterId: &dedicatedClusterId, + } + } else { node = &postgresql.DBNode{ Role: &role, Zone: &zone, } - ) + } dbNodeSet = append(dbNodeSet, node) } @@ -816,8 +832,9 @@ func resourceTencentCloudPostgresqlInstanceRead(d *schema.ResourceData, meta int for i := range nodeSet { item := nodeSet[i] node := map[string]interface{}{ - "role": item.Role, - "zone": item.Zone, + "role": item.Role, + "zone": item.Zone, + "dedicated_cluster_id": item.DedicatedClusterId, } zoneSet.Add(*item.Zone) @@ -1351,15 +1368,24 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i request.SwitchTag = helper.Int64(0) for i := range nodeSet { var ( - node = nodeSet[i].(map[string]interface{}) - role = node["role"].(string) - zone = node["zone"].(string) + node = nodeSet[i].(map[string]interface{}) + role = node["role"].(string) + zone = node["zone"].(string) + dedicatedClusterId = node["dedicated_cluster_id"].(string) ) - request.DBNodeSet = append(request.DBNodeSet, &postgresql.DBNode{ - Role: &role, - Zone: &zone, - }) + if dedicatedClusterId != "" { + request.DBNodeSet = append(request.DBNodeSet, &postgresql.DBNode{ + Role: &role, + Zone: &zone, + DedicatedClusterId: &dedicatedClusterId, + }) + } else { + request.DBNodeSet = append(request.DBNodeSet, &postgresql.DBNode{ + Role: &role, + Zone: &zone, + }) + } } err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { diff --git a/tencentcloud/services/postgresql/resource_tc_postgresql_instance.md b/tencentcloud/services/postgresql/resource_tc_postgresql_instance.md index 361fdc2944..bde47f7d4e 100644 --- a/tencentcloud/services/postgresql/resource_tc_postgresql_instance.md +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_instance.md @@ -153,6 +153,61 @@ resource "tencentcloud_postgresql_instance" "example" { } ``` +Create a multi available zone postgresql instance of CDC + +```hcl +variable "availability_zone" { + default = "ap-guangzhou-4" +} + +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} + +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + availability_zone = var.availability_zone + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create postgresql +resource "tencentcloud_postgresql_instance" "example" { + name = "tf-example" + availability_zone = var.availability_zone + charge_type = "POSTPAID_BY_HOUR" + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + db_major_version = "10" + root_user = "root123" + root_password = "Root123$" + charset = "UTF8" + project_id = 0 + memory = 2 + cpu = 1 + storage = 10 + + db_node_set { + role = "Primary" + zone = var.availability_zone + dedicated_cluster_id = "cluster-262n63e8" + } + + db_node_set { + zone = var.availability_zone + dedicated_cluster_id = "cluster-262n63e8" + } + + tags = { + CreateBy = "terraform" + } +} +``` + Create pgsql with kms key ```hcl diff --git a/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance.go b/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance.go index 146e441a63..3462b10578 100644 --- a/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance.go @@ -142,6 +142,11 @@ func ResourceTencentCloudPostgresqlReadonlyInstance() *schema.Resource { Optional: true, Description: "RO group ID.", }, + "dedicated_cluster_id": { + Type: schema.TypeString, + Optional: true, + Description: "Dedicated cluster ID.", + }, // Computed values "create_time": { Type: schema.TypeString, @@ -238,6 +243,9 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceCreate(d *schema.ResourceData request.SecurityGroupIds = append(request.SecurityGroupIds, helper.String(item.(string))) } } + if v, ok := d.GetOk("dedicated_cluster_id"); ok { + request.DedicatedClusterId = helper.String(v.(string)) + } //if tags := helper.GetTags(d, "tag_list"); len(tags) > 0 { // for k, v := range tags { // request.TagList = &postgresql.Tag{ @@ -371,6 +379,16 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceRead(d *schema.ResourceData, _ = d.Set("subnet_id", instance.SubnetId) _ = d.Set("name", instance.DBInstanceName) _ = d.Set("need_support_ipv6", instance.SupportIpv6) + nodeSet := instance.DBNodeSet + if nodeCount := len(nodeSet); nodeCount > 0 { + for i := range nodeSet { + item := nodeSet[i] + if item.DedicatedClusterId != nil { + _ = d.Set("dedicated_cluster_id", item.DedicatedClusterId) + } + } + } + // read only group masterDBInstanceId := instance.MasterDBInstanceId readOnlyGroupId, err := postgresqlService.DescribeReadOnlyGroupsById(ctx, *masterDBInstanceId, d.Id()) @@ -430,6 +448,7 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceUpdate(d *schema.ResourceData "auto_renew_flag", "auto_voucher", "voucher_ids", + "dedicated_cluster_id", ); err != nil { return err } diff --git a/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance.md b/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance.md index 304b7fdbab..67b0b314af 100644 --- a/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance.md +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance.md @@ -2,6 +2,8 @@ Use this resource to create postgresql readonly instance. Example Usage +Create postgresql readonly instance + ```hcl variable "availability_zone" { default = "ap-guangzhou-3" @@ -29,7 +31,7 @@ resource "tencentcloud_postgresql_instance" "example" { charge_type = "POSTPAID_BY_HOUR" vpc_id = tencentcloud_vpc.vpc.id subnet_id = tencentcloud_subnet.subnet.id - engine_version = "10.4" + db_major_version = "10" root_user = "root123" root_password = "Root123$" charset = "UTF8" @@ -43,6 +45,7 @@ resource "tencentcloud_postgresql_instance" "example" { } } +# create postgresql readonly group resource "tencentcloud_postgresql_readonly_group" "example" { master_db_instance_id = tencentcloud_postgresql_instance.example.id name = "tf_ro_group" @@ -67,13 +70,14 @@ resource "tencentcloud_security_group" "example" { } } +# create postgresql readonly instance resource "tencentcloud_postgresql_readonly_instance" "example" { read_only_group_id = tencentcloud_postgresql_readonly_group.example.id master_db_instance_id = tencentcloud_postgresql_instance.example.id zone = var.availability_zone name = "example" auto_renew_flag = 0 - db_version = "10.4" + db_version = "10.23" instance_charge_type = "POSTPAID_BY_HOUR" memory = 4 cpu = 2 @@ -88,10 +92,112 @@ resource "tencentcloud_postgresql_readonly_instance" "example" { } ``` +Create postgresql readonly instance of CDC + +```hcl +variable "availability_zone" { + default = "ap-guangzhou-4" +} + +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} + +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + availability_zone = var.availability_zone + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create postgresql +resource "tencentcloud_postgresql_instance" "example" { + name = "tf-example" + availability_zone = var.availability_zone + charge_type = "POSTPAID_BY_HOUR" + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + db_major_version = "10" + root_user = "root123" + root_password = "Root123$" + charset = "UTF8" + project_id = 0 + memory = 2 + cpu = 1 + storage = 10 + + db_node_set { + role = "Primary" + zone = var.availability_zone + dedicated_cluster_id = "cluster-262n63e8" + } + + db_node_set { + zone = var.availability_zone + dedicated_cluster_id = "cluster-262n63e8" + } + + tags = { + CreateBy = "terraform" + } +} + +# create postgresql readonly group +resource "tencentcloud_postgresql_readonly_group" "example" { + master_db_instance_id = tencentcloud_postgresql_instance.example.id + name = "tf_ro_group" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + replay_lag_eliminate = 1 + replay_latency_eliminate = 1 + max_replay_lag = 100 + max_replay_latency = 512 + min_delay_eliminate_reserve = 1 +} + +# create security group +resource "tencentcloud_security_group" "example" { + name = "tf-example" + description = "sg desc." + project_id = 0 + + tags = { + CreateBy = "terraform" + } +} + +# create postgresql readonly instance +resource "tencentcloud_postgresql_readonly_instance" "example" { + read_only_group_id = tencentcloud_postgresql_readonly_group.example.id + master_db_instance_id = tencentcloud_postgresql_instance.example.id + zone = var.availability_zone + name = "example" + auto_renew_flag = 0 + db_version = "10.23" + instance_charge_type = "POSTPAID_BY_HOUR" + memory = 4 + cpu = 2 + storage = 250 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + need_support_ipv6 = 0 + project_id = 0 + dedicated_cluster_id = "cluster-262n63e8" + security_groups_ids = [ + tencentcloud_security_group.example.id, + ] +} +``` + Import postgresql readonly instance can be imported using the id, e.g. ``` -$ terraform import tencentcloud_postgresql_readonly_instance.example instance_id +$ terraform import tencentcloud_postgresql_readonly_instance.example pgro-gih5m0ke ``` \ No newline at end of file diff --git a/tencentcloud/services/postgresql/service_tencentcloud_postgresql.go b/tencentcloud/services/postgresql/service_tencentcloud_postgresql.go index b45b99b8e1..38b6d4e2b9 100644 --- a/tencentcloud/services/postgresql/service_tencentcloud_postgresql.go +++ b/tencentcloud/services/postgresql/service_tencentcloud_postgresql.go @@ -2150,3 +2150,39 @@ func (me *PostgresqlService) DescribePostgresAccountPrivilegesById(ctx context.C accountPrivileges = response.Response.PrivilegeSet return } + +func (me *PostgresqlService) DescribePostgresqlDedicatedClustersByFilter(ctx context.Context, param map[string]interface{}) (ret []*postgresql.DedicatedCluster, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = postgresql.NewDescribeDedicatedClustersRequest() + ) + + 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 == "Filters" { + request.Filters = v.([]*postgresql.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UsePostgresqlClient().DescribeDedicatedClusters(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 len(response.Response.DedicatedClusterSet) < 1 { + return + } + + ret = response.Response.DedicatedClusterSet + return +} diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go index aa13a9ae6e..e0e41703d0 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go @@ -265,7 +265,7 @@ func CompleteCommonParams(request Request, region string, requestClient string) params["Action"] = request.GetAction() params["Timestamp"] = strconv.FormatInt(time.Now().Unix(), 10) params["Nonce"] = strconv.Itoa(rand.Int()) - params["RequestClient"] = "SDK_GO_1.0.1008" + params["RequestClient"] = "SDK_GO_1.0.1010" if requestClient != "" { params["RequestClient"] += ": " + requestClient } diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312/client.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312/client.go index 7e558e636d..90f0aeee57 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312/client.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312/client.go @@ -855,6 +855,77 @@ func (c *Client) CreateDBInstancesWithContext(ctx context.Context, request *Crea return } +func NewCreateDatabaseRequest() (request *CreateDatabaseRequest) { + request = &CreateDatabaseRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("postgres", APIVersion, "CreateDatabase") + + + return +} + +func NewCreateDatabaseResponse() (response *CreateDatabaseResponse) { + response = &CreateDatabaseResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// CreateDatabase +// 此接口用于创建数据库,需指定数据库名及所有者。 +// +// 可能返回的错误码: +// AUTHFAILURE_UNAUTHORIZEDOPERATION = "AuthFailure.UnauthorizedOperation" +// FAILEDOPERATION_DATABASEACCESSERROR = "FailedOperation.DatabaseAccessError" +// FAILEDOPERATION_DATABASEAFFECTEDERROR = "FailedOperation.DatabaseAffectedError" +// FAILEDOPERATION_FAILEDOPERATIONERROR = "FailedOperation.FailedOperationError" +// FAILEDOPERATION_PRECHECKERROR = "FailedOperation.PreCheckError" +// INVALIDPARAMETER_PARAMETERCHECKERROR = "InvalidParameter.ParameterCheckError" +// INVALIDPARAMETERVALUE_CHARSETNOTFOUNDERROR = "InvalidParameterValue.CharsetNotFoundError" +// INVALIDPARAMETERVALUE_INVALIDACCOUNTERROR = "InvalidParameterValue.InvalidAccountError" +// INVALIDPARAMETERVALUE_PARAMETERLENGTHLIMITERROR = "InvalidParameterValue.ParameterLengthLimitError" +// INVALIDPARAMETERVALUE_PARAMETEROUTRANGEERROR = "InvalidParameterValue.ParameterOutRangeError" +// OPERATIONDENIED_INSTANCESTATUSLIMITERROR = "OperationDenied.InstanceStatusLimitError" +// RESOURCENOTFOUND_INSTANCENOTFOUNDERROR = "ResourceNotFound.InstanceNotFoundError" +func (c *Client) CreateDatabase(request *CreateDatabaseRequest) (response *CreateDatabaseResponse, err error) { + return c.CreateDatabaseWithContext(context.Background(), request) +} + +// CreateDatabase +// 此接口用于创建数据库,需指定数据库名及所有者。 +// +// 可能返回的错误码: +// AUTHFAILURE_UNAUTHORIZEDOPERATION = "AuthFailure.UnauthorizedOperation" +// FAILEDOPERATION_DATABASEACCESSERROR = "FailedOperation.DatabaseAccessError" +// FAILEDOPERATION_DATABASEAFFECTEDERROR = "FailedOperation.DatabaseAffectedError" +// FAILEDOPERATION_FAILEDOPERATIONERROR = "FailedOperation.FailedOperationError" +// FAILEDOPERATION_PRECHECKERROR = "FailedOperation.PreCheckError" +// INVALIDPARAMETER_PARAMETERCHECKERROR = "InvalidParameter.ParameterCheckError" +// INVALIDPARAMETERVALUE_CHARSETNOTFOUNDERROR = "InvalidParameterValue.CharsetNotFoundError" +// INVALIDPARAMETERVALUE_INVALIDACCOUNTERROR = "InvalidParameterValue.InvalidAccountError" +// INVALIDPARAMETERVALUE_PARAMETERLENGTHLIMITERROR = "InvalidParameterValue.ParameterLengthLimitError" +// INVALIDPARAMETERVALUE_PARAMETEROUTRANGEERROR = "InvalidParameterValue.ParameterOutRangeError" +// OPERATIONDENIED_INSTANCESTATUSLIMITERROR = "OperationDenied.InstanceStatusLimitError" +// RESOURCENOTFOUND_INSTANCENOTFOUNDERROR = "ResourceNotFound.InstanceNotFoundError" +func (c *Client) CreateDatabaseWithContext(ctx context.Context, request *CreateDatabaseRequest) (response *CreateDatabaseResponse, err error) { + if request == nil { + request = NewCreateDatabaseRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateDatabase require credential") + } + + request.SetContext(ctx) + + response = NewCreateDatabaseResponse() + err = c.Send(request, response) + return +} + func NewCreateInstancesRequest() (request *CreateInstancesRequest) { request = &CreateInstancesRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -1182,6 +1253,7 @@ func NewCreateReadOnlyDBInstanceResponse() (response *CreateReadOnlyDBInstanceRe // INTERNALERROR_DFWERROR = "InternalError.DfwError" // INTERNALERROR_FLOWERROR = "InternalError.FlowError" // INTERNALERROR_INTERNALHTTPSERVERERROR = "InternalError.InternalHttpServerError" +// INTERNALERROR_JSONPARSEERROR = "InternalError.JsonParseError" // INTERNALERROR_SYSTEMERROR = "InternalError.SystemError" // INTERNALERROR_UNKNOWNERROR = "InternalError.UnknownError" // INTERNALERROR_VPCERROR = "InternalError.VpcError" @@ -1266,6 +1338,7 @@ func (c *Client) CreateReadOnlyDBInstance(request *CreateReadOnlyDBInstanceReque // INTERNALERROR_DFWERROR = "InternalError.DfwError" // INTERNALERROR_FLOWERROR = "InternalError.FlowError" // INTERNALERROR_INTERNALHTTPSERVERERROR = "InternalError.InternalHttpServerError" +// INTERNALERROR_JSONPARSEERROR = "InternalError.JsonParseError" // INTERNALERROR_SYSTEMERROR = "InternalError.SystemError" // INTERNALERROR_UNKNOWNERROR = "InternalError.UnknownError" // INTERNALERROR_VPCERROR = "InternalError.VpcError" @@ -3816,6 +3889,65 @@ func (c *Client) DescribeDatabasesWithContext(ctx context.Context, request *Desc return } +func NewDescribeDedicatedClustersRequest() (request *DescribeDedicatedClustersRequest) { + request = &DescribeDedicatedClustersRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("postgres", APIVersion, "DescribeDedicatedClusters") + + + return +} + +func NewDescribeDedicatedClustersResponse() (response *DescribeDedicatedClustersResponse) { + response = &DescribeDedicatedClustersResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// DescribeDedicatedClusters +// 查询专属集群 +// +// 可能返回的错误码: +// FAILEDOPERATION_DATABASEAFFECTEDERROR = "FailedOperation.DatabaseAffectedError" +// FAILEDOPERATION_FAILEDOPERATIONERROR = "FailedOperation.FailedOperationError" +// FAILEDOPERATION_SERVICEACCESSERROR = "FailedOperation.ServiceAccessError" +// INTERNALERROR_JSONPARSEERROR = "InternalError.JsonParseError" +// INVALIDPARAMETER_PARAMETERCHECKERROR = "InvalidParameter.ParameterCheckError" +// INVALIDPARAMETERVALUE_INVALIDPARAMETERVALUEERROR = "InvalidParameterValue.InvalidParameterValueError" +func (c *Client) DescribeDedicatedClusters(request *DescribeDedicatedClustersRequest) (response *DescribeDedicatedClustersResponse, err error) { + return c.DescribeDedicatedClustersWithContext(context.Background(), request) +} + +// DescribeDedicatedClusters +// 查询专属集群 +// +// 可能返回的错误码: +// FAILEDOPERATION_DATABASEAFFECTEDERROR = "FailedOperation.DatabaseAffectedError" +// FAILEDOPERATION_FAILEDOPERATIONERROR = "FailedOperation.FailedOperationError" +// FAILEDOPERATION_SERVICEACCESSERROR = "FailedOperation.ServiceAccessError" +// INTERNALERROR_JSONPARSEERROR = "InternalError.JsonParseError" +// INVALIDPARAMETER_PARAMETERCHECKERROR = "InvalidParameter.ParameterCheckError" +// INVALIDPARAMETERVALUE_INVALIDPARAMETERVALUEERROR = "InvalidParameterValue.InvalidParameterValueError" +func (c *Client) DescribeDedicatedClustersWithContext(ctx context.Context, request *DescribeDedicatedClustersRequest) (response *DescribeDedicatedClustersResponse, err error) { + if request == nil { + request = NewDescribeDedicatedClustersRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeDedicatedClusters require credential") + } + + request.SetContext(ctx) + + response = NewDescribeDedicatedClustersResponse() + err = c.Send(request, response) + return +} + func NewDescribeDefaultParametersRequest() (request *DescribeDefaultParametersRequest) { request = &DescribeDefaultParametersRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -6570,6 +6702,79 @@ func (c *Client) ModifyDBInstancesProjectWithContext(ctx context.Context, reques return } +func NewModifyDatabaseOwnerRequest() (request *ModifyDatabaseOwnerRequest) { + request = &ModifyDatabaseOwnerRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("postgres", APIVersion, "ModifyDatabaseOwner") + + + return +} + +func NewModifyDatabaseOwnerResponse() (response *ModifyDatabaseOwnerResponse) { + response = &ModifyDatabaseOwnerResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// ModifyDatabaseOwner +// 修改数据库所有者 +// +// 可能返回的错误码: +// FAILEDOPERATION_DATABASEACCESSERROR = "FailedOperation.DatabaseAccessError" +// FAILEDOPERATION_DATABASEAFFECTEDERROR = "FailedOperation.DatabaseAffectedError" +// FAILEDOPERATION_FAILEDOPERATIONERROR = "FailedOperation.FailedOperationError" +// FAILEDOPERATION_PRECHECKERROR = "FailedOperation.PreCheckError" +// INVALIDPARAMETER_PARAMETERCHECKERROR = "InvalidParameter.ParameterCheckError" +// INVALIDPARAMETERVALUE_INVALIDACCOUNTERROR = "InvalidParameterValue.InvalidAccountError" +// INVALIDPARAMETERVALUE_INVALIDDATABASENAMEFORMATERROR = "InvalidParameterValue.InvalidDatabaseNameFormatError" +// INVALIDPARAMETERVALUE_PARAMETERLENGTHLIMITERROR = "InvalidParameterValue.ParameterLengthLimitError" +// INVALIDPARAMETERVALUE_PARAMETEROUTRANGEERROR = "InvalidParameterValue.ParameterOutRangeError" +// OPERATIONDENIED_INSTANCEACCESSDENIEDERROR = "OperationDenied.InstanceAccessDeniedError" +// OPERATIONDENIED_INSTANCESTATUSLIMITOPERROR = "OperationDenied.InstanceStatusLimitOpError" +// RESOURCENOTFOUND_INSTANCENOTFOUNDERROR = "ResourceNotFound.InstanceNotFoundError" +// RESOURCEUNAVAILABLE_INVALIDINSTANCESTATUS = "ResourceUnavailable.InvalidInstanceStatus" +func (c *Client) ModifyDatabaseOwner(request *ModifyDatabaseOwnerRequest) (response *ModifyDatabaseOwnerResponse, err error) { + return c.ModifyDatabaseOwnerWithContext(context.Background(), request) +} + +// ModifyDatabaseOwner +// 修改数据库所有者 +// +// 可能返回的错误码: +// FAILEDOPERATION_DATABASEACCESSERROR = "FailedOperation.DatabaseAccessError" +// FAILEDOPERATION_DATABASEAFFECTEDERROR = "FailedOperation.DatabaseAffectedError" +// FAILEDOPERATION_FAILEDOPERATIONERROR = "FailedOperation.FailedOperationError" +// FAILEDOPERATION_PRECHECKERROR = "FailedOperation.PreCheckError" +// INVALIDPARAMETER_PARAMETERCHECKERROR = "InvalidParameter.ParameterCheckError" +// INVALIDPARAMETERVALUE_INVALIDACCOUNTERROR = "InvalidParameterValue.InvalidAccountError" +// INVALIDPARAMETERVALUE_INVALIDDATABASENAMEFORMATERROR = "InvalidParameterValue.InvalidDatabaseNameFormatError" +// INVALIDPARAMETERVALUE_PARAMETERLENGTHLIMITERROR = "InvalidParameterValue.ParameterLengthLimitError" +// INVALIDPARAMETERVALUE_PARAMETEROUTRANGEERROR = "InvalidParameterValue.ParameterOutRangeError" +// OPERATIONDENIED_INSTANCEACCESSDENIEDERROR = "OperationDenied.InstanceAccessDeniedError" +// OPERATIONDENIED_INSTANCESTATUSLIMITOPERROR = "OperationDenied.InstanceStatusLimitOpError" +// RESOURCENOTFOUND_INSTANCENOTFOUNDERROR = "ResourceNotFound.InstanceNotFoundError" +// RESOURCEUNAVAILABLE_INVALIDINSTANCESTATUS = "ResourceUnavailable.InvalidInstanceStatus" +func (c *Client) ModifyDatabaseOwnerWithContext(ctx context.Context, request *ModifyDatabaseOwnerRequest) (response *ModifyDatabaseOwnerResponse, err error) { + if request == nil { + request = NewModifyDatabaseOwnerRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyDatabaseOwner require credential") + } + + request.SetContext(ctx) + + response = NewModifyDatabaseOwnerResponse() + err = c.Send(request, response) + return +} + func NewModifyParameterTemplateRequest() (request *ModifyParameterTemplateRequest) { request = &ModifyParameterTemplateRequest{ BaseRequest: &tchttp.BaseRequest{}, diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312/models.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312/models.go index 5552109e18..639525cc7d 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312/models.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312/models.go @@ -1050,6 +1050,95 @@ func (r *CreateDBInstancesResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } +// Predefined struct for user +type CreateDatabaseRequestParams struct { + // 实例ID,形如postgres-6fego161 + DBInstanceId *string `json:"DBInstanceId,omitnil,omitempty" name:"DBInstanceId"` + + // 创建的数据库名 + DatabaseName *string `json:"DatabaseName,omitnil,omitempty" name:"DatabaseName"` + + // 数据库的所有者 + DatabaseOwner *string `json:"DatabaseOwner,omitnil,omitempty" name:"DatabaseOwner"` + + // 数据库的字符编码 + Encoding *string `json:"Encoding,omitnil,omitempty" name:"Encoding"` + + // 数据库的排序规则 + Collate *string `json:"Collate,omitnil,omitempty" name:"Collate"` + + // 数据库的字符分类 + Ctype *string `json:"Ctype,omitnil,omitempty" name:"Ctype"` +} + +type CreateDatabaseRequest struct { + *tchttp.BaseRequest + + // 实例ID,形如postgres-6fego161 + DBInstanceId *string `json:"DBInstanceId,omitnil,omitempty" name:"DBInstanceId"` + + // 创建的数据库名 + DatabaseName *string `json:"DatabaseName,omitnil,omitempty" name:"DatabaseName"` + + // 数据库的所有者 + DatabaseOwner *string `json:"DatabaseOwner,omitnil,omitempty" name:"DatabaseOwner"` + + // 数据库的字符编码 + Encoding *string `json:"Encoding,omitnil,omitempty" name:"Encoding"` + + // 数据库的排序规则 + Collate *string `json:"Collate,omitnil,omitempty" name:"Collate"` + + // 数据库的字符分类 + Ctype *string `json:"Ctype,omitnil,omitempty" name:"Ctype"` +} + +func (r *CreateDatabaseRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateDatabaseRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DBInstanceId") + delete(f, "DatabaseName") + delete(f, "DatabaseOwner") + delete(f, "Encoding") + delete(f, "Collate") + delete(f, "Ctype") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateDatabaseRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateDatabaseResponseParams struct { + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type CreateDatabaseResponse struct { + *tchttp.BaseResponse + Response *CreateDatabaseResponseParams `json:"Response"` +} + +func (r *CreateDatabaseResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateDatabaseResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + // Predefined struct for user type CreateInstancesRequestParams struct { // 实例所属主可用区, 如:ap-guangzhou-3;若需要支持多可用区,在DBNodeSet.N字段中进行添加主可用区和备可用区信息; @@ -1513,25 +1602,25 @@ type CreateReadOnlyDBInstanceRequestParams struct { InstanceCount *uint64 `json:"InstanceCount,omitnil,omitempty" name:"InstanceCount"` // 购买时长,单位:月。 - //
  • 预付费:支持1,2,3,4,5,6,7,8,9,10,11,12,24,36 - //
  • 后付费:只支持1 + //
  • 预付费:支持1,2,3,4,5,6,7,8,9,10,11,12,24,36
  • + //
  • 后付费:只支持1
  • Period *uint64 `json:"Period,omitnil,omitempty" name:"Period"` - // 私有网络ID,形如vpc-xxxxxxxx。有效的VpcId可通过登录控制台查询;也可以调用接口 [DescribeVpcEx](https://cloud.tencent.com/document/api/215/1372) ,从接口返回中的unVpcId字段获取。 + // 私有网络ID,形如vpc-xxxxxxxx(该参数当前必传)。有效的VpcId可通过登录控制台查询;也可以调用接口 [DescribeVpcEx](https://cloud.tencent.com/document/api/215/1372) ,从接口返回中的unVpcId字段获取。 VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"` - // 私有网络子网ID,形如subnet-xxxxxxxx。有效的私有网络子网ID可通过登录控制台查询;也可以调用接口 [DescribeSubnets ](https://cloud.tencent.com/document/api/215/15784),从接口返回中的unSubnetId字段获取。 + // 私有网络子网ID,形如subnet-xxxxxxxx(该参数当前必传)。有效的私有网络子网ID可通过登录控制台查询;也可以调用接口 [DescribeSubnets ](https://cloud.tencent.com/document/api/215/15784),从接口返回中的unSubnetId字段获取。 SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"` // 实例计费类型,目前支持: - //
  • PREPAID:预付费,即包年包月。 - //
  • POSTPAID_BY_HOUR:后付费,即按量计费。 + //
  • PREPAID:预付费,即包年包月。
  • + //
  • POSTPAID_BY_HOUR:后付费,即按量计费。
  • // 默认值:PREPAID。如果主实例为后付费,只读实例必须也为后付费。 InstanceChargeType *string `json:"InstanceChargeType,omitnil,omitempty" name:"InstanceChargeType"` // 是否自动使用代金券: - //
  • 0:否 - //
  • 1:是 + //
  • 0:否
  • + //
  • 1:是
  • // 默认值:0 AutoVoucher *uint64 `json:"AutoVoucher,omitnil,omitempty" name:"AutoVoucher"` @@ -1539,8 +1628,8 @@ type CreateReadOnlyDBInstanceRequestParams struct { VoucherIds []*string `json:"VoucherIds,omitnil,omitempty" name:"VoucherIds"` // 续费标记: - //
  • 0:手动续费 - //
  • 1:自动续费 + //
  • 0:手动续费
  • + //
  • 1:自动续费
  • // 默认值:0 AutoRenewFlag *int64 `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"` @@ -1560,8 +1649,8 @@ type CreateReadOnlyDBInstanceRequestParams struct { SecurityGroupIds []*string `json:"SecurityGroupIds,omitnil,omitempty" name:"SecurityGroupIds"` // 是否需要支持Ipv6: - //
  • 0:否 - //
  • 1:是 + //
  • 0:否
  • + //
  • 1:是
  • // 默认值:0 NeedSupportIpv6 *uint64 `json:"NeedSupportIpv6,omitnil,omitempty" name:"NeedSupportIpv6"` @@ -1570,6 +1659,9 @@ type CreateReadOnlyDBInstanceRequestParams struct { // 【废弃】不再需要指定,内核版本号与主实例保持一致 DBVersion *string `json:"DBVersion,omitnil,omitempty" name:"DBVersion"` + + // 专属集群ID + DedicatedClusterId *string `json:"DedicatedClusterId,omitnil,omitempty" name:"DedicatedClusterId"` } type CreateReadOnlyDBInstanceRequest struct { @@ -1592,25 +1684,25 @@ type CreateReadOnlyDBInstanceRequest struct { InstanceCount *uint64 `json:"InstanceCount,omitnil,omitempty" name:"InstanceCount"` // 购买时长,单位:月。 - //
  • 预付费:支持1,2,3,4,5,6,7,8,9,10,11,12,24,36 - //
  • 后付费:只支持1 + //
  • 预付费:支持1,2,3,4,5,6,7,8,9,10,11,12,24,36
  • + //
  • 后付费:只支持1
  • Period *uint64 `json:"Period,omitnil,omitempty" name:"Period"` - // 私有网络ID,形如vpc-xxxxxxxx。有效的VpcId可通过登录控制台查询;也可以调用接口 [DescribeVpcEx](https://cloud.tencent.com/document/api/215/1372) ,从接口返回中的unVpcId字段获取。 + // 私有网络ID,形如vpc-xxxxxxxx(该参数当前必传)。有效的VpcId可通过登录控制台查询;也可以调用接口 [DescribeVpcEx](https://cloud.tencent.com/document/api/215/1372) ,从接口返回中的unVpcId字段获取。 VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"` - // 私有网络子网ID,形如subnet-xxxxxxxx。有效的私有网络子网ID可通过登录控制台查询;也可以调用接口 [DescribeSubnets ](https://cloud.tencent.com/document/api/215/15784),从接口返回中的unSubnetId字段获取。 + // 私有网络子网ID,形如subnet-xxxxxxxx(该参数当前必传)。有效的私有网络子网ID可通过登录控制台查询;也可以调用接口 [DescribeSubnets ](https://cloud.tencent.com/document/api/215/15784),从接口返回中的unSubnetId字段获取。 SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"` // 实例计费类型,目前支持: - //
  • PREPAID:预付费,即包年包月。 - //
  • POSTPAID_BY_HOUR:后付费,即按量计费。 + //
  • PREPAID:预付费,即包年包月。
  • + //
  • POSTPAID_BY_HOUR:后付费,即按量计费。
  • // 默认值:PREPAID。如果主实例为后付费,只读实例必须也为后付费。 InstanceChargeType *string `json:"InstanceChargeType,omitnil,omitempty" name:"InstanceChargeType"` // 是否自动使用代金券: - //
  • 0:否 - //
  • 1:是 + //
  • 0:否
  • + //
  • 1:是
  • // 默认值:0 AutoVoucher *uint64 `json:"AutoVoucher,omitnil,omitempty" name:"AutoVoucher"` @@ -1618,8 +1710,8 @@ type CreateReadOnlyDBInstanceRequest struct { VoucherIds []*string `json:"VoucherIds,omitnil,omitempty" name:"VoucherIds"` // 续费标记: - //
  • 0:手动续费 - //
  • 1:自动续费 + //
  • 0:手动续费
  • + //
  • 1:自动续费
  • // 默认值:0 AutoRenewFlag *int64 `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"` @@ -1639,8 +1731,8 @@ type CreateReadOnlyDBInstanceRequest struct { SecurityGroupIds []*string `json:"SecurityGroupIds,omitnil,omitempty" name:"SecurityGroupIds"` // 是否需要支持Ipv6: - //
  • 0:否 - //
  • 1:是 + //
  • 0:否
  • + //
  • 1:是
  • // 默认值:0 NeedSupportIpv6 *uint64 `json:"NeedSupportIpv6,omitnil,omitempty" name:"NeedSupportIpv6"` @@ -1649,6 +1741,9 @@ type CreateReadOnlyDBInstanceRequest struct { // 【废弃】不再需要指定,内核版本号与主实例保持一致 DBVersion *string `json:"DBVersion,omitnil,omitempty" name:"DBVersion"` + + // 专属集群ID + DedicatedClusterId *string `json:"DedicatedClusterId,omitnil,omitempty" name:"DedicatedClusterId"` } func (r *CreateReadOnlyDBInstanceRequest) ToJsonString() string { @@ -1683,6 +1778,7 @@ func (r *CreateReadOnlyDBInstanceRequest) FromJsonString(s string) error { delete(f, "NeedSupportIpv6") delete(f, "Name") delete(f, "DBVersion") + delete(f, "DedicatedClusterId") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateReadOnlyDBInstanceRequest has unknown keys!", "") } @@ -2278,6 +2374,44 @@ type DBNode struct { // 节点所在可用区,例如 ap-guangzhou-1。 Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"` + + // 专属集群ID + // 注意:此字段可能返回 null,表示取不到有效值。 + DedicatedClusterId *string `json:"DedicatedClusterId,omitnil,omitempty" name:"DedicatedClusterId"` +} + +type Database struct { + // 数据库名 + // 注意:此字段可能返回 null,表示取不到有效值。 + DatabaseName *string `json:"DatabaseName,omitnil,omitempty" name:"DatabaseName"` + + // 数据库所有者 + // 注意:此字段可能返回 null,表示取不到有效值。 + DatabaseOwner *string `json:"DatabaseOwner,omitnil,omitempty" name:"DatabaseOwner"` + + // 数据库字符编码 + // 注意:此字段可能返回 null,表示取不到有效值。 + Encoding *string `json:"Encoding,omitnil,omitempty" name:"Encoding"` + + // 数据库排序规则 + // 注意:此字段可能返回 null,表示取不到有效值。 + Collate *string `json:"Collate,omitnil,omitempty" name:"Collate"` + + // 数据库字符分类 + // 注意:此字段可能返回 null,表示取不到有效值。 + Ctype *string `json:"Ctype,omitnil,omitempty" name:"Ctype"` + + // 数据库是否允许连接 + // 注意:此字段可能返回 null,表示取不到有效值。 + AllowConn *bool `json:"AllowConn,omitnil,omitempty" name:"AllowConn"` + + // 数据库最大连接数,-1表示无限制 + // 注意:此字段可能返回 null,表示取不到有效值。 + ConnLimit *int64 `json:"ConnLimit,omitnil,omitempty" name:"ConnLimit"` + + // 数据库权限列表 + // 注意:此字段可能返回 null,表示取不到有效值。 + Privileges *string `json:"Privileges,omitnil,omitempty" name:"Privileges"` } type DatabaseObject struct { @@ -2312,6 +2446,52 @@ type DatabasePrivilege struct { PrivilegeSet []*string `json:"PrivilegeSet,omitnil,omitempty" name:"PrivilegeSet"` } +type DedicatedCluster struct { + // 专属集群ID + // 注意:此字段可能返回 null,表示取不到有效值。 + DedicatedClusterId *string `json:"DedicatedClusterId,omitnil,omitempty" name:"DedicatedClusterId"` + + // 专属集群名称 + // 注意:此字段可能返回 null,表示取不到有效值。 + Name *string `json:"Name,omitnil,omitempty" name:"Name"` + + // 专属集群所在可用区 + // 注意:此字段可能返回 null,表示取不到有效值。 + Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"` + + // 灾备集群 + // 注意:此字段可能返回 null,表示取不到有效值。 + StandbyDedicatedClusterSet []*string `json:"StandbyDedicatedClusterSet,omitnil,omitempty" name:"StandbyDedicatedClusterSet"` + + // 实例数量 + // 注意:此字段可能返回 null,表示取不到有效值。 + InstanceCount *int64 `json:"InstanceCount,omitnil,omitempty" name:"InstanceCount"` + + // Cpu总量 + // 注意:此字段可能返回 null,表示取不到有效值。 + CpuTotal *int64 `json:"CpuTotal,omitnil,omitempty" name:"CpuTotal"` + + // Cpu可用数量 + // 注意:此字段可能返回 null,表示取不到有效值。 + CpuAvailable *int64 `json:"CpuAvailable,omitnil,omitempty" name:"CpuAvailable"` + + // 内存总量 + // 注意:此字段可能返回 null,表示取不到有效值。 + MemTotal *int64 `json:"MemTotal,omitnil,omitempty" name:"MemTotal"` + + // 内存可用量 + // 注意:此字段可能返回 null,表示取不到有效值。 + MemAvailable *int64 `json:"MemAvailable,omitnil,omitempty" name:"MemAvailable"` + + // 磁盘总量 + // 注意:此字段可能返回 null,表示取不到有效值。 + DiskTotal *int64 `json:"DiskTotal,omitnil,omitempty" name:"DiskTotal"` + + // 磁盘可用量 + // 注意:此字段可能返回 null,表示取不到有效值。 + DiskAvailable *int64 `json:"DiskAvailable,omitnil,omitempty" name:"DiskAvailable"` +} + // Predefined struct for user type DeleteAccountRequestParams struct { // 实例ID。 @@ -4166,6 +4346,7 @@ type DescribeDBInstancesRequestParams struct { // db-tag-key:按照标签键过滤,类型为string // db-private-ip: 按照实例私有网络IP过滤,类型为string // db-public-address: 按照实例外网地址过滤,类型为string + // db-dedicated-cluster-id: 按照私有集群Id过滤,类型为string Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"` // 每页显示数量,取值范围为1-100,默认为返回10条。 @@ -4192,6 +4373,7 @@ type DescribeDBInstancesRequest struct { // db-tag-key:按照标签键过滤,类型为string // db-private-ip: 按照实例私有网络IP过滤,类型为string // db-public-address: 按照实例外网地址过滤,类型为string + // db-dedicated-cluster-id: 按照私有集群Id过滤,类型为string Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"` // 每页显示数量,取值范围为1-100,默认为返回10条。 @@ -4674,6 +4856,9 @@ type DescribeDatabasesResponseParams struct { // 数据库总数 TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"` + // 数据库详情列表 + Databases []*Database `json:"Databases,omitnil,omitempty" name:"Databases"` + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` } @@ -4694,6 +4879,65 @@ func (r *DescribeDatabasesResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } +// Predefined struct for user +type DescribeDedicatedClustersRequestParams struct { + // 按照一个或者多个过滤条件进行查询,目前支持的过滤条件有: + // dedicated-cluster-id: 按照专属集群ID筛选,类型为string + Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"` +} + +type DescribeDedicatedClustersRequest struct { + *tchttp.BaseRequest + + // 按照一个或者多个过滤条件进行查询,目前支持的过滤条件有: + // dedicated-cluster-id: 按照专属集群ID筛选,类型为string + Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"` +} + +func (r *DescribeDedicatedClustersRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeDedicatedClustersRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Filters") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeDedicatedClustersRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeDedicatedClustersResponseParams struct { + // 专属集群信息 + DedicatedClusterSet []*DedicatedCluster `json:"DedicatedClusterSet,omitnil,omitempty" name:"DedicatedClusterSet"` + + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type DescribeDedicatedClustersResponse struct { + *tchttp.BaseResponse + Response *DescribeDedicatedClustersResponseParams `json:"Response"` +} + +func (r *DescribeDedicatedClustersResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeDedicatedClustersResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + // Predefined struct for user type DescribeDefaultParametersRequestParams struct { // 数据库版本,大版本号,例如11,12,13 @@ -7734,6 +7978,74 @@ func (r *ModifyDBInstancesProjectResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } +// Predefined struct for user +type ModifyDatabaseOwnerRequestParams struct { + // 实例ID + DBInstanceId *string `json:"DBInstanceId,omitnil,omitempty" name:"DBInstanceId"` + + // 数据库名称 + DatabaseName *string `json:"DatabaseName,omitnil,omitempty" name:"DatabaseName"` + + // 数据库新所有者 + DatabaseOwner *string `json:"DatabaseOwner,omitnil,omitempty" name:"DatabaseOwner"` +} + +type ModifyDatabaseOwnerRequest struct { + *tchttp.BaseRequest + + // 实例ID + DBInstanceId *string `json:"DBInstanceId,omitnil,omitempty" name:"DBInstanceId"` + + // 数据库名称 + DatabaseName *string `json:"DatabaseName,omitnil,omitempty" name:"DatabaseName"` + + // 数据库新所有者 + DatabaseOwner *string `json:"DatabaseOwner,omitnil,omitempty" name:"DatabaseOwner"` +} + +func (r *ModifyDatabaseOwnerRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyDatabaseOwnerRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DBInstanceId") + delete(f, "DatabaseName") + delete(f, "DatabaseOwner") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyDatabaseOwnerRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyDatabaseOwnerResponseParams struct { + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type ModifyDatabaseOwnerResponse struct { + *tchttp.BaseResponse + Response *ModifyDatabaseOwnerResponseParams `json:"Response"` +} + +func (r *ModifyDatabaseOwnerResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyDatabaseOwnerResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + // Predefined struct for user type ModifyParameterTemplateRequestParams struct { // 参数模板ID,用于唯一确认参数模板,不可修改 diff --git a/vendor/modules.txt b/vendor/modules.txt index cf57adb151..b929f64ea5 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1163,7 +1163,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit/v20190319 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.970 ## explicit; go 1.14 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls/v20201016 -# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1008 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1010 ## explicit; go 1.11 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors @@ -1252,7 +1252,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1008 ## explicit; go 1.14 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization/v20210331 -# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.995 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1010 ## explicit; go 1.14 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.859 diff --git a/website/docs/d/postgresql_dedicated_clusters.html.markdown b/website/docs/d/postgresql_dedicated_clusters.html.markdown new file mode 100644 index 0000000000..6a29541432 --- /dev/null +++ b/website/docs/d/postgresql_dedicated_clusters.html.markdown @@ -0,0 +1,51 @@ +--- +subcategory: "TencentDB for PostgreSQL(PostgreSQL)" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_postgresql_dedicated_clusters" +sidebar_current: "docs-tencentcloud-datasource-postgresql_dedicated_clusters" +description: |- + Use this data source to query detailed information of Postgresql dedicated clusters +--- + +# tencentcloud_postgresql_dedicated_clusters + +Use this data source to query detailed information of Postgresql dedicated clusters + +## Example Usage + +### Query all instances + +```hcl +data "tencentcloud_postgresql_dedicated_clusters" "example" {} +``` + +### Query instances by filters + +```hcl +data "tencentcloud_postgresql_dedicated_clusters" "example" { + filters { + name = "dedicated-cluster-id" + values = ["cluster-262n63e8"] + } +} +``` + +## Argument Reference + +The following arguments are supported: + +* `filters` - (Optional, List) Querying based on one or more filtering criteria, the currently supported filtering criteria are: dedicated-cluster-id: filtering by dedicated cluster ID. +* `result_output_file` - (Optional, String) Used to save results. + +The `filters` object supports the following: + +* `name` - (Optional, String) Filter name. +* `values` - (Optional, Set) Filter values. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `dedicated_cluster_set` - Dedicated cluster set info. + + diff --git a/website/docs/r/postgresql_instance.html.markdown b/website/docs/r/postgresql_instance.html.markdown index 9d4763b35d..1c9bf85d46 100644 --- a/website/docs/r/postgresql_instance.html.markdown +++ b/website/docs/r/postgresql_instance.html.markdown @@ -164,6 +164,61 @@ resource "tencentcloud_postgresql_instance" "example" { } ``` +### Create a multi available zone postgresql instance of CDC + +```hcl +variable "availability_zone" { + default = "ap-guangzhou-4" +} + +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} + +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + availability_zone = var.availability_zone + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create postgresql +resource "tencentcloud_postgresql_instance" "example" { + name = "tf-example" + availability_zone = var.availability_zone + charge_type = "POSTPAID_BY_HOUR" + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + db_major_version = "10" + root_user = "root123" + root_password = "Root123$" + charset = "UTF8" + project_id = 0 + memory = 2 + cpu = 1 + storage = 10 + + db_node_set { + role = "Primary" + zone = var.availability_zone + dedicated_cluster_id = "cluster-262n63e8" + } + + db_node_set { + zone = var.availability_zone + dedicated_cluster_id = "cluster-262n63e8" + } + + tags = { + CreateBy = "terraform" + } +} +``` + ### Create pgsql with kms key ```hcl @@ -285,6 +340,7 @@ The `backup_plan` object supports the following: The `db_node_set` object supports the following: * `zone` - (Required, String) Indicates the node available zone. +* `dedicated_cluster_id` - (Optional, String) Dedicated cluster ID. * `role` - (Optional, String) Indicates node type, available values:`Primary`, `Standby`. Default: `Standby`. ## Attributes Reference diff --git a/website/docs/r/postgresql_readonly_instance.html.markdown b/website/docs/r/postgresql_readonly_instance.html.markdown index 37ad0b2b5a..5c0f2210e5 100644 --- a/website/docs/r/postgresql_readonly_instance.html.markdown +++ b/website/docs/r/postgresql_readonly_instance.html.markdown @@ -13,6 +13,8 @@ Use this resource to create postgresql readonly instance. ## Example Usage +### Create postgresql readonly instance + ```hcl variable "availability_zone" { default = "ap-guangzhou-3" @@ -40,7 +42,7 @@ resource "tencentcloud_postgresql_instance" "example" { charge_type = "POSTPAID_BY_HOUR" vpc_id = tencentcloud_vpc.vpc.id subnet_id = tencentcloud_subnet.subnet.id - engine_version = "10.4" + db_major_version = "10" root_user = "root123" root_password = "Root123$" charset = "UTF8" @@ -54,6 +56,7 @@ resource "tencentcloud_postgresql_instance" "example" { } } +# create postgresql readonly group resource "tencentcloud_postgresql_readonly_group" "example" { master_db_instance_id = tencentcloud_postgresql_instance.example.id name = "tf_ro_group" @@ -78,13 +81,115 @@ resource "tencentcloud_security_group" "example" { } } +# create postgresql readonly instance +resource "tencentcloud_postgresql_readonly_instance" "example" { + read_only_group_id = tencentcloud_postgresql_readonly_group.example.id + master_db_instance_id = tencentcloud_postgresql_instance.example.id + zone = var.availability_zone + name = "example" + auto_renew_flag = 0 + db_version = "10.23" + instance_charge_type = "POSTPAID_BY_HOUR" + memory = 4 + cpu = 2 + storage = 250 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + need_support_ipv6 = 0 + project_id = 0 + security_groups_ids = [ + tencentcloud_security_group.example.id, + ] +} +``` + +### Create postgresql readonly instance of CDC + +```hcl +variable "availability_zone" { + default = "ap-guangzhou-4" +} + +# create vpc +resource "tencentcloud_vpc" "vpc" { + name = "vpc" + cidr_block = "10.0.0.0/16" +} + +# create vpc subnet +resource "tencentcloud_subnet" "subnet" { + availability_zone = var.availability_zone + name = "subnet" + vpc_id = tencentcloud_vpc.vpc.id + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +# create postgresql +resource "tencentcloud_postgresql_instance" "example" { + name = "tf-example" + availability_zone = var.availability_zone + charge_type = "POSTPAID_BY_HOUR" + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + db_major_version = "10" + root_user = "root123" + root_password = "Root123$" + charset = "UTF8" + project_id = 0 + memory = 2 + cpu = 1 + storage = 10 + + db_node_set { + role = "Primary" + zone = var.availability_zone + dedicated_cluster_id = "cluster-262n63e8" + } + + db_node_set { + zone = var.availability_zone + dedicated_cluster_id = "cluster-262n63e8" + } + + tags = { + CreateBy = "terraform" + } +} + +# create postgresql readonly group +resource "tencentcloud_postgresql_readonly_group" "example" { + master_db_instance_id = tencentcloud_postgresql_instance.example.id + name = "tf_ro_group" + project_id = 0 + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + replay_lag_eliminate = 1 + replay_latency_eliminate = 1 + max_replay_lag = 100 + max_replay_latency = 512 + min_delay_eliminate_reserve = 1 +} + +# create security group +resource "tencentcloud_security_group" "example" { + name = "tf-example" + description = "sg desc." + project_id = 0 + + tags = { + CreateBy = "terraform" + } +} + +# create postgresql readonly instance resource "tencentcloud_postgresql_readonly_instance" "example" { read_only_group_id = tencentcloud_postgresql_readonly_group.example.id master_db_instance_id = tencentcloud_postgresql_instance.example.id zone = var.availability_zone name = "example" auto_renew_flag = 0 - db_version = "10.4" + db_version = "10.23" instance_charge_type = "POSTPAID_BY_HOUR" memory = 4 cpu = 2 @@ -93,6 +198,7 @@ resource "tencentcloud_postgresql_readonly_instance" "example" { subnet_id = tencentcloud_subnet.subnet.id need_support_ipv6 = 0 project_id = 0 + dedicated_cluster_id = "cluster-262n63e8" security_groups_ids = [ tencentcloud_security_group.example.id, ] @@ -116,6 +222,7 @@ The following arguments are supported: * `auto_renew_flag` - (Optional, Int) Auto renew flag, `1` for enabled. NOTES: Only support prepaid instance. * `auto_voucher` - (Optional, Int) Whether to use voucher, `1` for enabled. * `cpu` - (Optional, Int) Number of CPU cores. Allowed value must be equal `cpu` that data source `tencentcloud_postgresql_specinfos` provides. +* `dedicated_cluster_id` - (Optional, String) Dedicated cluster ID. * `instance_charge_type` - (Optional, String, ForceNew) instance billing mode. Valid values: PREPAID (monthly subscription), POSTPAID_BY_HOUR (pay-as-you-go). * `need_support_ipv6` - (Optional, Int, ForceNew) Whether to support IPv6 address access. Valid values: 1 (yes), 0 (no). * `period` - (Optional, Int) Specify Prepaid period in month. Default `1`. Values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `24`, `36`. @@ -138,6 +245,6 @@ In addition to all arguments above, the following attributes are exported: postgresql readonly instance can be imported using the id, e.g. ``` -$ terraform import tencentcloud_postgresql_readonly_instance.example instance_id +$ terraform import tencentcloud_postgresql_readonly_instance.example pgro-gih5m0ke ``` diff --git a/website/tencentcloud.erb b/website/tencentcloud.erb index cd905a6811..567fbfd2fc 100644 --- a/website/tencentcloud.erb +++ b/website/tencentcloud.erb @@ -5781,6 +5781,9 @@
  • tencentcloud_postgresql_db_instance_versions
  • +
  • + tencentcloud_postgresql_dedicated_clusters +
  • tencentcloud_postgresql_default_parameters