Skip to content

Commit 0591f18

Browse files
committed
add
1 parent 60756ef commit 0591f18

File tree

3 files changed

+77
-17
lines changed

3 files changed

+77
-17
lines changed

tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -397,8 +397,17 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceRead(d *schema.ResourceData,
397397
_ = d.Set("subnet_id", instance.SubnetId)
398398
_ = d.Set("name", instance.DBInstanceName)
399399
_ = d.Set("need_support_ipv6", instance.SupportIpv6)
400-
// set readonly group when DescribeReadOnlyGroups ready for filter by the readonly group id
401-
// _ = d.Set("read_only_group_id", readonlyGroup.Id)
400+
401+
// read only group
402+
masterDBInstanceId := instance.MasterDBInstanceId
403+
readOnlyGroupId, err := postgresqlService.DescribeReadOnlyGroupsById(ctx, *masterDBInstanceId, d.Id())
404+
if err != nil {
405+
return err
406+
}
407+
408+
if readOnlyGroupId != nil {
409+
_ = d.Set("read_only_group_id", readOnlyGroupId)
410+
}
402411

403412
// security groups
404413
sg, err := postgresqlService.DescribeDBInstanceSecurityGroupsById(ctx, d.Id())

tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance_test.go

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package postgresql_test
33
import (
44
"testing"
55

6+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest"
67
tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest"
78

89
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
@@ -15,17 +16,12 @@ func TestAccTencentCloudPostgresqlReadonlyInstanceResource_basic(t *testing.T) {
1516
// t.Parallel()
1617
resource.Test(t, resource.TestCase{
1718
PreCheck: func() {
18-
tcacctest.AccStepSetRegion(t, "ap-guangzhou")
19-
tcacctest.AccPreCheck(t)
19+
acctest.AccPreCheck(t)
2020
},
2121
Providers: tcacctest.AccProviders,
2222
Steps: []resource.TestStep{
2323
{
24-
PreConfig: func() {
25-
tcacctest.AccStepSetRegion(t, "ap-guangzhou")
26-
tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY)
27-
},
28-
Config: testAccPostgresqlReadonlyInstanceInstance_basic_without_rogroup,
24+
Config: testAccPostgresqlReadonlyInstanceInstance,
2925
Check: resource.ComposeTestCheckFunc(
3026
resource.TestCheckResourceAttrSet(testPostgresqlReadonlyInstanceResourceKey, "id"),
3127
resource.TestCheckResourceAttrSet(testPostgresqlReadonlyInstanceResourceKey, "master_db_instance_id"),
@@ -46,11 +42,7 @@ func TestAccTencentCloudPostgresqlReadonlyInstanceResource_basic(t *testing.T) {
4642
),
4743
},
4844
{
49-
PreConfig: func() {
50-
tcacctest.AccStepSetRegion(t, "ap-guangzhou")
51-
tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY)
52-
},
53-
Config: testAccPostgresqlReadonlyInstanceInstance_basic_update_rogroup,
45+
Config: testAccPostgresqlReadonlyInstanceInstanceUpdate,
5446
Check: resource.ComposeTestCheckFunc(
5547
resource.TestCheckResourceAttrSet(testPostgresqlReadonlyInstanceResourceKey, "id"),
5648
resource.TestCheckResourceAttrSet(testPostgresqlReadonlyInstanceResourceKey, "master_db_instance_id"),
@@ -74,7 +66,7 @@ func TestAccTencentCloudPostgresqlReadonlyInstanceResource_basic(t *testing.T) {
7466
})
7567
}
7668

77-
const testAccPostgresqlReadonlyInstanceInstance_basic_without_rogroup string = `
69+
const testAccPostgresqlReadonlyInstanceInstance string = `
7870
variable "availability_zone" {
7971
default = "ap-guangzhou-3"
8072
}
@@ -153,7 +145,7 @@ resource "tencentcloud_postgresql_readonly_instance" "example" {
153145
}
154146
`
155147

156-
const testAccPostgresqlReadonlyInstanceInstance_basic_update_rogroup string = `
148+
const testAccPostgresqlReadonlyInstanceInstanceUpdate string = `
157149
variable "availability_zone" {
158150
default = "ap-guangzhou-3"
159151
}
@@ -194,7 +186,7 @@ resource "tencentcloud_postgresql_instance" "example" {
194186
}
195187
}
196188
197-
resource "tencentcloud_postgresql_readonly_group" "example_new" {
189+
resource "tencentcloud_postgresql_readonly_group" "example" {
198190
master_db_instance_id = tencentcloud_postgresql_instance.example.id
199191
name = "tf_ro_group"
200192
project_id = 0
@@ -207,6 +199,19 @@ resource "tencentcloud_postgresql_readonly_group" "example_new" {
207199
min_delay_eliminate_reserve = 1
208200
}
209201
202+
resource "tencentcloud_postgresql_readonly_group" "example_new" {
203+
master_db_instance_id = tencentcloud_postgresql_instance.example.id
204+
name = "tf_ro_group_new"
205+
project_id = 0
206+
vpc_id = tencentcloud_vpc.vpc.id
207+
subnet_id = tencentcloud_subnet.subnet.id
208+
replay_lag_eliminate = 1
209+
replay_latency_eliminate = 1
210+
max_replay_lag = 100
211+
max_replay_latency = 512
212+
min_delay_eliminate_reserve = 1
213+
}
214+
210215
resource "tencentcloud_postgresql_readonly_instance" "example" {
211216
read_only_group_id = tencentcloud_postgresql_readonly_group.example_new.id
212217
master_db_instance_id = tencentcloud_postgresql_instance.example.id

tencentcloud/services/postgresql/service_tencentcloud_postgresql.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,52 @@ func (me *PostgresqlService) DescribeDBInstanceSecurityGroupsById(ctx context.Co
492492
return
493493
}
494494

495+
func (me *PostgresqlService) DescribeReadOnlyGroupsById(ctx context.Context, masterDBInstanceId string, instanceId string) (readOnlyGroupId *string, errRet error) {
496+
logId := tccommon.GetLogId(ctx)
497+
request := postgresql.NewDescribeReadOnlyGroupsRequest()
498+
defer func() {
499+
if errRet != nil {
500+
log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error())
501+
}
502+
}()
503+
504+
request.Filters = []*postgresql.Filter{
505+
{
506+
Name: helper.String("db-master-instance-id"),
507+
Values: []*string{
508+
helper.String(masterDBInstanceId),
509+
},
510+
},
511+
}
512+
513+
response, err := me.client.UsePostgresqlClient().DescribeReadOnlyGroups(request)
514+
if err != nil {
515+
errRet = err
516+
return
517+
}
518+
519+
if response == nil || response.Response == nil {
520+
errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction())
521+
return
522+
}
523+
524+
roGroupList := response.Response.ReadOnlyGroupList
525+
if len(roGroupList) > 0 {
526+
for _, roGroup := range roGroupList {
527+
roDBInstanceList := roGroup.ReadOnlyDBInstanceList
528+
for _, roDBInstance := range roDBInstanceList {
529+
roDBInstanceId := *roDBInstance.DBInstanceId
530+
if roDBInstanceId == instanceId {
531+
readOnlyGroupId = roGroup.ReadOnlyGroupId
532+
return
533+
}
534+
}
535+
}
536+
}
537+
538+
return
539+
}
540+
495541
func (me *PostgresqlService) ModifyDBInstanceSecurityGroupsById(ctx context.Context, instanceId string, securityGroupIds []*string) (errRet error) {
496542
logId := tccommon.GetLogId(ctx)
497543
request := postgresql.NewModifyDBInstanceSecurityGroupsRequest()

0 commit comments

Comments
 (0)