Skip to content

Commit 33c85d2

Browse files
author
mikatong
committed
pg support apply template
1 parent d7a9992 commit 33c85d2

8 files changed

+222
-0
lines changed

.changelog/2867.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:new-resource
2+
tencentcloud_postgresql_apply_parameter_template_operation
3+
```

tencentcloud/provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1504,6 +1504,7 @@ func Provider() *schema.Provider {
15041504
"tencentcloud_postgresql_instance_ha_config": postgresql.ResourceTencentCloudPostgresqlInstanceHAConfig(),
15051505
"tencentcloud_postgresql_account": postgresql.ResourceTencentCloudPostgresqlAccount(),
15061506
"tencentcloud_postgresql_account_privileges_operation": postgresql.ResourceTencentCloudPostgresqlAccountPrivilegesOperation(),
1507+
"tencentcloud_postgresql_apply_parameter_template_operation": postgresql.ResourceTencentCloudPostgresqlApplyParameterTemplateOperation(),
15071508
"tencentcloud_sqlserver_instance": sqlserver.ResourceTencentCloudSqlserverInstance(),
15081509
"tencentcloud_sqlserver_db": sqlserver.ResourceTencentCloudSqlserverDB(),
15091510
"tencentcloud_sqlserver_account": sqlserver.ResourceTencentCloudSqlserverAccount(),

tencentcloud/provider.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -899,6 +899,7 @@ TencentDB for PostgreSQL(PostgreSQL)
899899
tencentcloud_postgresql_base_backup
900900
tencentcloud_postgresql_instance_ha_config
901901
tencentcloud_postgresql_account
902+
tencentcloud_postgresql_apply_parameter_template_operation
902903

903904
TencentDB for Redis(crs)
904905
Data Source
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
package postgresql
2+
3+
import (
4+
"context"
5+
6+
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
7+
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10+
11+
postgres "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312"
12+
)
13+
14+
func ResourceTencentCloudPostgresqlApplyParameterTemplateOperation() *schema.Resource {
15+
return &schema.Resource{
16+
Create: resourceTencentCloudPostgresqlApplyParameterTemplateOperationCreate,
17+
Read: resourceTencentCloudPostgresqlApplyParameterTemplateOperationRead,
18+
Delete: resourceTencentCloudPostgresqlApplyParameterTemplateOperationDelete,
19+
Schema: map[string]*schema.Schema{
20+
"db_instance_id": {
21+
Required: true,
22+
ForceNew: true,
23+
Type: schema.TypeString,
24+
Description: "Instance ID.",
25+
},
26+
"template_id": {
27+
Required: true,
28+
ForceNew: true,
29+
Type: schema.TypeString,
30+
Description: "Template ID.",
31+
},
32+
},
33+
}
34+
}
35+
36+
func resourceTencentCloudPostgresqlApplyParameterTemplateOperationCreate(d *schema.ResourceData, meta interface{}) error {
37+
defer tccommon.LogElapsed("resource.tencentcloud_postgresql_apply_parameter_template_operation.create")()
38+
defer tccommon.InconsistentCheck(d, meta)()
39+
40+
logId := tccommon.GetLogId(tccommon.ContextNil)
41+
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
42+
43+
service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
44+
45+
var (
46+
err, innerErr error
47+
dbParmas, diffParmas map[string]string
48+
templateAttributes *postgres.DescribeParameterTemplateAttributesResponseParams
49+
)
50+
dbInstanceId := d.Get("db_instance_id").(string)
51+
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
52+
dbParmas, innerErr = service.DescribePgParams(ctx, dbInstanceId)
53+
if innerErr != nil {
54+
return tccommon.RetryError(innerErr)
55+
}
56+
57+
return nil
58+
})
59+
60+
templateId := d.Get("template_id").(string)
61+
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
62+
templateAttributes, innerErr = service.DescribePostgresqlParameterTemplateById(ctx, templateId)
63+
if innerErr != nil {
64+
return tccommon.RetryError(innerErr)
65+
}
66+
67+
return nil
68+
})
69+
70+
if err != nil {
71+
return err
72+
}
73+
74+
diffParmas = make(map[string]string)
75+
if templateAttributes != nil {
76+
for _, param := range templateAttributes.ParamInfoSet {
77+
name := param.Name
78+
value := param.CurrentValue
79+
if name != nil && value != nil && dbParmas[*name] != *value {
80+
diffParmas[*name] = *value
81+
}
82+
}
83+
}
84+
85+
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
86+
innerErr = service.ModifyPgParams(ctx, dbInstanceId, diffParmas)
87+
if innerErr != nil {
88+
return tccommon.RetryError(innerErr)
89+
}
90+
91+
return nil
92+
})
93+
94+
if err != nil {
95+
return err
96+
}
97+
98+
err = service.CheckDBInstanceStatus(ctx, dbInstanceId)
99+
if err != nil {
100+
return err
101+
}
102+
103+
d.SetId(dbInstanceId + tccommon.FILED_SP + templateId)
104+
105+
return resourceTencentCloudPostgresqlApplyParameterTemplateOperationRead(d, meta)
106+
}
107+
108+
func resourceTencentCloudPostgresqlApplyParameterTemplateOperationRead(d *schema.ResourceData, meta interface{}) error {
109+
defer tccommon.LogElapsed("resource.tencentcloud_postgresql_apply_parameter_template_operation.read")()
110+
defer tccommon.InconsistentCheck(d, meta)()
111+
112+
return nil
113+
}
114+
115+
func resourceTencentCloudPostgresqlApplyParameterTemplateOperationDelete(d *schema.ResourceData, meta interface{}) error {
116+
defer tccommon.LogElapsed("resource.tencentcloud_postgresql_apply_parameter_template_operation.delete")()
117+
defer tccommon.InconsistentCheck(d, meta)()
118+
119+
return nil
120+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
Provides a resource to apply parameter template
2+
3+
Example Usage
4+
5+
```hcl
6+
resource tencentcloud_postgresql_apply_parameter_template_operation "apply_parameter_template_operation" {
7+
db_instance_id = "postgres-xxxxxx"
8+
template_id = "xxxxxx"
9+
}
10+
```
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package postgresql_test
2+
3+
import (
4+
"testing"
5+
6+
tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest"
7+
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
9+
)
10+
11+
func TestAccTencentCloudPostgresqlApplyParameterTemplateOperationResource_basic(t *testing.T) {
12+
resource.Test(t, resource.TestCase{
13+
PreCheck: func() {
14+
tcacctest.AccPreCheck(t)
15+
},
16+
Providers: tcacctest.AccProviders,
17+
Steps: []resource.TestStep{
18+
{
19+
Config: testPostgresqlApplyParameterTemplateOperation,
20+
Check: resource.ComposeTestCheckFunc(
21+
resource.TestCheckResourceAttrSet("tencentcloud_postgresql_apply_parameter_template_operation.apply_parameter_template_operation", "id"),
22+
resource.TestCheckResourceAttrSet("tencentcloud_postgresql_apply_parameter_template_operation.apply_parameter_template_operation", "db_instance_id"),
23+
resource.TestCheckResourceAttrSet("tencentcloud_postgresql_apply_parameter_template_operation.apply_parameter_template_operation", "template_id"),
24+
),
25+
},
26+
},
27+
})
28+
}
29+
30+
const testPostgresqlApplyParameterTemplateOperation = testAccPostgresqlInstance + `
31+
resource "tencentcloud_postgresql_parameter_template" "parameter_template" {
32+
template_name = "tf_test_apply"
33+
db_major_version = "13"
34+
db_engine = "postgresql"
35+
template_description = "test"
36+
37+
modify_param_entry_set {
38+
name = "vacuum_freeze_table_age"
39+
expected_value = "160000000"
40+
}
41+
}
42+
43+
resource tencentcloud_postgresql_apply_parameter_template_operation "apply_parameter_template_operation" {
44+
db_instance_id = tencentcloud_postgresql_instance.test.id
45+
template_id = tencentcloud_postgresql_parameter_template.parameter_template.id
46+
}
47+
`
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
subcategory: "TencentDB for PostgreSQL(PostgreSQL)"
3+
layout: "tencentcloud"
4+
page_title: "TencentCloud: tencentcloud_postgresql_apply_parameter_template_operation"
5+
sidebar_current: "docs-tencentcloud-resource-postgresql_apply_parameter_template_operation"
6+
description: |-
7+
Provides a resource to apply parameter template
8+
---
9+
10+
# tencentcloud_postgresql_apply_parameter_template_operation
11+
12+
Provides a resource to apply parameter template
13+
14+
## Example Usage
15+
16+
```hcl
17+
resource tencentcloud_postgresql_apply_parameter_template_operation "apply_parameter_template_operation" {
18+
db_instance_id = "postgres-xxxxxx"
19+
template_id = "xxxxxx"
20+
}
21+
```
22+
23+
## Argument Reference
24+
25+
The following arguments are supported:
26+
27+
* `db_instance_id` - (Required, String, ForceNew) Instance ID.
28+
* `template_id` - (Required, String, ForceNew) Template ID.
29+
30+
## Attributes Reference
31+
32+
In addition to all arguments above, the following attributes are exported:
33+
34+
* `id` - ID of the resource.
35+
36+
37+

website/tencentcloud.erb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5828,6 +5828,9 @@
58285828
<li>
58295829
<a href="/docs/providers/tencentcloud/r/postgresql_account.html">tencentcloud_postgresql_account</a>
58305830
</li>
5831+
<li>
5832+
<a href="/docs/providers/tencentcloud/r/postgresql_apply_parameter_template_operation.html">tencentcloud_postgresql_apply_parameter_template_operation</a>
5833+
</li>
58315834
<li>
58325835
<a href="/docs/providers/tencentcloud/r/postgresql_backup_download_restriction_config.html">tencentcloud_postgresql_backup_download_restriction_config</a>
58335836
</li>

0 commit comments

Comments
 (0)