Skip to content

Commit 7963374

Browse files
authored
Feat/sqlserver (#2394)
* feat/sqlserver * feat/sqlserver * feat/sqlserver * add
1 parent 60ed1f3 commit 7963374

16 files changed

+654
-6
lines changed

.changelog/2394.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
```release-note:new-resource
2+
tencentcloud_sqlserver_instance_ssl
3+
```
4+
5+
```release-note:new-data-source
6+
tencentcloud_sqlserver_desc_ha_log
7+
```
8+
9+
```release-note:enhancement
10+
data_source/tencentcloud_sqlserver_ins_attribute: Support query `ssl_config` param.
11+
```

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ require (
4646
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.693
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.711
49-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.815
49+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.816
5050
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624
5151
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
5252
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.692
@@ -78,7 +78,7 @@ require (
7878
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.807
7979
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.748
8080
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486
81-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.812
81+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.816
8282
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.750
8383
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssm v1.0.691
8484
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sts v1.0.524

go.sum

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -925,8 +925,9 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.811/go.mod
925925
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.812/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
926926
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.814 h1:U1BAjbwmFNg5d9K5syyZh/ELL/70yTNPYQgTuCEmuxk=
927927
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.814/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
928-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.815 h1:j8p8E8JRFNhMQK4S6hbQBrv16VRiJ8AjmW6dxwscC6E=
929928
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.815/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
929+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.816 h1:hPkFIZPc3PKsiqm6OdS0mSgW7LISfxsR5NrQIsWPiYo=
930+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.816/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
930931
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624 h1:nEZqsoqt1pEoaP9JjkHQy3/H00suCfzlHW1qOm2nYD8=
931932
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624/go.mod h1:+TXSVyeKwt1IhZRqKPbTREteBcP+K07Q846/ilNzLWA=
932933
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762 h1:2egy69SP/wPsmnfozcQVZ6tUY6F6N/TpEe/7xtXrc/8=
@@ -1005,6 +1006,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.689 h1:S
10051006
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.689/go.mod h1:nRLv9M2dJm5gH5xlwg8KSJ30g5qOO07mkAePzXoEGVM=
10061007
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.812 h1:h44sPNTOANpDZBkZa+q2hIwdQ5Vssyu+/l+GXcSjEps=
10071008
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.812/go.mod h1:vyz0nZzrITns1px7/uCVilUSkUoBvic8unIxOXGygus=
1009+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.816 h1:ESXJjklPGlKzdprjW5F2DM/NRcG/A6Vq3l3LcBvIvZI=
1010+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.816/go.mod h1:J9Ce9D/ewpqzUsBAwINc+59qpDqYT9egjwyUsMHpDwA=
10081011
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.750 h1:NjStL4fGljYfdmlvUxAROKmZFiagWXKNo4KOMWwxUag=
10091012
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.750/go.mod h1:Z/ycmVll9kddil+V9p5QFtQTcwKycwr3C8AagDjZ9Gk=
10101013
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssm v1.0.691 h1:UE55TqueOP889MDcJ+cBW+MBjtzvWUw5fuOBWGCBIjs=
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
package tencentcloud
2+
3+
import (
4+
"context"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
8+
sqlserver "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver/v20180328"
9+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
10+
)
11+
12+
func dataSourceTencentCloudSqlserverDescHaLog() *schema.Resource {
13+
return &schema.Resource{
14+
Read: dataSourceTencentCloudSqlserverDescHaLogRead,
15+
Schema: map[string]*schema.Schema{
16+
"instance_id": {
17+
Required: true,
18+
Type: schema.TypeString,
19+
Description: "Instance ID.",
20+
},
21+
"start_time": {
22+
Required: true,
23+
Type: schema.TypeString,
24+
Description: "Start time (yyyy-MM-dd HH:mm:ss).",
25+
},
26+
"end_time": {
27+
Required: true,
28+
Type: schema.TypeString,
29+
Description: "End time (yyyy-MM-dd HH:mm:ss).",
30+
},
31+
"switch_type": {
32+
Optional: true,
33+
Type: schema.TypeInt,
34+
Description: "Switching mode 0-system automatically switches, 1-manual switch, if not filled in, all will be checked by default.",
35+
},
36+
"switch_log": {
37+
Computed: true,
38+
Type: schema.TypeList,
39+
Description: "Master/Slave switching log.",
40+
Elem: &schema.Resource{
41+
Schema: map[string]*schema.Schema{
42+
"event_id": {
43+
Type: schema.TypeString,
44+
Computed: true,
45+
Description: "Switch event ID Note: This field may return null, indicating that no valid value can be obtained.",
46+
},
47+
"switch_type": {
48+
Type: schema.TypeInt,
49+
Computed: true,
50+
Description: "Switching mode 0-system automatic switching, 1-manual switching Note: This field may return null, indicating that no valid value can be obtained.",
51+
},
52+
"start_time": {
53+
Type: schema.TypeString,
54+
Computed: true,
55+
Description: "Switch start time Note: This field may return null, indicating that no valid value can be obtained.",
56+
},
57+
"end_time": {
58+
Type: schema.TypeString,
59+
Computed: true,
60+
Description: "Switch end time Note: This field may return null, indicating that no valid value can be obtained.",
61+
},
62+
"reason": {
63+
Type: schema.TypeString,
64+
Computed: true,
65+
Description: "Machine failure causes automatic switching Note: This field may return null, indicating that no valid value can be obtained.",
66+
},
67+
},
68+
},
69+
},
70+
"result_output_file": {
71+
Type: schema.TypeString,
72+
Optional: true,
73+
Description: "Used to save results.",
74+
},
75+
},
76+
}
77+
}
78+
79+
func dataSourceTencentCloudSqlserverDescHaLogRead(d *schema.ResourceData, meta interface{}) error {
80+
defer logElapsed("data_source.tencentcloud_sqlserver_desc_ha_log.read")()
81+
defer inconsistentCheck(d, meta)()
82+
83+
var (
84+
logId = getLogId(contextNil)
85+
ctx = context.WithValue(context.TODO(), logIdKey, logId)
86+
service = SqlserverService{client: meta.(*TencentCloudClient).apiV3Conn}
87+
switchLogs []*sqlserver.SwitchLog
88+
instanceId string
89+
)
90+
91+
paramMap := make(map[string]interface{})
92+
if v, ok := d.GetOk("instance_id"); ok {
93+
paramMap["InstanceId"] = helper.String(v.(string))
94+
instanceId = v.(string)
95+
}
96+
97+
if v, ok := d.GetOk("start_time"); ok {
98+
paramMap["StartTime"] = helper.String(v.(string))
99+
}
100+
101+
if v, ok := d.GetOk("end_time"); ok {
102+
paramMap["EndTime"] = helper.String(v.(string))
103+
}
104+
105+
if v, ok := d.GetOkExists("switch_type"); ok {
106+
paramMap["SwitchType"] = helper.IntUint64(v.(int))
107+
}
108+
109+
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
110+
result, e := service.DescribeSqlserverDescHaLogByFilter(ctx, paramMap)
111+
if e != nil {
112+
return retryError(e)
113+
}
114+
115+
switchLogs = result
116+
return nil
117+
})
118+
119+
if err != nil {
120+
return err
121+
}
122+
123+
tmpList := make([]map[string]interface{}, 0, len(switchLogs))
124+
125+
if switchLogs != nil {
126+
for _, switchLog := range switchLogs {
127+
switchLogMap := map[string]interface{}{}
128+
129+
if switchLog.EventId != nil {
130+
switchLogMap["event_id"] = switchLog.EventId
131+
}
132+
133+
if switchLog.SwitchType != nil {
134+
switchLogMap["switch_type"] = switchLog.SwitchType
135+
}
136+
137+
if switchLog.StartTime != nil {
138+
switchLogMap["start_time"] = switchLog.StartTime
139+
}
140+
141+
if switchLog.EndTime != nil {
142+
switchLogMap["end_time"] = switchLog.EndTime
143+
}
144+
145+
if switchLog.Reason != nil {
146+
switchLogMap["reason"] = switchLog.Reason
147+
}
148+
149+
tmpList = append(tmpList, switchLogMap)
150+
}
151+
152+
_ = d.Set("switch_log", tmpList)
153+
}
154+
155+
d.SetId(instanceId)
156+
output, ok := d.GetOk("result_output_file")
157+
if ok && output.(string) != "" {
158+
if e := writeToFile(output.(string), tmpList); e != nil {
159+
return e
160+
}
161+
}
162+
163+
return nil
164+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package tencentcloud
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
"time"
7+
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
9+
)
10+
11+
// go test -i; go test -test.run TestAccTencentCloudSqlserverDescHaLogDataSource_basic -v
12+
func TestAccTencentCloudSqlserverDescHaLogDataSource_basic(t *testing.T) {
13+
loc, _ := time.LoadLocation("Asia/Chongqing")
14+
startTime := time.Now().AddDate(0, 0, -7).In(loc).Format("2006-01-02 15:04:05")
15+
endTime := time.Now().In(loc).Format("2006-01-02 15:04:05")
16+
resource.Test(t, resource.TestCase{
17+
PreCheck: func() {
18+
testAccPreCheck(t)
19+
},
20+
Providers: testAccProviders,
21+
Steps: []resource.TestStep{
22+
{
23+
Config: fmt.Sprintf(testAccSqlserverDescHaLogDataSource, startTime, endTime),
24+
Check: resource.ComposeTestCheckFunc(
25+
testAccCheckTencentCloudDataSourceID("data.tencentcloud_sqlserver_desc_ha_log.example"),
26+
resource.TestCheckResourceAttrSet("data.tencentcloud_sqlserver_desc_ha_log.example", "instance_id"),
27+
resource.TestCheckResourceAttrSet("data.tencentcloud_sqlserver_desc_ha_log.example", "start_time"),
28+
resource.TestCheckResourceAttrSet("data.tencentcloud_sqlserver_desc_ha_log.example", "end_time"),
29+
),
30+
},
31+
},
32+
})
33+
}
34+
35+
const testAccSqlserverDescHaLogDataSource = `
36+
data "tencentcloud_sqlserver_desc_ha_log" "example" {
37+
instance_id = "mssql-gyg9xycl"
38+
start_time = "%s"
39+
end_time = "%s"
40+
switch_type = 1
41+
}
42+
`

tencentcloud/data_source_tc_sqlserver_ins_attribute.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,30 @@ func dataSourceTencentCloudSqlserverInsAttribute() *schema.Resource {
7777
},
7878
},
7979
},
80+
"ssl_config": {
81+
Computed: true,
82+
Type: schema.TypeList,
83+
Description: "SSL encryption.",
84+
Elem: &schema.Resource{
85+
Schema: map[string]*schema.Schema{
86+
"encryption": {
87+
Type: schema.TypeString,
88+
Computed: true,
89+
Description: "SSL encryption status, enable - turned on, disable-not turned on, enable_doing - enabling, disable_doing-closing, renew_doing-updating, wait_doing-wait for execution within maintenance time Note: This field may return null, indicating that no valid value can be obtained.",
90+
},
91+
"ssl_validity_period": {
92+
Type: schema.TypeString,
93+
Computed: true,
94+
Description: "SSL certificate validity period, time format YYYY-MM-DD HH:MM:SS Note: This field may return null, indicating that no valid value can be obtained.",
95+
},
96+
"ssl_validity": {
97+
Type: schema.TypeInt,
98+
Computed: true,
99+
Description: "SSL certificate validity, 0-invalid, 1-valid Note: This field may return null, indicating that no valid value can be obtained.",
100+
},
101+
},
102+
},
103+
},
80104
"result_output_file": {
81105
Type: schema.TypeString,
82106
Optional: true,
@@ -170,6 +194,26 @@ func dataSourceTencentCloudSqlserverInsAttributeRead(d *schema.ResourceData, met
170194
_ = d.Set("tde_config", tmpList)
171195
}
172196

197+
if insAttribute.SSLConfig != nil {
198+
tmpList := make([]map[string]interface{}, 0)
199+
configMap := map[string]interface{}{}
200+
if insAttribute.SSLConfig.Encryption != nil {
201+
configMap["encryption"] = insAttribute.SSLConfig.Encryption
202+
}
203+
204+
if insAttribute.SSLConfig.SSLValidityPeriod != nil {
205+
configMap["ssl_validity_period"] = insAttribute.SSLConfig.SSLValidityPeriod
206+
}
207+
208+
if insAttribute.SSLConfig.SSLValidity != nil {
209+
configMap["ssl_validity"] = insAttribute.SSLConfig.SSLValidity
210+
}
211+
212+
tmpList = append(tmpList, configMap)
213+
214+
_ = d.Set("ssl_config", tmpList)
215+
}
216+
173217
d.SetId(instanceId)
174218
output, ok := d.GetOk("result_output_file")
175219
if ok && output.(string) != "" {

tencentcloud/extension_sqlserver.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,3 +210,15 @@ const (
210210
UpdateDefaultTimeout = 7200
211211
DeleteDefaultTimeout = 7200
212212
)
213+
214+
const (
215+
SSL_TYPE_ENABLE = "enable"
216+
SSL_TYPE_DISABLE = "disable"
217+
SSL_TYPE_RENEW = "renew"
218+
)
219+
220+
var SSL_TYPE = []string{
221+
SSL_TYPE_ENABLE,
222+
SSL_TYPE_DISABLE,
223+
SSL_TYPE_RENEW,
224+
}

tencentcloud/provider.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,7 @@ func Provider() *schema.Provider {
532532
"tencentcloud_sqlserver_basic_instances": dataSourceTencentCloudSqlserverBasicInstances(),
533533
"tencentcloud_sqlserver_query_xevent": dataSourceTencentCloudSqlserverQueryXevent(),
534534
"tencentcloud_sqlserver_ins_attribute": dataSourceTencentCloudSqlserverInsAttribute(),
535+
"tencentcloud_sqlserver_desc_ha_log": dataSourceTencentCloudSqlserverDescHaLog(),
535536
"tencentcloud_tcr_instances": dataSourceTencentCloudTCRInstances(),
536537
"tencentcloud_tcr_namespaces": dataSourceTencentCloudTCRNamespaces(),
537538
"tencentcloud_tcr_tokens": dataSourceTencentCloudTCRTokens(),
@@ -1338,6 +1339,7 @@ func Provider() *schema.Provider {
13381339
"tencentcloud_sqlserver_instance_tde": resourceTencentCloudSqlserverInstanceTDE(),
13391340
"tencentcloud_sqlserver_database_tde": resourceTencentCloudSqlserverDatabaseTDE(),
13401341
"tencentcloud_sqlserver_general_cloud_ro_instance": resourceTencentCloudSqlserverGeneralCloudRoInstance(),
1342+
"tencentcloud_sqlserver_instance_ssl": resourceTencentCloudSqlserverInstanceSsl(),
13411343
"tencentcloud_tcr_instance": resourceTencentCloudTcrInstance(),
13421344
"tencentcloud_tcr_namespace": resourceTencentCloudTcrNamespace(),
13431345
"tencentcloud_tcr_repository": resourceTencentCloudTcrRepository(),

0 commit comments

Comments
 (0)