Skip to content

Commit d637f0c

Browse files
author
mikatong
committed
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

+3
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

+2-2
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

+5-2
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

+82-1
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

+60
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

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)