Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit d637f0c

Browse files
author
mikatong
committedApr 22, 2025·
add multi_zones, multi_nodes, dr_zones, disk_encrypt_flag
1 parent 365c103 commit d637f0c

File tree

9 files changed

+213
-11
lines changed

9 files changed

+213
-11
lines changed
 

‎.changelog/3315.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_sqlserver_general_cloud_instance: add multi_zones, multi_nodes, dr_zones, disk_encrypt_flag
3+
```

‎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.1107
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.1135
49-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1142
49+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1145
5050
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.1128
5151
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
5252
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.1111
@@ -78,7 +78,7 @@ require (
7878
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.1034
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.1073
81+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1136
8282
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1015
8383
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssm v1.0.691
8484
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sts v1.0.1142

‎go.sum

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -941,8 +941,9 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1130/go.mod
941941
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1133/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
942942
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1135 h1:NAu4sH5c+kGTZQ0rwhnuYjIXbentw3Np+TbwimH22uc=
943943
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1135/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
944-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1142 h1:tQRy/XRJOqtl4TKUVONQy8EvYEoU6alMM0sHO5bW5Q8=
945-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1142/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
944+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1136/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
945+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1145 h1:DETyir/MtG+GLOD0OatzjrQTTXRguFSJo1ZtPXtbIQw=
946+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1145/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
946947
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ=
947948
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY=
948949
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU=
@@ -1021,6 +1022,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486 h1:eHLaL+h
10211022
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486/go.mod h1:MSsho0YlAsoPCOMqdBfwqGd/SMQ0FTGh0a6emBy2X+g=
10221023
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1073 h1:sjLorWu5GwioPHJSbLPv/prfvvRYlK8FTtwtCHAjKzc=
10231024
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1073/go.mod h1:ldl6POfJqrGX8zi46gkZfZtloBrqLwlbgXijZFBc5fM=
1025+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1136 h1:WbkKZyPVRzr2pPlQKxPwVNCZ3prVWt2nseo1ja7NyEo=
1026+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1136/go.mod h1:m7a2VoL3Cf2dECJN3QZPnHwaqJAfG2Vu17sLpnfBqho=
10241027
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1015 h1:4fTbXtkXwleuDu/xYVELGpkuBLPgW+raED6y7Ni63sA=
10251028
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1015/go.mod h1:0ZWI4Rd0p6LnXEvEaj/DbUza8B2s74AllJr1WXrsLtY=
10261029
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssm v1.0.691 h1:UE55TqueOP889MDcJ+cBW+MBjtzvWUw5fuOBWGCBIjs=

‎tencentcloud/services/sqlserver/resource_tc_sqlserver_general_cloud_instance.go

Lines changed: 82 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,32 @@ func ResourceTencentCloudSqlserverGeneralCloudInstance() *schema.Resource {
160160
Computed: true,
161161
Description: "External port number.",
162162
},
163+
"multi_zones": {
164+
Type: schema.TypeBool,
165+
Optional: true,
166+
Computed: true,
167+
Description: "Whether to deploy across availability zones, the default value is false.",
168+
},
169+
"multi_nodes": {
170+
Type: schema.TypeBool,
171+
Optional: true,
172+
Computed: true,
173+
Description: "Whether it is a multi-node architecture instance, the default value is false. When MultiNodes = true, the parameter MultiZones must be true.",
174+
},
175+
"dr_zones": {
176+
Type: schema.TypeSet,
177+
Optional: true,
178+
Computed: true,
179+
Description: "The standby node availability area is empty by default. When MultiNodes = true, the primary node and standby node availability areas cannot all be the same. The minimum number of standby availability areas set is 2, and the maximum number is no more than 5.",
180+
Elem: &schema.Schema{
181+
Type: schema.TypeString,
182+
},
183+
},
184+
"disk_encrypt_flag": {
185+
Type: schema.TypeInt,
186+
Optional: true,
187+
Description: "Disk encryption identification, 0-not encrypted, 1-encrypted.",
188+
},
163189
},
164190
}
165191
}
@@ -279,6 +305,23 @@ func resourceTencentCloudSqlserverGeneralCloudInstanceCreate(d *schema.ResourceD
279305
request.TimeZone = helper.String(v.(string))
280306
}
281307

308+
if v, ok := d.GetOkExists("multi_zones"); ok {
309+
request.MultiZones = helper.Bool(v.(bool))
310+
}
311+
if v, ok := d.GetOkExists("multi_nodes"); ok {
312+
request.MultiNodes = helper.Bool(v.(bool))
313+
}
314+
if v, ok := d.GetOk("dr_zones"); ok {
315+
drZones := v.(*schema.Set).List()
316+
for i := range drZones {
317+
drZone := drZones[i].(string)
318+
request.DrZones = append(request.DrZones, &drZone)
319+
}
320+
}
321+
if v, ok := d.GetOkExists("disk_encrypt_flag"); ok {
322+
request.DiskEncryptFlag = helper.IntInt64(v.(int))
323+
}
324+
282325
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
283326
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseSqlserverClient().CreateCloudDBInstances(request)
284327
if e != nil {
@@ -430,6 +473,44 @@ func resourceTencentCloudSqlserverGeneralCloudInstanceRead(d *schema.ResourceDat
430473
_ = d.Set("tgw_wan_vport", generalCloudInstance.TgwWanVPort)
431474
}
432475

476+
if generalCloudInstance.IsDrZone != nil {
477+
_ = d.Set("multi_zones", generalCloudInstance.IsDrZone)
478+
}
479+
480+
if len(generalCloudInstance.MultiSlaveZones) > 0 {
481+
_ = d.Set("multi_nodes", true)
482+
drZones := make([]string, 0)
483+
for _, multiSlaveZone := range generalCloudInstance.MultiSlaveZones {
484+
drZones = append(drZones, *multiSlaveZone.SlaveZone)
485+
}
486+
if len(drZones) > 0 {
487+
_ = d.Set("dr_zones", drZones)
488+
}
489+
} else {
490+
_ = d.Set("multi_nodes", false)
491+
}
492+
493+
var insAttribute *sqlserver.DescribeDBInstancesAttributeResponseParams
494+
paramMap := map[string]interface{}{
495+
"InstanceId": helper.String(instanceId),
496+
}
497+
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
498+
result, e := service.DescribeSqlserverInsAttributeByFilter(ctx, paramMap)
499+
if e != nil {
500+
return tccommon.RetryError(e)
501+
}
502+
503+
insAttribute = result
504+
return nil
505+
})
506+
507+
if err != nil {
508+
return err
509+
}
510+
511+
if insAttribute.IsDiskEncryptFlag != nil {
512+
_ = d.Set("disk_encrypt_flag", insAttribute.IsDiskEncryptFlag)
513+
}
433514
maintenanceSpan, err := service.DescribeMaintenanceSpanById(ctx, instanceId)
434515
if err != nil {
435516
return err
@@ -488,7 +569,7 @@ func resourceTencentCloudSqlserverGeneralCloudInstanceUpdate(d *schema.ResourceD
488569
)
489570

490571
request.InstanceId = &instanceId
491-
immutableArgs := []string{"zone", "machine_type", "instance_charge_type", "project_id", "subnet_id", "vpc_id", "period", "security_group_list", "weekly", "start_time", "span", "resource_tags", "collation", "time_zone"}
572+
immutableArgs := []string{"zone", "machine_type", "instance_charge_type", "project_id", "subnet_id", "vpc_id", "period", "security_group_list", "weekly", "start_time", "span", "resource_tags", "collation", "time_zone", "multi_zones", "multi_nodes", "dr_zones", "disk_encrypt_flag"}
492573

493574
for _, v := range immutableArgs {
494575
if d.HasChange(v) {

‎tencentcloud/services/sqlserver/resource_tc_sqlserver_general_cloud_instance_test.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,3 +101,63 @@ resource "tencentcloud_sqlserver_general_cloud_instance" "example" {
101101
time_zone = "China Standard Time"
102102
}
103103
`
104+
105+
func TestAccTencentCloudSqlserverGeneralCloudInstanceResource_multiZonesAndMultiNodes(t *testing.T) {
106+
t.Parallel()
107+
resource.Test(t, resource.TestCase{
108+
PreCheck: func() {
109+
tcacctest.AccPreCheck(t)
110+
},
111+
CheckDestroy: testAccCheckSqlserverInstanceDestroy,
112+
Providers: tcacctest.AccProviders,
113+
Steps: []resource.TestStep{
114+
{
115+
Config: testAccSqlserverGeneralCloudInstance_multiZonesAndMultiNodes,
116+
Check: resource.ComposeTestCheckFunc(
117+
testAccCheckSqlserverInstanceExists("tencentcloud_sqlserver_general_cloud_instance.multi_zones_multi_nodes"),
118+
resource.TestCheckResourceAttrSet("tencentcloud_sqlserver_general_cloud_instance.multi_zones_multi_nodes", "id"),
119+
resource.TestCheckResourceAttr("tencentcloud_sqlserver_general_cloud_instance.multi_zones_multi_nodes", "multi_zones", "true"),
120+
resource.TestCheckResourceAttr("tencentcloud_sqlserver_general_cloud_instance.multi_zones_multi_nodes", "multi_nodes", "true"),
121+
resource.TestCheckResourceAttr("tencentcloud_sqlserver_general_cloud_instance.multi_zones_multi_nodes", "dr_zones.#", "2"),
122+
resource.TestCheckResourceAttr("tencentcloud_sqlserver_general_cloud_instance.multi_zones_multi_nodes", "disk_encrypt_flag", "1"),
123+
),
124+
},
125+
{
126+
ResourceName: "tencentcloud_sqlserver_general_cloud_instance.multi_zones_multi_nodes",
127+
ImportState: true,
128+
ImportStateVerify: true,
129+
ImportStateVerifyIgnore: []string{"period"},
130+
},
131+
},
132+
})
133+
}
134+
135+
const testAccSqlserverGeneralCloudInstance_multiZonesAndMultiNodes = tcacctest.DefaultVpcSubnets + tcacctest.DefaultSecurityGroupData + `
136+
resource "tencentcloud_sqlserver_general_cloud_instance" "multi_zones_multi_nodes" {
137+
name = "multi_zones_multi_nodes"
138+
zone = "ap-guangzhou-3"
139+
memory = 4
140+
storage = 20
141+
cpu = 2
142+
machine_type = "CLOUD_BSSD"
143+
instance_charge_type = "POSTPAID"
144+
project_id = 0
145+
subnet_id = local.subnet_id
146+
vpc_id = local.vpc_id
147+
db_version = "2017"
148+
security_group_list = [local.sg_id]
149+
weekly = [1, 2, 3, 5, 6, 7]
150+
start_time = "00:00"
151+
span = 6
152+
resource_tags {
153+
tag_key = "test"
154+
tag_value = "test"
155+
}
156+
collation = "Chinese_PRC_CI_AS"
157+
time_zone = "China Standard Time"
158+
multi_zones = true
159+
multi_nodes = true
160+
dr_zones = ["ap-guangzhou-6", "ap-guangzhou-7"]
161+
disk_encrypt_flag = 1
162+
}
163+
`

‎vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver/v20180328/models.go

Lines changed: 54 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎vendor/modules.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1166,7 +1166,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit/v20190319
11661166
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.1135
11671167
## explicit; go 1.14
11681168
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls/v20201016
1169-
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1142
1169+
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1145
11701170
## explicit; go 1.11
11711171
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common
11721172
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors
@@ -1288,7 +1288,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses/v20201002
12881288
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486
12891289
## explicit; go 1.14
12901290
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms/v20210111
1291-
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1073
1291+
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1136
12921292
## explicit; go 1.14
12931293
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver/v20180328
12941294
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1015

‎website/docs/r/sqlserver_general_cloud_instance.html.markdown

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,12 @@ The following arguments are supported:
7474
* `auto_renew_flag` - (Optional, Int) Automatic renewal flag: 0-normal renewal 1-automatic renewal, the default is 1 automatic renewal. Valid only when purchasing a prepaid instance. Valid only when the 'instance_charge_type' parameter value is 'PREPAID'.
7575
* `collation` - (Optional, String) System character set collation, default: Chinese_PRC_CI_AS.
7676
* `db_version` - (Optional, String) sqlserver version, currently all supported versions are: 2008R2 (SQL Server 2008 R2 Enterprise), 2012SP3 (SQL Server 2012 Enterprise), 201202 (SQL Server 2012 Standard), 2014SP2 (SQL Server 2014 Enterprise), 201402 (SQL Server 2014 Standard), 2016SP1 (SQL Server 2016 Enterprise), 201602 (SQL Server 2016 Standard), 2017 (SQL Server 2017 Enterprise), 201702 (SQL Server 2017 Standard), 2019 (SQL Server 2019 Enterprise), 201902 (SQL Server 2019 Standard). Each region supports different versions for sale, and the version information that can be sold in each region can be pulled through the DescribeProductConfig interface. If left blank, the default version is 2008R2.
77+
* `disk_encrypt_flag` - (Optional, Int) Disk encryption identification, 0-not encrypted, 1-encrypted.
78+
* `dr_zones` - (Optional, Set: [`String`]) The standby node availability area is empty by default. When MultiNodes = true, the primary node and standby node availability areas cannot all be the same. The minimum number of standby availability areas set is 2, and the maximum number is no more than 5.
7779
* `ha_type` - (Optional, String, **Deprecated**) It has been deprecated from version 1.81.2. Upgrade the high-availability architecture of sqlserver, upgrade from mirror disaster recovery to always on cluster disaster recovery, only support 2017 and above and support always on high-availability instances, do not support downgrading to mirror disaster recovery, CLUSTER-upgrade to always on capacity Disaster, if not filled, the high-availability architecture will not be modified.
7880
* `instance_charge_type` - (Optional, String) Payment mode, the value supports PREPAID (prepaid), POSTPAID (postpaid).
81+
* `multi_nodes` - (Optional, Bool) Whether it is a multi-node architecture instance, the default value is false. When MultiNodes = true, the parameter MultiZones must be true.
82+
* `multi_zones` - (Optional, Bool) Whether to deploy across availability zones, the default value is false.
7983
* `period` - (Optional, Int) Purchase instance period, the default value is 1, which means one month. The value cannot exceed 48. Valid only when the 'instance_charge_type' parameter value is 'PREPAID'.
8084
* `project_id` - (Optional, Int) project ID.
8185
* `resource_tags` - (Optional, List) A collection of tags bound to the new instance.

0 commit comments

Comments
 (0)
Please sign in to comment.