Skip to content

Commit f2c5a35

Browse files
authored
feat:support postgre parameter template (#1625)
* feat:support postgre parameter template * add changelog * adjust immutable attribute and e2e case * adjust the read logic for modify_param_entry_set * adjust e2e case for changing single attribute
1 parent 8a0cf38 commit f2c5a35

17 files changed

+6594
-1038
lines changed

.changelog/1625.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
```release-note:new-data-source
2+
tencentcloud_postgresql_parameter_templates
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_postgresql_parameter_template
7+
```

go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ require (
2525
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos v1.0.358
2626
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/api v1.0.285
2727
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/apigateway v1.0.571
28+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/apm v1.0.624
2829
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/as v1.0.466
2930
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cam v1.0.409
3031
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cat v1.0.520
@@ -37,7 +38,7 @@ require (
3738
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.599
3839
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544
3940
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.412
40-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.624
41+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.625
4142
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624
4243
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.589
4344
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.572
@@ -59,7 +60,7 @@ require (
5960
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.616
6061
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.584
6162
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.540
62-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.391
63+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.625
6364
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.290
6465
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.533
6566
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.490
@@ -85,7 +86,6 @@ require (
8586
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.199
8687
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.569
8788
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199
88-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/apm v1.0.624
8989
github.com/tencentyun/cos-go-sdk-v5 v0.7.40
9090
github.com/yangwenmai/ratelimit v0.0.0-20180104140304-44221c2292e1
9191
github.com/zclconf/go-cty v1.4.2 // indirect

go.sum

Lines changed: 4 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,6 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.412/go.mod h1:
489489
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.194/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
490490
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.358/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
491491
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.383/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
492-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.391/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
493492
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.403/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
494493
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.409/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
495494
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.412/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
@@ -499,7 +498,6 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.466/go.mod
499498
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.486/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
500499
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.490/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
501500
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.514/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
502-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.518/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
503501
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.520/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
504502
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.524/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
505503
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.529/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
@@ -512,7 +510,6 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.540/go.mod
512510
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.542/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
513511
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.544/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
514512
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.547/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
515-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.553/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
516513
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.564/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
517514
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.567/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
518515
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.569/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
@@ -528,24 +525,11 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.591/go.mod
528525
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.593/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
529526
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.599/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
530527
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.600/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
531-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.606 h1:3Y3xlzSikB9BfKIfrTXQpwzeW97cxetqyq1kuMaMc08=
532528
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.606/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
533-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.607 h1:wbluBSYuaUENPmdPRfhAJFzCSpigwqeqjy8tEtx/pgk=
534-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.607/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
535-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.608 h1:yLiHPyhxJDEpNRCVF5hfA3e1eV9VJMvbCqLJq1VG5/U=
536-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.608/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
537-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.609 h1:vl7nWq9lUgZ1YuNuN5/O32kz+inRVEFIjs2s2NxgoQc=
538-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.609/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
539-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.610 h1:W57v1rwhZbHAAgwqCccbLObIJoKos6G6rmq+evJ2ppo=
540-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.610/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
541-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.611 h1:lAsu5kMPUpBhIo9/7VgFUH/pMgXNCwCsntTmwu1HSKY=
542-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.611/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
543-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.616 h1:g9epN2QSSkxRVIAKAeUEDBzYRnAtvgeczXVQPoC9prU=
544529
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.616/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
545-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.624 h1:rq8VZsUxg8rDsfSE+yJHQ1tV3ITwGQEarHRDv8YcfPw=
546530
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.624/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
547-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.553 h1:Pl1kYgFhJp0QSoVFSzRsiGk+HfEAkBTQg7+O60tytNA=
548-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.553/go.mod h1:dnnqPxXYK+kax3e1MKo/PI3iWJtytm6ogWKQHJS7SGE=
531+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.625 h1:cqU4m8KEkc7HtLxk/rgUAzRTKngsjlD2FnngqgPqZzY=
532+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.625/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
549533
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624 h1:nEZqsoqt1pEoaP9JjkHQy3/H00suCfzlHW1qOm2nYD8=
550534
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624/go.mod h1:+TXSVyeKwt1IhZRqKPbTREteBcP+K07Q846/ilNzLWA=
551535
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.589 h1:LZihgirMH0vsaGScYexxwY0fTss9vHaSZs/YOQUVESg=
@@ -583,28 +567,14 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.532 h1:3PC
583567
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.532/go.mod h1:lb1pdGQn9dzyXmq6+NkpN4avTVRvG+ziqFtOeL5D7y4=
584568
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.606 h1:Fs1WyS5uw0MMVdKufxNSOEBe4DkybSiBkMAy1131/gg=
585569
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.606/go.mod h1:XrotKKNeP8jLqt4I9LSoIGpLt1UPd2MnLpxFNrJrts4=
586-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.518 h1:XClo3Xa5F9pko91olHT85aZXXcRkQiOYBCMqm8+tHG8=
587-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.518/go.mod h1:WDTvvrrc90KE+90iizkoSQRsoSSQ3881eBC6NeypmTI=
588-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.606 h1:X7oA/fOra7VpPgJAHh2T9+DENx2Xc+s+tKLEW5ZyOKQ=
589-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.606/go.mod h1:nRfdR0Nc7OJIwGqX13wlrsVpU9VC7b8pp/eUPhKrnlU=
590-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.607 h1:EMw6yhFpbPKYKe+OOarj3BhZX/8VgtHJPE3lb+Aah2E=
591-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.607/go.mod h1:btYADbe5A3QefUMrZeXiGIrXUmHMrdkoy398243LY+Y=
592-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.608 h1:eAXC9r/ajeKACa/exA5od4mvATOjV2gQvNyfoleJLgk=
593-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.608/go.mod h1:fbCBYwtIW5chhsmqoXUgW1ZoRPXEEuOWo7IGrLPmGFo=
594-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.609 h1:ByDWOMzEu/qVTf2NhyHUtkUB19L3AxAxUEZ4M8MS5Xw=
595-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.609/go.mod h1:Og9WXael0uEGu6iuQpgrbDgSP5S3W1EvoxrHWTnkwfQ=
596-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.610 h1:2YuoZplaRZev7CC+otA63Z4ZiPmY9mMH630lesND3O8=
597-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.610/go.mod h1:Dj0tct8PXX3yQgpVRhxc5oj8j1AqIl4o4kE3VVhMB00=
598-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.611 h1:P+zAHToadSa6Z/V6DRmHAAicSj4KiMCcerixx3n1vYc=
599-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.611/go.mod h1:ce+NGcotxtAaRmJ/89ejAnohxcAz0wMgISRHJ3E+jAo=
600570
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.616 h1:+4NM1Repe514qc4H9qFuDS0IEe0TBmC5snea//YL7Kk=
601571
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.616/go.mod h1:n7vl5IwlMQS/XzBzj3UEkp1dvQorzuAMq6RYNgl/MjM=
602572
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.584 h1:FJxYOAolkBhXjQMWoiTek9Ag0bslcKFHyrM7w2Jsxos=
603573
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.584/go.mod h1:CY/hEcXbaOZBU9Qm/MMIctafi8FFJaMIGTlGUjnymW0=
604574
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.540 h1:gUVuwcjt9baj+/5LFafjdR53/xSdQxfA45Vp6E65rXU=
605575
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.540/go.mod h1:jHcHwlsdNL9ycLwNtqYZVjLKJILA1xuODMeMDMOxCrA=
606-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.391 h1:1yZh5MrlFqawVGhLdd38hi5HoaKc4LgB+8cEgLT2Qo4=
607-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.391/go.mod h1:BZSQiBjNQ+6/gL1fFXBr/0BOuPTdHmSYoIg4/AkmZB4=
576+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.625 h1:kdRKVdupmT5Ai2FdmmSXZ48zI6TCBgQTNvT0+74oCuM=
577+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.625/go.mod h1:oITteEF2Tol99FFbQkkUIvoVjEjnod0SYP/y+2JVjuY=
608578
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.290 h1:osYZxh9ApEc8UpvIMwjAUfdl7ytRcWUpcnnqLIpiJ/U=
609579
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.290/go.mod h1:En+pdagcHkAASorHT1l8R6tUtieRNNxaQ7nfyqWPefk=
610580
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.533 h1:BJDJlHkuoPsSUJ/ZHnmtX3gmA2PVfmKyhB7uV2d9QlE=
Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,209 @@
1+
/*
2+
Use this data source to query detailed information of postgresql parameter_templates
3+
4+
Example Usage
5+
6+
```hcl
7+
data "tencentcloud_postgresql_parameter_templates" "parameter_templates" {
8+
filters {
9+
name = "TemplateName"
10+
values = ["temp_name"]
11+
}
12+
filters {
13+
name = "DBEngine"
14+
values = ["postgresql"]
15+
}
16+
order_by = "CreateTime"
17+
order_by_type = "desc"
18+
}
19+
```
20+
*/
21+
package tencentcloud
22+
23+
import (
24+
"context"
25+
26+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
27+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
28+
postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312"
29+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
30+
)
31+
32+
func dataSourceTencentCloudPostgresqlParameterTemplates() *schema.Resource {
33+
return &schema.Resource{
34+
Read: dataSourceTencentCloudPostgresqlParameterTemplatesRead,
35+
Schema: map[string]*schema.Schema{
36+
"filters": {
37+
Optional: true,
38+
Type: schema.TypeList,
39+
Description: "Filter conditions. Valid values:TemplateName, TemplateId, DBMajorVersion, DBEngine.",
40+
Elem: &schema.Resource{
41+
Schema: map[string]*schema.Schema{
42+
"name": {
43+
Type: schema.TypeString,
44+
Optional: true,
45+
Description: "Filter name.",
46+
},
47+
"values": {
48+
Type: schema.TypeSet,
49+
Elem: &schema.Schema{
50+
Type: schema.TypeString,
51+
},
52+
Optional: true,
53+
Description: "One or more filter values.",
54+
},
55+
},
56+
},
57+
},
58+
59+
"order_by": {
60+
Optional: true,
61+
Type: schema.TypeString,
62+
Description: "Sorting metric. Valid values:CreateTime, TemplateName, DBMajorVersion.",
63+
},
64+
65+
"order_by_type": {
66+
Optional: true,
67+
Type: schema.TypeString,
68+
Description: "Sorting order. Valid values:asc (ascending order),desc (descending order).",
69+
},
70+
71+
"list": {
72+
Computed: true,
73+
Type: schema.TypeList,
74+
Description: "list of parameter templates.",
75+
Elem: &schema.Resource{
76+
Schema: map[string]*schema.Schema{
77+
"template_id": {
78+
Type: schema.TypeString,
79+
Computed: true,
80+
Description: "parameter template ID.",
81+
},
82+
"template_name": {
83+
Type: schema.TypeString,
84+
Computed: true,
85+
Description: "parameter template name.",
86+
},
87+
"db_major_version": {
88+
Type: schema.TypeString,
89+
Computed: true,
90+
Description: "the database version to which the parameter template applies.",
91+
},
92+
"db_engine": {
93+
Type: schema.TypeString,
94+
Computed: true,
95+
Description: "the database engine for which the parameter template applies.",
96+
},
97+
"template_description": {
98+
Type: schema.TypeString,
99+
Computed: true,
100+
Description: "parameter template description.",
101+
},
102+
},
103+
},
104+
},
105+
106+
"result_output_file": {
107+
Type: schema.TypeString,
108+
Optional: true,
109+
Description: "Used to save results.",
110+
},
111+
},
112+
}
113+
}
114+
115+
func dataSourceTencentCloudPostgresqlParameterTemplatesRead(d *schema.ResourceData, meta interface{}) error {
116+
defer logElapsed("data_source.tencentcloud_postgresql_parameter_templates.read")()
117+
defer inconsistentCheck(d, meta)()
118+
119+
logId := getLogId(contextNil)
120+
121+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
122+
123+
paramMap := make(map[string]interface{})
124+
if v, ok := d.GetOk("filters"); ok {
125+
filtersSet := v.([]interface{})
126+
tmpSet := make([]*postgresql.Filter, 0, len(filtersSet))
127+
128+
for _, item := range filtersSet {
129+
filter := postgresql.Filter{}
130+
filterMap := item.(map[string]interface{})
131+
132+
if v, ok := filterMap["name"]; ok {
133+
filter.Name = helper.String(v.(string))
134+
}
135+
if v, ok := filterMap["values"]; ok {
136+
valuesSet := v.(*schema.Set).List()
137+
filter.Values = helper.InterfacesStringsPoint(valuesSet)
138+
}
139+
tmpSet = append(tmpSet, &filter)
140+
}
141+
paramMap["filters"] = tmpSet
142+
}
143+
144+
if v, ok := d.GetOk("order_by"); ok {
145+
paramMap["OrderBy"] = helper.String(v.(string))
146+
}
147+
148+
if v, ok := d.GetOk("order_by_type"); ok {
149+
paramMap["OrderByType"] = helper.String(v.(string))
150+
}
151+
152+
service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn}
153+
154+
var parameterTemplateSet []*postgresql.ParameterTemplate
155+
156+
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
157+
result, e := service.DescribePostgresqlParameterTemplatesByFilter(ctx, paramMap)
158+
if e != nil {
159+
return retryError(e)
160+
}
161+
parameterTemplateSet = result
162+
return nil
163+
})
164+
if err != nil {
165+
return err
166+
}
167+
ids := make([]string, 0, len(parameterTemplateSet))
168+
tmpList := make([]map[string]interface{}, 0, len(parameterTemplateSet))
169+
170+
if parameterTemplateSet != nil {
171+
for _, parameterTemplate := range parameterTemplateSet {
172+
parameterTemplateMap := map[string]interface{}{}
173+
174+
if parameterTemplate.TemplateId != nil {
175+
parameterTemplateMap["template_id"] = parameterTemplate.TemplateId
176+
}
177+
178+
if parameterTemplate.TemplateName != nil {
179+
parameterTemplateMap["template_name"] = parameterTemplate.TemplateName
180+
}
181+
182+
if parameterTemplate.DBMajorVersion != nil {
183+
parameterTemplateMap["db_major_version"] = parameterTemplate.DBMajorVersion
184+
}
185+
186+
if parameterTemplate.DBEngine != nil {
187+
parameterTemplateMap["db_engine"] = parameterTemplate.DBEngine
188+
}
189+
190+
if parameterTemplate.TemplateDescription != nil {
191+
parameterTemplateMap["template_description"] = parameterTemplate.TemplateDescription
192+
}
193+
194+
ids = append(ids, *parameterTemplate.TemplateId)
195+
tmpList = append(tmpList, parameterTemplateMap)
196+
}
197+
198+
_ = d.Set("list", tmpList)
199+
}
200+
201+
d.SetId(helper.DataResourceIdsHash(ids))
202+
output, ok := d.GetOk("result_output_file")
203+
if ok && output.(string) != "" {
204+
if e := writeToFile(output.(string), tmpList); e != nil {
205+
return e
206+
}
207+
}
208+
return nil
209+
}

0 commit comments

Comments
 (0)