From 022455e5237e73a0f7c7e1e9649c8cb776f40765 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Fri, 14 Jun 2024 11:07:40 +0800 Subject: [PATCH 1/4] fix pgsql --- .../resource_tc_postgresql_instance.go | 12 +--- .../service_tencentcloud_postgresql.go | 57 +++++++++++++++++++ 2 files changed, 60 insertions(+), 9 deletions(-) diff --git a/tencentcloud/services/postgresql/resource_tc_postgresql_instance.go b/tencentcloud/services/postgresql/resource_tc_postgresql_instance.go index 729857ac4d..79a52e563e 100644 --- a/tencentcloud/services/postgresql/resource_tc_postgresql_instance.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_instance.go @@ -10,7 +10,6 @@ import ( "time" tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" - svccrs "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/crs" svctag "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tag" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" @@ -970,19 +969,16 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i } if d.HasChange("security_groups") { - - // Only redis service support modify Generic DB instance security groups - service := svccrs.NewRedisService(meta.(tccommon.ProviderMeta).GetAPIV3Conn()) ids := d.Get("security_groups").(*schema.Set).List() var sgIds []*string for _, id := range ids { sgIds = append(sgIds, helper.String(id.(string))) } - err := service.ModifyDBInstanceSecurityGroups(ctx, "postgres", d.Id(), sgIds) + + err := postgresqlService.ModifyDBInstanceSecurityGroupsById(ctx, d.Id(), sgIds) if err != nil { return err } - } if d.HasChange("backup_plan") { @@ -1258,9 +1254,7 @@ func resourceTencentCloudPostgresqlInstanceRead(d *schema.ResourceData, meta int _ = d.Set("public_access_switch", public_access_switch) // security groups - // Only redis service support modify Generic DB instance security groups - redisService := svccrs.NewRedisService(meta.(tccommon.ProviderMeta).GetAPIV3Conn()) - sg, err := redisService.DescribeDBSecurityGroups(ctx, "postgres", d.Id()) + sg, err := postgresqlService.DescribeDBInstanceSecurityGroupsById(ctx, d.Id()) if err != nil { return err } diff --git a/tencentcloud/services/postgresql/service_tencentcloud_postgresql.go b/tencentcloud/services/postgresql/service_tencentcloud_postgresql.go index 7fde1882ef..ba557b3e59 100644 --- a/tencentcloud/services/postgresql/service_tencentcloud_postgresql.go +++ b/tencentcloud/services/postgresql/service_tencentcloud_postgresql.go @@ -459,6 +459,63 @@ func (me *PostgresqlService) DescribePostgresqlInstanceById(ctx context.Context, return } +func (me *PostgresqlService) DescribeDBInstanceSecurityGroupsById(ctx context.Context, instanceId string) (sg []string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := postgresql.NewDescribeDBInstanceSecurityGroupsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + request.DBInstanceId = &instanceId + ratelimit.Check(request.GetAction()) + var iacExtInfo connectivity.IacExtInfo + iacExtInfo.InstanceId = instanceId + response, err := me.client.UsePostgresqlClient(iacExtInfo).DescribeDBInstanceSecurityGroups(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + return + } + + groups := response.Response.SecurityGroupSet + if len(groups) > 0 { + for i := range groups { + sg = append(sg, *groups[i].SecurityGroupId) + } + } + return +} + +func (me *PostgresqlService) ModifyDBInstanceSecurityGroupsById(ctx context.Context, instanceId string, securityGroupIds []*string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := postgresql.NewModifyDBInstanceSecurityGroupsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + request.DBInstanceId = &instanceId + request.SecurityGroupIdSet = securityGroupIds + ratelimit.Check(request.GetAction()) + var iacExtInfo connectivity.IacExtInfo + iacExtInfo.InstanceId = instanceId + response, err := me.client.UsePostgresqlClient(iacExtInfo).ModifyDBInstanceSecurityGroups(request) + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + + errRet = err + return +} + func (me *PostgresqlService) DescribePostgresqlInstanceHAConfigById(ctx context.Context, instanceId string) (haConfig *postgresql.DescribeDBInstanceHAConfigResponseParams, errRet error) { logId := tccommon.GetLogId(ctx) request := postgresql.NewDescribeDBInstanceHAConfigRequest() From e43fbdb25f7dbe9011b1de7eb2859a4c511b137f Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Fri, 14 Jun 2024 11:10:26 +0800 Subject: [PATCH 2/4] fix pgsql --- .changelog/2682.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/2682.txt diff --git a/.changelog/2682.txt b/.changelog/2682.txt new file mode 100644 index 0000000000..dd9b062435 --- /dev/null +++ b/.changelog/2682.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_postgresql_instance: Fix the issue of failed instance creation read +``` \ No newline at end of file From 41fdf82f4e44b3753de42d3557bb408f83c68edf Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Fri, 14 Jun 2024 20:25:07 +0800 Subject: [PATCH 3/4] add --- .../postgresql/resource_tc_postgresql_instance_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tencentcloud/services/postgresql/resource_tc_postgresql_instance_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_instance_test.go index b1a481ec33..a3cbf4b1b9 100644 --- a/tencentcloud/services/postgresql/resource_tc_postgresql_instance_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_instance_test.go @@ -652,7 +652,7 @@ resource "tencentcloud_postgresql_instance" "test" { vpc_id = tencentcloud_vpc.vpc.id subnet_id = tencentcloud_subnet.subnet.id engine_version = "13.3" - root_username = "tf-user" + root_user = "tf-user" root_password = "t1qaA2k1wgvfa3?ZZZ" charset = "LATIN1" memory = 4 @@ -688,7 +688,7 @@ resource "tencentcloud_postgresql_instance" "test" { vpc_id = tencentcloud_vpc.vpc.id subnet_id = tencentcloud_subnet.subnet.id engine_version = "13.3" - root_username = "tf-user" + root_user = "tf-user" root_password = "t1qaA2k1wgvfa3?ZZZ3daw" charset = "LATIN1" memory = 8 From c240427b7a22ea5637c1e3ea463899609af91121 Mon Sep 17 00:00:00 2001 From: andrewjiang <104899514+andrew-tx@users.noreply.github.com> Date: Fri, 14 Jun 2024 20:49:49 +0800 Subject: [PATCH 4/4] Update resource_tc_postgresql_instance_test.go --- .../postgresql/resource_tc_postgresql_instance_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tencentcloud/services/postgresql/resource_tc_postgresql_instance_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_instance_test.go index a3cbf4b1b9..e84657deb7 100644 --- a/tencentcloud/services/postgresql/resource_tc_postgresql_instance_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_instance_test.go @@ -652,7 +652,7 @@ resource "tencentcloud_postgresql_instance" "test" { vpc_id = tencentcloud_vpc.vpc.id subnet_id = tencentcloud_subnet.subnet.id engine_version = "13.3" - root_user = "tf-user" + root_user = "tf_user" root_password = "t1qaA2k1wgvfa3?ZZZ" charset = "LATIN1" memory = 4 @@ -688,7 +688,7 @@ resource "tencentcloud_postgresql_instance" "test" { vpc_id = tencentcloud_vpc.vpc.id subnet_id = tencentcloud_subnet.subnet.id engine_version = "13.3" - root_user = "tf-user" + root_user = "tf_user" root_password = "t1qaA2k1wgvfa3?ZZZ3daw" charset = "LATIN1" memory = 8