From e67710a4020c844faa99d9fa516caae8f90886d5 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Tue, 17 Jun 2025 10:35:39 +0800 Subject: [PATCH 1/3] add --- .../resource_tc_postgresql_clone_db_instance.md | 10 +++++----- .../docs/r/postgresql_clone_db_instance.html.markdown | 10 ++++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/tencentcloud/services/postgresql/resource_tc_postgresql_clone_db_instance.md b/tencentcloud/services/postgresql/resource_tc_postgresql_clone_db_instance.md index 8c4eedd072..9436ef0a38 100644 --- a/tencentcloud/services/postgresql/resource_tc_postgresql_clone_db_instance.md +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_clone_db_instance.md @@ -2,7 +2,7 @@ Provides a resource to create a postgresql clone db instance Example Usage -Clone db instance by `recovery_target_time` +Clone db instance by recovery_target_time ```hcl resource "tencentcloud_postgresql_clone_db_instance" "example" { @@ -30,12 +30,12 @@ resource "tencentcloud_postgresql_clone_db_instance" "example" { tag_list { tag_key = "createBy" - tag_value = "terraform" + tag_value = "Terraform" } } ``` -Clone db instance by `backup_set_id` +Clone db instance by backup_set_id ```hcl data "tencentcloud_postgresql_base_backups" "base_backups" { @@ -73,7 +73,7 @@ resource "tencentcloud_postgresql_clone_db_instance" "example" { tag_list { tag_key = "createBy" - tag_value = "terraform" + tag_value = "Terraform" } } ``` @@ -108,7 +108,7 @@ resource "tencentcloud_postgresql_clone_db_instance" "example" { tag_list { tag_key = "createBy" - tag_value = "terraform" + tag_value = "Terraform" } } ``` diff --git a/website/docs/r/postgresql_clone_db_instance.html.markdown b/website/docs/r/postgresql_clone_db_instance.html.markdown index 0ad6e9f8ea..ae984ef6bf 100644 --- a/website/docs/r/postgresql_clone_db_instance.html.markdown +++ b/website/docs/r/postgresql_clone_db_instance.html.markdown @@ -13,6 +13,8 @@ Provides a resource to create a postgresql clone db instance ## Example Usage +### Clone db instance by recovery_target_time + ```hcl resource "tencentcloud_postgresql_clone_db_instance" "example" { db_instance_id = "postgres-evsqpyap" @@ -39,12 +41,12 @@ resource "tencentcloud_postgresql_clone_db_instance" "example" { tag_list { tag_key = "createBy" - tag_value = "terraform" + tag_value = "Terraform" } } ``` - +### Clone db instance by backup_set_id ```hcl data "tencentcloud_postgresql_base_backups" "base_backups" { @@ -82,7 +84,7 @@ resource "tencentcloud_postgresql_clone_db_instance" "example" { tag_list { tag_key = "createBy" - tag_value = "terraform" + tag_value = "Terraform" } } ``` @@ -117,7 +119,7 @@ resource "tencentcloud_postgresql_clone_db_instance" "example" { tag_list { tag_key = "createBy" - tag_value = "terraform" + tag_value = "Terraform" } } ``` From 8fa36043e1133e0be701fde6a0eca0ef4f98acb8 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Tue, 17 Jun 2025 14:08:44 +0800 Subject: [PATCH 2/3] add --- ...esource_tc_postgresql_clone_db_instance.go | 40 ++++++++++++++----- ...postgresql_clone_db_instance.html.markdown | 10 ++--- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/tencentcloud/services/postgresql/resource_tc_postgresql_clone_db_instance.go b/tencentcloud/services/postgresql/resource_tc_postgresql_clone_db_instance.go index 6d80716f64..f817252477 100644 --- a/tencentcloud/services/postgresql/resource_tc_postgresql_clone_db_instance.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_clone_db_instance.go @@ -1,4 +1,3 @@ -// Code generated by iacg; DO NOT EDIT. package postgresql import ( @@ -110,11 +109,13 @@ func ResourceTencentCloudPostgresqlCloneDbInstance() *schema.Resource { "tag_key": { Type: schema.TypeString, Required: true, + ForceNew: true, Description: "Tag key.", }, "tag_value": { Type: schema.TypeString, Required: true, + ForceNew: true, Description: "Tag value.", }, }, @@ -131,16 +132,19 @@ func ResourceTencentCloudPostgresqlCloneDbInstance() *schema.Resource { "role": { Type: schema.TypeString, Required: true, + ForceNew: true, Description: "Node type. Valid values:\n`Primary`;\n`Standby`.", }, "zone": { Type: schema.TypeString, Required: true, + ForceNew: true, Description: "AZ where the node resides, such as ap-guangzhou-1.", }, "dedicated_cluster_id": { Type: schema.TypeString, Optional: true, + ForceNew: true, Description: "Dedicated cluster ID.", }, }, @@ -182,14 +186,9 @@ func resourceTencentCloudPostgresqlCloneDbInstanceCreate(d *schema.ResourceData, defer tccommon.LogElapsed("resource.tencentcloud_postgresql_clone_db_instance.create")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - - ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - - var ( - dBInstanceId string - ) var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) request = postgresv20170312.NewCloneDBInstanceRequest() response = postgresv20170312.NewCloneDBInstanceResponse() ) @@ -249,9 +248,11 @@ func resourceTencentCloudPostgresqlCloneDbInstanceCreate(d *schema.ResourceData, if v, ok := tagListMap["tag_key"]; ok { tag.TagKey = helper.String(v.(string)) } + if v, ok := tagListMap["tag_value"]; ok { tag.TagValue = helper.String(v.(string)) } + request.TagList = append(request.TagList, &tag) } } @@ -263,12 +264,15 @@ func resourceTencentCloudPostgresqlCloneDbInstanceCreate(d *schema.ResourceData, if v, ok := dBNodeSetMap["role"]; ok { dBNode.Role = helper.String(v.(string)) } + if v, ok := dBNodeSetMap["zone"]; ok { dBNode.Zone = helper.String(v.(string)) } + if v, ok := dBNodeSetMap["dedicated_cluster_id"]; ok { dBNode.DedicatedClusterId = helper.String(v.(string)) } + request.DBNodeSet = append(request.DBNodeSet, &dBNode) } } @@ -296,16 +300,26 @@ func resourceTencentCloudPostgresqlCloneDbInstanceCreate(d *schema.ResourceData, } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } + + if result == nil || result.Response == nil { + return resource.NonRetryableError(fmt.Errorf("Create postgresql clone db instance failed, Response is nil.")) + } + response = result return nil }) + if err != nil { log.Printf("[CRITAL]%s create postgresql clone db instance failed, reason:%+v", logId, err) return err } - dBInstanceId = *response.Response.DBInstanceId + if response.Response.DBInstanceId == nil { + return fmt.Errorf("DBInstanceId is nil.") + } + // wait + dBInstanceId := *response.Response.DBInstanceId if _, err := (&resource.StateChangeConf{ Delay: 10 * time.Second, MinTimeout: 3 * time.Second, @@ -316,8 +330,8 @@ func resourceTencentCloudPostgresqlCloneDbInstanceCreate(d *schema.ResourceData, }).WaitForStateContext(ctx); err != nil { return err } - d.SetId(dBInstanceId) + d.SetId(dBInstanceId) return resourceTencentCloudPostgresqlCloneDbInstanceRead(d, meta) } @@ -342,23 +356,27 @@ func resourcePostgresqlCloneDbInstanceCreateStateRefreshFunc_0_0(ctx context.Con if meta == nil { return nil, "", fmt.Errorf("resource data can not be nil") } + if req == nil { d := tccommon.ResourceDataFromContext(ctx) if d == nil { return nil, "", fmt.Errorf("resource data can not be nil") } + _ = d req = postgresv20170312.NewDescribeDBInstanceAttributeRequest() req.DBInstanceId = helper.String(dBInstanceId) - } + resp, err := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresV20170312Client().DescribeDBInstanceAttributeWithContext(ctx, req) if err != nil { return nil, "", err } + if resp == nil || resp.Response == nil { return nil, "", nil } + state := fmt.Sprintf("%v", *resp.Response.DBInstance.DBInstanceStatus) return resp.Response, state, nil } diff --git a/website/docs/r/postgresql_clone_db_instance.html.markdown b/website/docs/r/postgresql_clone_db_instance.html.markdown index ae984ef6bf..0db77e8479 100644 --- a/website/docs/r/postgresql_clone_db_instance.html.markdown +++ b/website/docs/r/postgresql_clone_db_instance.html.markdown @@ -165,16 +165,16 @@ Default value for the read-only instance: Async. The `db_node_set` object supports the following: -* `role` - (Required, String) Node type. Valid values: +* `role` - (Required, String, ForceNew) Node type. Valid values: `Primary`; `Standby`. -* `zone` - (Required, String) AZ where the node resides, such as ap-guangzhou-1. -* `dedicated_cluster_id` - (Optional, String) Dedicated cluster ID. +* `zone` - (Required, String, ForceNew) AZ where the node resides, such as ap-guangzhou-1. +* `dedicated_cluster_id` - (Optional, String, ForceNew) Dedicated cluster ID. The `tag_list` object supports the following: -* `tag_key` - (Required, String) Tag key. -* `tag_value` - (Required, String) Tag value. +* `tag_key` - (Required, String, ForceNew) Tag key. +* `tag_value` - (Required, String, ForceNew) Tag value. ## Attributes Reference From 0a571691949b4e6061a1ee6c39f4ec3b3769c4cc Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Tue, 17 Jun 2025 14:13:19 +0800 Subject: [PATCH 3/3] add --- .changelog/3414.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/3414.txt diff --git a/.changelog/3414.txt b/.changelog/3414.txt new file mode 100644 index 0000000000..4acdccf428 --- /dev/null +++ b/.changelog/3414.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_postgresql_clone_db_instance: optmize doc and code logic +```