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

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.

0 commit comments

Comments
 (0)