Skip to content

Commit d4be886

Browse files
authored
feat(sqlserver): [122322345] support time_zone (#3228)
* feat(sqlserver): [122322345] support time_zone * feat: add changelog
1 parent aeb93f6 commit d4be886

11 files changed

+244
-0
lines changed

.changelog/3228.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_sqlserver_instance: Support time_zone field.
3+
```
4+
5+
```release-note:enhancement
6+
resource/tencentcloud_sqlserver_readonly_instance: Support time_zone field.
7+
```
8+
9+
```release-note:new-data-source
10+
tencentcloud_sqlserver_collation_time_zone
11+
```

tencentcloud/provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -742,6 +742,7 @@ func Provider() *schema.Provider {
742742
"tencentcloud_sqlserver_backup_upload_size": sqlserver.DataSourceTencentCloudSqlserverBackupUploadSize(),
743743
"tencentcloud_sqlserver_cross_region_zone": sqlserver.DataSourceTencentCloudSqlserverCrossRegionZone(),
744744
"tencentcloud_sqlserver_db_charsets": sqlserver.DataSourceTencentCloudSqlserverDBCharsets(),
745+
"tencentcloud_sqlserver_collation_time_zone": sqlserver.DataSourceTencentCloudSqlserverCollationTimeZone(),
745746
"tencentcloud_ckafka_users": ckafka.DataSourceTencentCloudCkafkaUsers(),
746747
"tencentcloud_ckafka_acls": ckafka.DataSourceTencentCloudCkafkaAcls(),
747748
"tencentcloud_ckafka_topics": ckafka.DataSourceTencentCloudCkafkaTopics(),

tencentcloud/services/sqlserver/data_source_tc_sqlserver_collation_time_zone.go

Lines changed: 109 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
Use this data source to query detailed information of sqlserver datasource_collation_time_zone
2+
3+
Example Usage
4+
5+
```hcl
6+
data "tencentcloud_sqlserver_collation_time_zone" "sqlserver_collation_time_zone" {
7+
machine_type = "CLOUD_PREMIUM"
8+
}
9+
```
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package sqlserver
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package sqlserver_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+
var testAccSqlserverCollationTimeZoneDataSourceName = "data.tencentcloud_sqlserver_collation_time_zone.sqlserver_collation_time_zone"
11+
12+
func TestAccTencentCloudSqlserverCollationTimeZoneDataSource_basic(t *testing.T) {
13+
t.Parallel()
14+
resource.Test(t, resource.TestCase{
15+
PreCheck: func() {
16+
tcacctest.AccPreCheck(t)
17+
},
18+
Providers: tcacctest.AccProviders,
19+
Steps: []resource.TestStep{
20+
{
21+
Config: testAccTencentCloudDataSqlserverBasicInstancesBasic,
22+
Check: resource.ComposeTestCheckFunc(
23+
resource.TestCheckResourceAttrSet(testAccSqlserverCollationTimeZoneDataSourceName, "name"),
24+
resource.TestCheckResourceAttrSet(testAccSqlserverCollationTimeZoneDataSourceName, "collation.#"),
25+
resource.TestCheckResourceAttrSet(testAccSqlserverCollationTimeZoneDataSourceName, "time_zone.#"),
26+
),
27+
},
28+
},
29+
})
30+
}
31+
32+
const testAccSqlserverCollationTimeZoneDataSource = `
33+
34+
data "tencentcloud_sqlserver_collation_time_zone" "sqlserver_collation_time_zone" {
35+
}
36+
`

tencentcloud/services/sqlserver/resource_tc_sqlserver_instance.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,12 @@ func TencentSqlServerBasicInfo(isROInstance bool) map[string]*schema.Schema {
8787
},
8888
Description: "Security group bound to the instance.",
8989
},
90+
"time_zone": {
91+
Type: schema.TypeString,
92+
Computed: true,
93+
Optional: true,
94+
Description: "System time zone, default: `China Standard Time`.",
95+
},
9096
//Computed values
9197
"ro_flag": {
9298
Type: schema.TypeString,
@@ -317,6 +323,10 @@ func resourceTencentCloudSqlserverInstanceCreate(d *schema.ResourceData, meta in
317323
request.SecurityGroupList = append(request.SecurityGroupList, &v)
318324
}
319325

326+
if v, ok := d.GetOk("time_zone"); ok {
327+
request.TimeZone = helper.String(v.(string))
328+
}
329+
320330
request.GoodsNum = helper.IntInt64(1)
321331
request.Zone = &zone
322332

@@ -511,6 +521,13 @@ func resourceTencentCloudSqlserverInstanceUpdate(d *schema.ResourceData, meta in
511521
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
512522
d.Partial(true)
513523

524+
immutableArgs := []string{"time_zone"}
525+
for _, v := range immutableArgs {
526+
if d.HasChange(v) {
527+
return fmt.Errorf("argument `%s` cannot be changed", v)
528+
}
529+
}
530+
514531
//basic info update
515532
if err := sqlServerAllInstanceRoleUpdate(ctx, d, meta); err != nil {
516533
return err
@@ -655,6 +672,10 @@ func tencentSqlServerBasicInfoRead(ctx context.Context, d *schema.ResourceData,
655672
_ = d.Set("vip", instance.Vip)
656673
_ = d.Set("vport", instance.Vport)
657674
_ = d.Set("security_groups", securityGroup)
675+
676+
if instance.TimeZone != nil {
677+
_ = d.Set("time_zone", instance.TimeZone)
678+
}
658679
return
659680
}
660681

tencentcloud/services/sqlserver/resource_tc_sqlserver_readonly_instance.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,10 @@ func resourceTencentCloudSqlserverReadonlyInstanceCreate(d *schema.ResourceData,
200200
request.VoucherIds = helper.InterfacesStringsPoint(v)
201201
}
202202

203+
if v, ok := d.GetOk("time_zone"); ok {
204+
request.TimeZone = helper.String(v.(string))
205+
}
206+
203207
var instanceId string
204208
var outErr, inErr error
205209

@@ -299,6 +303,10 @@ func resourceTencentCloudSqlserverReadonlyInstanceRead(d *schema.ResourceData, m
299303
}
300304
}
301305

306+
if instance.TimeZone != nil {
307+
_ = d.Set("time_zone", instance.TimeZone)
308+
}
309+
302310
tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn()
303311
tagService := svctag.NewTagService(tcClient)
304312
tags, err := tagService.DescribeResourceTags(ctx, "sqlserver", "instance", tcClient.Region, d.Id())
@@ -316,6 +324,13 @@ func resourceTencentCloudSqlserverReadonlyInstanceUpdate(d *schema.ResourceData,
316324
logId := tccommon.GetLogId(tccommon.ContextNil)
317325
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
318326

327+
immutableArgs := []string{"time_zone"}
328+
for _, v := range immutableArgs {
329+
if d.HasChange(v) {
330+
return fmt.Errorf("argument `%s` cannot be changed", v)
331+
}
332+
}
333+
319334
//basic info update
320335
if err := sqlServerAllInstanceRoleUpdate(ctx, d, meta); err != nil {
321336
return err

tencentcloud/services/sqlserver/service_tencentcloud_sqlserver.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/pkg/errors"
1414
SDKErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
1515
sqlserver "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver/v20180328"
16+
sqlserverv20180328 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver/v20180328"
1617

1718
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity"
1819
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
@@ -3458,3 +3459,41 @@ func (me *SqlserverService) DescribeSqlserverDescHaLogByFilter(ctx context.Conte
34583459
descHaLog = response.Response.SwitchLog
34593460
return
34603461
}
3462+
3463+
func (me *SqlserverService) DescribeSqlserverCollationTimeZoneByFilter(ctx context.Context, param map[string]interface{}) (ret *sqlserverv20180328.DescribeCollationTimeZoneResponseParams, errRet error) {
3464+
var (
3465+
logId = tccommon.GetLogId(ctx)
3466+
request = sqlserver.NewDescribeCollationTimeZoneRequest()
3467+
)
3468+
3469+
defer func() {
3470+
if errRet != nil {
3471+
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error())
3472+
}
3473+
}()
3474+
3475+
for k, v := range param {
3476+
if k == "MachineType" {
3477+
request.MachineType = v.(*string)
3478+
}
3479+
if k == "DBVersion" {
3480+
request.DBVersion = v.(*string)
3481+
}
3482+
}
3483+
3484+
ratelimit.Check(request.GetAction())
3485+
3486+
response, err := me.client.UseSqlserverClient().DescribeCollationTimeZone(request)
3487+
if err != nil {
3488+
errRet = err
3489+
return
3490+
}
3491+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
3492+
3493+
if response == nil || response.Response == nil {
3494+
return
3495+
}
3496+
3497+
ret = response.Response
3498+
return
3499+
}

website/docs/r/sqlserver_instance.html.markdown

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ The following arguments are supported:
6565
* `security_groups` - (Optional, Set: [`String`]) Security group bound to the instance.
6666
* `subnet_id` - (Optional, String) ID of subnet.
6767
* `tags` - (Optional, Map) The tags of the SQL Server.
68+
* `time_zone` - (Optional, String) System time zone, default: `China Standard Time`.
6869
* `voucher_ids` - (Optional, Set: [`String`]) An array of voucher IDs, currently only one can be used for a single order.
6970
* `vpc_id` - (Optional, String) ID of VPC.
7071
* `wait_switch` - (Optional, Int, **Deprecated**) It has been deprecated from version 1.81.2. The way to execute the allocation. Supported values include: 0 - execute immediately, 1 - execute in maintenance window.

website/docs/r/sqlserver_readonly_instance.html.markdown

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ The following arguments are supported:
8989
* `security_groups` - (Optional, Set: [`String`]) Security group bound to the instance.
9090
* `subnet_id` - (Optional, String) ID of subnet.
9191
* `tags` - (Optional, Map) The tags of the SQL Server.
92+
* `time_zone` - (Optional, String) System time zone, default: `China Standard Time`.
9293
* `voucher_ids` - (Optional, Set: [`String`]) An array of voucher IDs, currently only one can be used for a single order.
9394
* `vpc_id` - (Optional, String) ID of VPC.
9495
* `wait_switch` - (Optional, Int, **Deprecated**) It has been deprecated from version 1.81.2. The way to execute the allocation. Supported values include: 0 - execute immediately, 1 - execute in maintenance window.

0 commit comments

Comments
 (0)