Skip to content

Commit c6a0361

Browse files
authored
feat(postgresql): [120953562]support pgsql time window (#3065)
* feat(postgresql): [120953562]support pgsql time window * feat: add changelog * fix: fmt * fix: Merge branch 'master' into feat/pgsql-time-window * fix: modify config * fix: fmt
1 parent a246915 commit c6a0361

10 files changed

+381
-0
lines changed

.changelog/3065.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_time_window
3+
```

tencentcloud/provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1585,6 +1585,7 @@ func Provider() *schema.Provider {
15851585
"tencentcloud_postgresql_instance_network_access": postgresql.ResourceTencentCloudPostgresqlInstanceNetworkAccess(),
15861586
"tencentcloud_postgresql_parameters": postgresql.ResourceTencentCloudPostgresqlParameters(),
15871587
"tencentcloud_postgresql_instance_ssl_config": postgresql.ResourceTencentCloudPostgresqlInstanceSslConfig(),
1588+
"tencentcloud_postgresql_time_window": postgresql.ResourceTencentCloudPostgresqlTimeWindow(),
15881589
"tencentcloud_sqlserver_instance": sqlserver.ResourceTencentCloudSqlserverInstance(),
15891590
"tencentcloud_sqlserver_db": sqlserver.ResourceTencentCloudSqlserverDB(),
15901591
"tencentcloud_sqlserver_account": sqlserver.ResourceTencentCloudSqlserverAccount(),

tencentcloud/provider.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -929,6 +929,7 @@ tencentcloud_postgresql_clone_db_instance
929929
tencentcloud_postgresql_instance_network_access
930930
tencentcloud_postgresql_parameters
931931
tencentcloud_postgresql_instance_ssl_config
932+
tencentcloud_postgresql_time_window
932933

933934
TencentDB for Redis(crs)
934935
Data Source

tencentcloud/services/postgresql/resource_tc_postgresql_time_window.go

Lines changed: 178 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
Provides a resource to create a postgres postgresql_time_window
2+
3+
Example Usage
4+
5+
```hcl
6+
resource "tencentcloud_postgresql_time_window" "postgresql_time_window" {
7+
db_instance_id = "postgres-45b0vlmr"
8+
maintain_duration = 2
9+
maintain_start_time = "04:00"
10+
maintain_week_days = [
11+
"friday",
12+
"monday",
13+
"saturday",
14+
"sunday",
15+
"thursday",
16+
"tuesday",
17+
"wednesday",
18+
]
19+
}
20+
```
21+
22+
Import
23+
24+
postgres postgresql_time_window can be imported using the id, e.g.
25+
26+
```
27+
terraform import tencentcloud_postgresql_time_window.postgresql_time_window instance_id
28+
```
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package postgresql
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package postgresql_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest"
8+
)
9+
10+
func TestAccTencentCloudPostgresqlTimeWindowResource_basic(t *testing.T) {
11+
t.Parallel()
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: testAccPostgresqlTimeWindow,
20+
Check: resource.ComposeTestCheckFunc(
21+
resource.TestCheckResourceAttrSet("tencentcloud_postgresql_time_window.postgresql_time_window", "id"),
22+
resource.TestCheckResourceAttr("tencentcloud_postgresql_time_window.postgresql_time_window", "maintain_duration", "2"),
23+
resource.TestCheckResourceAttr("tencentcloud_postgresql_time_window.postgresql_time_window", "maintain_start_time", "04:00"),
24+
resource.TestCheckResourceAttr("tencentcloud_postgresql_time_window.postgresql_time_window", "maintain_week_days.#", "7"),
25+
),
26+
},
27+
{
28+
ResourceName: "tencentcloud_postgresql_time_window.postgresql_time_window",
29+
ImportState: true,
30+
ImportStateVerify: true,
31+
},
32+
33+
{
34+
Config: testAccPostgresqlTimeWindowUp,
35+
Check: resource.ComposeTestCheckFunc(
36+
resource.TestCheckResourceAttrSet("tencentcloud_postgresql_time_window.postgresql_time_window", "id"),
37+
resource.TestCheckResourceAttr("tencentcloud_postgresql_time_window.postgresql_time_window", "maintain_duration", "3"),
38+
resource.TestCheckResourceAttr("tencentcloud_postgresql_time_window.postgresql_time_window", "maintain_start_time", "05:00"),
39+
resource.TestCheckResourceAttr("tencentcloud_postgresql_time_window.postgresql_time_window", "maintain_week_days.#", "6"),
40+
),
41+
},
42+
},
43+
})
44+
}
45+
46+
const testAccPostgresqlTimeWindow = testAccPostgresqlInstance + `
47+
48+
resource "tencentcloud_postgresql_time_window" "postgresql_time_window" {
49+
db_instance_id = tencentcloud_postgresql_instance.test.id
50+
maintain_duration = 2
51+
maintain_start_time = "04:00"
52+
maintain_week_days = [
53+
"friday",
54+
"monday",
55+
"saturday",
56+
"sunday",
57+
"thursday",
58+
"tuesday",
59+
"wednesday",
60+
]
61+
}
62+
`
63+
64+
const testAccPostgresqlTimeWindowUp = testAccPostgresqlInstance + `
65+
66+
resource "tencentcloud_postgresql_time_window" "postgresql_time_window" {
67+
db_instance_id = tencentcloud_postgresql_instance.test.id
68+
maintain_duration = 3
69+
maintain_start_time = "05:00"
70+
maintain_week_days = [
71+
"friday",
72+
"monday",
73+
"saturday",
74+
"sunday",
75+
"thursday",
76+
"tuesday",
77+
]
78+
}
79+
`

tencentcloud/services/postgresql/service_tencentcloud_postgresql.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2393,3 +2393,33 @@ func (me *PostgresqlService) DescribePostgresqlDbVersionsByFilter(ctx context.Co
23932393

23942394
return
23952395
}
2396+
2397+
func (me *PostgresqlService) DescribePostgresqlTimeWindowById(ctx context.Context, dBInstanceId string) (ret *postgresv20170312.DescribeMaintainTimeWindowResponseParams, errRet error) {
2398+
logId := tccommon.GetLogId(ctx)
2399+
2400+
request := postgresv20170312.NewDescribeMaintainTimeWindowRequest()
2401+
response := postgresv20170312.NewDescribeMaintainTimeWindowResponse()
2402+
request.DBInstanceId = helper.String(dBInstanceId)
2403+
2404+
defer func() {
2405+
if errRet != nil {
2406+
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error())
2407+
}
2408+
}()
2409+
2410+
ratelimit.Check(request.GetAction())
2411+
2412+
errRet = resource.Retry(3*tccommon.WriteRetryTimeout, func() *resource.RetryError {
2413+
result, e := me.client.UsePostgresV20170312Client().DescribeMaintainTimeWindow(request)
2414+
if e != nil {
2415+
return tccommon.RetryError(e)
2416+
} else {
2417+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
2418+
}
2419+
response = result
2420+
return nil
2421+
})
2422+
2423+
ret = response.Response
2424+
return
2425+
}

0 commit comments

Comments
 (0)