Skip to content

fix(sqlserver): [123397725]add params #3315

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Apr 22, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .changelog/3315.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
resource/tencentcloud_sqlserver_general_cloud_instance: add multi_zones, multi_nodes, dr_zones, disk_encrypt_flag
```
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1107
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.1135
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1142
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1145
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.1128
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.1111
Expand Down Expand Up @@ -78,7 +78,7 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.1034
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.748
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1073
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1136
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1015
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssm v1.0.691
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sts v1.0.1142
Expand Down
7 changes: 5 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -941,8 +941,9 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1130/go.mod
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1133/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1135 h1:NAu4sH5c+kGTZQ0rwhnuYjIXbentw3Np+TbwimH22uc=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1135/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1142 h1:tQRy/XRJOqtl4TKUVONQy8EvYEoU6alMM0sHO5bW5Q8=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1142/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1136/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1145 h1:DETyir/MtG+GLOD0OatzjrQTTXRguFSJo1ZtPXtbIQw=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1145/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU=
Expand Down Expand Up @@ -1021,6 +1022,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486 h1:eHLaL+h
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486/go.mod h1:MSsho0YlAsoPCOMqdBfwqGd/SMQ0FTGh0a6emBy2X+g=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1073 h1:sjLorWu5GwioPHJSbLPv/prfvvRYlK8FTtwtCHAjKzc=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1073/go.mod h1:ldl6POfJqrGX8zi46gkZfZtloBrqLwlbgXijZFBc5fM=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1136 h1:WbkKZyPVRzr2pPlQKxPwVNCZ3prVWt2nseo1ja7NyEo=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1136/go.mod h1:m7a2VoL3Cf2dECJN3QZPnHwaqJAfG2Vu17sLpnfBqho=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1015 h1:4fTbXtkXwleuDu/xYVELGpkuBLPgW+raED6y7Ni63sA=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1015/go.mod h1:0ZWI4Rd0p6LnXEvEaj/DbUza8B2s74AllJr1WXrsLtY=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssm v1.0.691 h1:UE55TqueOP889MDcJ+cBW+MBjtzvWUw5fuOBWGCBIjs=
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,32 @@ func ResourceTencentCloudSqlserverGeneralCloudInstance() *schema.Resource {
Computed: true,
Description: "External port number.",
},
"multi_zones": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
Description: "Whether to deploy across availability zones, the default value is false.",
},
"multi_nodes": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
Description: "Whether it is a multi-node architecture instance, the default value is false. When MultiNodes = true, the parameter MultiZones must be true.",
},
"dr_zones": {
Type: schema.TypeSet,
Optional: true,
Computed: true,
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.",
Elem: &schema.Schema{
Type: schema.TypeString,
},
},
"disk_encrypt_flag": {
Type: schema.TypeInt,
Optional: true,
Description: "Disk encryption identification, 0-not encrypted, 1-encrypted.",
},
},
}
}
Expand Down Expand Up @@ -279,6 +305,23 @@ func resourceTencentCloudSqlserverGeneralCloudInstanceCreate(d *schema.ResourceD
request.TimeZone = helper.String(v.(string))
}

if v, ok := d.GetOkExists("multi_zones"); ok {
request.MultiZones = helper.Bool(v.(bool))
}
if v, ok := d.GetOkExists("multi_nodes"); ok {
request.MultiNodes = helper.Bool(v.(bool))
}
if v, ok := d.GetOk("dr_zones"); ok {
drZones := v.(*schema.Set).List()
for i := range drZones {
drZone := drZones[i].(string)
request.DrZones = append(request.DrZones, &drZone)
}
}
if v, ok := d.GetOkExists("disk_encrypt_flag"); ok {
request.DiskEncryptFlag = helper.IntInt64(v.(int))
}

err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseSqlserverClient().CreateCloudDBInstances(request)
if e != nil {
Expand Down Expand Up @@ -430,6 +473,44 @@ func resourceTencentCloudSqlserverGeneralCloudInstanceRead(d *schema.ResourceDat
_ = d.Set("tgw_wan_vport", generalCloudInstance.TgwWanVPort)
}

if generalCloudInstance.IsDrZone != nil {
_ = d.Set("multi_zones", generalCloudInstance.IsDrZone)
}

if len(generalCloudInstance.MultiSlaveZones) > 0 {
_ = d.Set("multi_nodes", true)
drZones := make([]string, 0)
for _, multiSlaveZone := range generalCloudInstance.MultiSlaveZones {
drZones = append(drZones, *multiSlaveZone.SlaveZone)
}
if len(drZones) > 0 {
_ = d.Set("dr_zones", drZones)
}
} else {
_ = d.Set("multi_nodes", false)
}

var insAttribute *sqlserver.DescribeDBInstancesAttributeResponseParams
paramMap := map[string]interface{}{
"InstanceId": helper.String(instanceId),
}
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
result, e := service.DescribeSqlserverInsAttributeByFilter(ctx, paramMap)
if e != nil {
return tccommon.RetryError(e)
}

insAttribute = result
return nil
})

if err != nil {
return err
}

if insAttribute.IsDiskEncryptFlag != nil {
_ = d.Set("disk_encrypt_flag", insAttribute.IsDiskEncryptFlag)
}
maintenanceSpan, err := service.DescribeMaintenanceSpanById(ctx, instanceId)
if err != nil {
return err
Expand Down Expand Up @@ -488,7 +569,7 @@ func resourceTencentCloudSqlserverGeneralCloudInstanceUpdate(d *schema.ResourceD
)

request.InstanceId = &instanceId
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"}
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"}

for _, v := range immutableArgs {
if d.HasChange(v) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,3 +101,109 @@ resource "tencentcloud_sqlserver_general_cloud_instance" "example" {
time_zone = "China Standard Time"
}
`

func TestAccTencentCloudSqlserverGeneralCloudInstanceResource_multiZonesAndMultiNodes(t *testing.T) {
t.Parallel()
resource.Test(t, resource.TestCase{
PreCheck: func() {
tcacctest.AccPreCheck(t)
},
CheckDestroy: testAccCheckSqlserverInstanceDestroy,
Providers: tcacctest.AccProviders,
Steps: []resource.TestStep{
{
Config: testAccSqlserverGeneralCloudInstance_multiZonesAndMultiNodes,
Check: resource.ComposeTestCheckFunc(
testAccCheckSqlserverInstanceExists("tencentcloud_sqlserver_general_cloud_instance.multi_zones_multi_nodes"),
resource.TestCheckResourceAttrSet("tencentcloud_sqlserver_general_cloud_instance.multi_zones_multi_nodes", "id"),
resource.TestCheckResourceAttr("tencentcloud_sqlserver_general_cloud_instance.multi_zones_multi_nodes", "multi_zones", "true"),
resource.TestCheckResourceAttr("tencentcloud_sqlserver_general_cloud_instance.multi_zones_multi_nodes", "multi_nodes", "true"),
resource.TestCheckResourceAttr("tencentcloud_sqlserver_general_cloud_instance.multi_zones_multi_nodes", "dr_zones.#", "2"),
),
},
{
ResourceName: "tencentcloud_sqlserver_general_cloud_instance.multi_zones_multi_nodes",
ImportState: true,
ImportStateVerify: true,
ImportStateVerifyIgnore: []string{"period"},
},
},
})
}

const testAccSqlserverGeneralCloudInstance_multiZonesAndMultiNodes = tcacctest.DefaultVpcSubnets + `
resource "tencentcloud_sqlserver_general_cloud_instance" "multi_zones_multi_nodes" {
name = "multi_zones_multi_nodes"
zone = "ap-guangzhou-3"
memory = 4
storage = 20
cpu = 2
machine_type = "CLOUD_BSSD"
instance_charge_type = "POSTPAID"
project_id = 0
subnet_id = local.subnet_id
vpc_id = local.vpc_id
db_version = "2017"
security_group_list = ["sg-kensue7b"]
weekly = [1, 2, 3, 5, 6, 7]
start_time = "00:00"
span = 6
resource_tags {
tag_key = "test"
tag_value = "test"
}
collation = "Chinese_PRC_CI_AS"
time_zone = "China Standard Time"
multi_zones = true
multi_nodes = true
dr_zones = ["ap-guangzhou-6", "ap-guangzhou-7"]
}
`

func TestAccTencentCloudSqlserverGeneralCloudInstanceResource_encrypt(t *testing.T) {
t.Parallel()
resource.Test(t, resource.TestCase{
PreCheck: func() {
tcacctest.AccPreCheck(t)
},
CheckDestroy: testAccCheckSqlserverInstanceDestroy,
Providers: tcacctest.AccProviders,
Steps: []resource.TestStep{
{
Config: testAccSqlserverGeneralCloudInstance_encrypt,
Check: resource.ComposeTestCheckFunc(
testAccCheckSqlserverInstanceExists("tencentcloud_sqlserver_general_cloud_instance.encrypt"),
resource.TestCheckResourceAttrSet("tencentcloud_sqlserver_general_cloud_instance.encrypt", "id"),
resource.TestCheckResourceAttr("tencentcloud_sqlserver_general_cloud_instance.encrypt", "disk_encrypt_flag", "1"),
),
},
},
})
}

const testAccSqlserverGeneralCloudInstance_encrypt = `
resource "tencentcloud_sqlserver_general_cloud_instance" "encrypt" {
name = "encrypt"
zone = "ap-shanghai-5"
memory = 4
storage = 100
cpu = 2
machine_type = "CLOUD_BSSD"
instance_charge_type = "POSTPAID"
project_id = 0
subnet_id = "subnet-oea7530b"
vpc_id = "vpc-8av1vyby"
db_version = "2019"
security_group_list = ["sg-q4d821qk"]
weekly = [1, 2, 3, 5, 6, 7]
start_time = "00:00"
span = 6
resource_tags {
tag_key = "test"
tag_value = "test"
}
collation = "Chinese_PRC_CI_AS"
time_zone = "China Standard Time"
disk_encrypt_flag = 1
}
`

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading