Skip to content

Commit 270cc9a

Browse files
authored
Merge pull request #2120 from tencentcloudstack/feat/clickhouse-account
Feat/clickhouse account
2 parents abffb95 + b15e489 commit 270cc9a

25 files changed

+1843
-423
lines changed

.changelog/2120.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
```release-note:new-data-source
2+
tencentcloud_clickhouse_backup_tables
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_clickhouse_account
7+
```
8+
9+
```release-note:new-resource
10+
tencentcloud_clickhouse_account_permission
11+
```

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ require (
3434
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs v1.0.591
3535
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb v1.0.699
3636
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.539
37-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.736
37+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.745
3838
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cfs v1.0.627
3939
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/chdfs v1.0.600
4040
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ciam v1.0.695
4141
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.706
4242
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.693
4343
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544
4444
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.711
45-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.744
45+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.745
4646
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.589
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.692

go.sum

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -804,6 +804,12 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.734 h1:lLaTM
804804
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.734/go.mod h1:b8mkJ06Xxqqiyb42/FTj71YyZ60Gt0zvlbtwbpMF7gY=
805805
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.736 h1:N6++C79PcOe3yAnjFwaoXwcd8jFT3Jqr0c60QeVtPRA=
806806
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.736/go.mod h1:Lz8ow6ykZFxoC3IbpLd7IdPMLaa9yFAMF0TuLkIVj2U=
807+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.741 h1:Qx/NqGIM7dmDb6OjyTgff6qRr82lTAOwZKKVv86u7kU=
808+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.741/go.mod h1:EL1f+ukgQgxiwolaB1fpcfi23FjZ83gz/Cd3epFMKTY=
809+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.742 h1:yYeyDWBsUCpqt6hbKx3lGNxf6uiv07ZkXFfyVuq3+yw=
810+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.742/go.mod h1:WtsECsOOaKMcGwINrg6yO3Hs3TJcla7Qgogb5HHBGDU=
811+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.745 h1:y3CtDHGwJ8VDpAlNjluxZMdPbj4MQTD0RFIwQjKei4Q=
812+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.745/go.mod h1:DxjJ8NLE8FGPaQP5k08z1gUqQCSwBuXgPs0u869VoyE=
807813
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cfs v1.0.627 h1:nChNdoCUWQZciiJj3gRCWoHBO/8LituLQOdCRREIrS4=
808814
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cfs v1.0.627/go.mod h1:lr3IyWgJk4rLWr0vVd8J1Tfs5O+wNcwSZ9ciMhGUrlI=
809815
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/chdfs v1.0.600 h1:qSpp4rEgAzfXhi1rPxes+AJp2mwnsyRGPY/Km1FuYGs=
@@ -884,10 +890,12 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.735 h1:LJF4
884890
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.735/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
885891
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.736 h1:kDxUSuxipDOYAgssgXVf33WT2g6UyY+67yVMsVHPGiU=
886892
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.736/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
887-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.737 h1:Y/mD9PJbMkjzJiuZsJnzUk31OPCXvch7WSFbs9kKRyw=
888-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.737/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
889-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.744 h1:mnGB6/dYZWwiffjzCQgyCte/lg2PHWMX8Cln0y3TbcE=
890-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.744/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
893+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.741 h1:lQMXqycdqNkCq6HkAA8yi3CHcRar+leQ8XN1fMvceRg=
894+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.741/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
895+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.742 h1:Qno5G08Ppz9nfi0M9yLNnyY+9vsr4TqvWLEp4xnX7yw=
896+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.742/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
897+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.745 h1:esd+b4fHf6ZgaryrrEN9Sz7QBTpnozl1cIuZ+bRgZbk=
898+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.745/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
891899
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624 h1:nEZqsoqt1pEoaP9JjkHQy3/H00suCfzlHW1qOm2nYD8=
892900
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624/go.mod h1:+TXSVyeKwt1IhZRqKPbTREteBcP+K07Q846/ilNzLWA=
893901
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.589 h1:LZihgirMH0vsaGScYexxwY0fTss9vHaSZs/YOQUVESg=

tencentcloud/basic_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,3 +1115,14 @@ variable "security_group_id" {
11151115
`
11161116

11171117
// End of TSE
1118+
1119+
// Clickhouse
1120+
const DefaultClickhouseInstanceId = "cdwch-pcap78rz"
1121+
1122+
const DefaultClickhouseVariables = `
1123+
variable "instance_id" {
1124+
default = "` + DefaultClickhouseInstanceId + `"
1125+
}
1126+
`
1127+
1128+
// End of Clickhouse

tencentcloud/data_source_tc_clickhouse_backup_job_detail_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ func TestAccTencentCloudClickhouseBackupJobDetailDataSource_basic(t *testing.T)
1919
})
2020
}
2121

22-
const testAccClickhouseBackupJobDetailDataSource = `
22+
const testAccClickhouseBackupJobDetailDataSource = DefaultClickhouseVariables + `
2323
resource "tencentcloud_clickhouse_backup" "backup" {
24-
instance_id = "cdwch-pcap78rz"
24+
instance_id = var.instance_id
2525
cos_bucket_name = "keep-export-image-1308726196"
2626
}
2727
2828
data "tencentcloud_clickhouse_backup_job_detail" "backup_job_detail" {
29-
instance_id = "cdwch-pcap78rz"
29+
instance_id = var.instance_id
3030
back_up_job_id = 7679
3131
}
3232
`

tencentcloud/data_source_tc_clickhouse_backup_jobs_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ func TestAccTencentCloudClickhouseBackupJobsDataSource_basic(t *testing.T) {
2020
})
2121
}
2222

23-
const testAccClickhouseBackupJobsDataSource = `
23+
const testAccClickhouseBackupJobsDataSource = DefaultClickhouseVariables + `
2424
resource "tencentcloud_clickhouse_backup" "backup" {
25-
instance_id = "cdwch-pcap78rz"
25+
instance_id = var.instance_id
2626
cos_bucket_name = "keep-export-image-1308726196"
2727
}
2828
2929
data "tencentcloud_clickhouse_backup_jobs" "backup_jobs" {
30-
instance_id = "cdwch-pcap78rz"
30+
instance_id = var.instance_id
3131
}
3232
`
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
/*
2+
Use this data source to query detailed information of clickhouse backup tables
3+
4+
Example Usage
5+
6+
```hcl
7+
data "tencentcloud_clickhouse_backup_tables" "backup_tables" {
8+
instance_id = "cdwch-xxxxxx"
9+
}
10+
```
11+
*/
12+
package tencentcloud
13+
14+
import (
15+
"context"
16+
17+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
18+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
19+
clickhouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch/v20200915"
20+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
21+
)
22+
23+
func dataSourceTencentCloudClickhouseBackupTables() *schema.Resource {
24+
return &schema.Resource{
25+
Read: dataSourceTencentCloudClickhouseBackupTablesRead,
26+
Schema: map[string]*schema.Schema{
27+
"instance_id": {
28+
Required: true,
29+
Type: schema.TypeString,
30+
Description: "Instance id.",
31+
},
32+
33+
"available_tables": {
34+
Computed: true,
35+
Type: schema.TypeList,
36+
Description: "Available tables.",
37+
Elem: &schema.Resource{
38+
Schema: map[string]*schema.Schema{
39+
"database": {
40+
Type: schema.TypeString,
41+
Computed: true,
42+
Description: "Database.",
43+
},
44+
"table": {
45+
Type: schema.TypeString,
46+
Computed: true,
47+
Description: "Table.",
48+
},
49+
"total_bytes": {
50+
Type: schema.TypeInt,
51+
Computed: true,
52+
Description: "Table total bytes.",
53+
},
54+
"v_cluster": {
55+
Type: schema.TypeString,
56+
Computed: true,
57+
Description: "Virtual cluster.",
58+
},
59+
"ips": {
60+
Type: schema.TypeString,
61+
Computed: true,
62+
Description: "Table ips.",
63+
},
64+
"zoo_path": {
65+
Type: schema.TypeString,
66+
Computed: true,
67+
Description: "Zk path.",
68+
},
69+
"rip": {
70+
Type: schema.TypeString,
71+
Computed: true,
72+
Description: "Ip address of cvm.",
73+
},
74+
},
75+
},
76+
},
77+
78+
"result_output_file": {
79+
Type: schema.TypeString,
80+
Optional: true,
81+
Description: "Used to save results.",
82+
},
83+
},
84+
}
85+
}
86+
87+
func dataSourceTencentCloudClickhouseBackupTablesRead(d *schema.ResourceData, meta interface{}) error {
88+
defer logElapsed("data_source.tencentcloud_clickhouse_backup_tables.read")()
89+
defer inconsistentCheck(d, meta)()
90+
91+
logId := getLogId(contextNil)
92+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
93+
94+
instanceId := d.Get("instance_id").(string)
95+
96+
service := CdwchService{client: meta.(*TencentCloudClient).apiV3Conn}
97+
98+
var availableTables []*clickhouse.BackupTableContent
99+
100+
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
101+
result, e := service.DescribeClickhouseBackupTablesByFilter(ctx, instanceId)
102+
if e != nil {
103+
return retryError(e)
104+
}
105+
availableTables = result
106+
return nil
107+
})
108+
if err != nil {
109+
return err
110+
}
111+
112+
ids := make([]string, 0, len(availableTables))
113+
tmpList := make([]map[string]interface{}, 0, len(availableTables))
114+
115+
if availableTables != nil {
116+
for _, backupTableContent := range availableTables {
117+
backupTableContentMap := map[string]interface{}{}
118+
119+
if backupTableContent.Database != nil {
120+
backupTableContentMap["database"] = backupTableContent.Database
121+
}
122+
123+
if backupTableContent.Table != nil {
124+
backupTableContentMap["table"] = backupTableContent.Table
125+
}
126+
127+
if backupTableContent.TotalBytes != nil {
128+
backupTableContentMap["total_bytes"] = backupTableContent.TotalBytes
129+
}
130+
131+
if backupTableContent.VCluster != nil {
132+
backupTableContentMap["v_cluster"] = backupTableContent.VCluster
133+
}
134+
135+
if backupTableContent.Ips != nil {
136+
backupTableContentMap["ips"] = backupTableContent.Ips
137+
}
138+
139+
if backupTableContent.ZooPath != nil {
140+
backupTableContentMap["zoo_path"] = backupTableContent.ZooPath
141+
}
142+
143+
if backupTableContent.Rip != nil {
144+
backupTableContentMap["rip"] = backupTableContent.Rip
145+
}
146+
147+
ids = append(ids, *backupTableContent.Database+FILED_SP+*backupTableContent.Table)
148+
tmpList = append(tmpList, backupTableContentMap)
149+
}
150+
151+
_ = d.Set("available_tables", tmpList)
152+
}
153+
154+
d.SetId(helper.DataResourceIdsHash(ids))
155+
output, ok := d.GetOk("result_output_file")
156+
if ok && output.(string) != "" {
157+
if e := writeToFile(output.(string), tmpList); e != nil {
158+
return e
159+
}
160+
}
161+
return nil
162+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
)
8+
9+
func TestAccTencentCloudClickhouseBackupTablesDataSource_basic(t *testing.T) {
10+
t.Parallel()
11+
resource.Test(t, resource.TestCase{
12+
PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) },
13+
Providers: testAccProviders,
14+
Steps: []resource.TestStep{
15+
{
16+
Config: testAccClickhouseBackupTablesDataSource,
17+
Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_clickhouse_backup_tables.backup_tables")),
18+
},
19+
},
20+
})
21+
}
22+
23+
const testAccClickhouseBackupTablesDataSource = DefaultClickhouseVariables + `
24+
data "tencentcloud_clickhouse_backup_tables" "backup_tables" {
25+
instance_id = var.instance_id
26+
}
27+
`

tencentcloud/extension_cdwch.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package tencentcloud
22

3+
import cdwch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch/v20200915"
4+
35
const (
46
CDWCH_PAY_MODE_HOUR = "hour"
57
CDWCH_PAY_MODE_PREPAY = "prepay"
@@ -25,7 +27,35 @@ const (
2527
SCHEDULE_TYPE_META = "meta"
2628
)
2729

30+
const (
31+
ACTION_ALTER_CK_USER_ADD_SYSTEM_USER = "AddSystemUser"
32+
ACTION_ALTER_CK_USER_UPDATE_SYSTEM_USER = "UpdateSystemUser"
33+
)
34+
35+
const (
36+
DESCRIBE_CK_SQL_APIS_GET_SYSTEM_USERS = "GetSystemUsers"
37+
DESCRIBE_CK_SQL_APIS_REVOKE_CLUSTER_USER = "RevokeClusterUser"
38+
DESCRIBE_CK_SQL_APIS_DELETE_SYSTEM_USER = "DeleteSystemUser"
39+
)
40+
2841
var PAY_MODE_TO_CHARGE_TYPE = map[string]string{
2942
CDWCH_PAY_MODE_HOUR: CDWCH_CHARGE_TYPE_POSTPAID_BY_HOUR,
3043
CDWCH_PAY_MODE_PREPAY: CDWCH_CHARGE_TYPE_PREPAID,
3144
}
45+
46+
type AccountInfo struct {
47+
InstanceId string `json:"InstanceId"`
48+
UserName string `json:"UserName"`
49+
Describe string `json:"Describe"`
50+
Type string `json:"Type"`
51+
Cluster string `json:"Cluster"`
52+
}
53+
54+
type AccountPermission struct {
55+
InstanceId string `json:"InstanceId"`
56+
Cluster string `json:"Cluster"`
57+
UserName string `json:"UserName"`
58+
AllDatabase bool `json:"AllDatabase"`
59+
GlobalPrivileges []string `json:"GlobalPrivileges"`
60+
DatabasePrivilegeList []*cdwch.DatabasePrivilegeInfo `json:"DatabasePrivilegeList"`
61+
}

tencentcloud/provider.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1611,13 +1611,16 @@ ClickHouse(CDWCH)
16111611
Data Source
16121612
tencentcloud_clickhouse_backup_jobs
16131613
tencentcloud_clickhouse_backup_job_detail
1614+
tencentcloud_clickhouse_backup_tables
16141615
16151616
Resource
16161617
tencentcloud_clickhouse_instance
16171618
tencentcloud_clickhouse_backup
16181619
tencentcloud_clickhouse_backup_strategy
16191620
tencentcloud_clickhouse_recover_backup_job
16201621
tencentcloud_clickhouse_delete_backup_data
1622+
tencentcloud_clickhouse_account
1623+
tencentcloud_clickhouse_account_permission
16211624
16221625
Tag
16231626
Resource
@@ -2286,6 +2289,7 @@ func Provider() *schema.Provider {
22862289
"tencentcloud_lighthouse_disks": dataSourceTencentCloudLighthouseInstanceDisks(),
22872290
"tencentcloud_clickhouse_backup_jobs": dataSourceTencentCloudClickhouseBackupJobs(),
22882291
"tencentcloud_clickhouse_backup_job_detail": dataSourceTencentCloudClickhouseBackupJobDetail(),
2292+
"tencentcloud_clickhouse_backup_tables": dataSourceTencentCloudClickhouseBackupTables(),
22892293
"tencentcloud_cls_shipper_tasks": dataSourceTencentCloudClsShipperTasks(),
22902294
"tencentcloud_cls_machines": dataSourceTencentCloudClsMachines(),
22912295
"tencentcloud_cls_machine_group_configs": dataSourceTencentCloudClsMachineGroupConfigs(),
@@ -3017,6 +3021,8 @@ func Provider() *schema.Provider {
30173021
"tencentcloud_clickhouse_backup_strategy": resourceTencentCloudClickhouseBackupStrategy(),
30183022
"tencentcloud_clickhouse_recover_backup_job": resourceTencentCloudClickhouseRecoverBackupJob(),
30193023
"tencentcloud_clickhouse_delete_backup_data": resourceTencentCloudClickhouseDeleteBackupData(),
3024+
"tencentcloud_clickhouse_account": resourceTencentCloudClickhouseAccount(),
3025+
"tencentcloud_clickhouse_account_permission": resourceTencentCloudClickhouseAccountPermission(),
30203026
"tencentcloud_api_gateway_api_doc": resourceTencentCloudAPIGatewayAPIDoc(),
30213027
"tencentcloud_api_gateway_api_app": resourceTencentCloudAPIGatewayAPIApp(),
30223028
"tencentcloud_tse_instance": resourceTencentCloudTseInstance(),

0 commit comments

Comments
 (0)