Skip to content

fix(sqlserver): [120276071] tencentcloud_sqlserver_readonly_instance support import #3050

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 4 commits into from
Jan 3, 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/3050.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
resource/tencentcloud_sqlserver_readonly_instance: support import
```
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.1034
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.1046
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1071
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1073
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.1053
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.1058
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.816
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1073
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.524
Expand Down
8 changes: 8 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -949,6 +949,10 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1068 h1:mI0
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1068/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1071 h1:Q/Ue/yRv4HSpaiFAnXIshoDjxzwyhwezEidXU49Boa4=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1071/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1072 h1:zoo8LhsH0kC3ysBCMDmgOCVzyQKTpw7foOzNoxAXcGE=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1072/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1073 h1:AWEtNWRQwIh9xJVarhhTB3h1CglBV5a0pMI9pvQvZ60=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1073/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 @@ -1033,6 +1037,10 @@ 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.816 h1:ESXJjklPGlKzdprjW5F2DM/NRcG/A6Vq3l3LcBvIvZI=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.816/go.mod h1:J9Ce9D/ewpqzUsBAwINc+59qpDqYT9egjwyUsMHpDwA=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1072 h1:ET6o8jZ9+/y+EIOBCvSUhkp53aWAf294ZyfnrsA9MkU=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1072/go.mod h1:AVdVfejWJQlM0dYQp6DA+vbe48zm/AZ3wxxucnN8kL0=
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/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 @@ -69,6 +69,21 @@ func ResourceTencentCloudSqlserverReadonlyInstance() *schema.Resource {
Optional: true,
Description: "When `readonly_group_type`=2 and `readonly_groups_is_offline_delay`=1, it is required. After the newly created read-only group is delayed and removed, at least the number of read-only copies should be retained.",
},
"engine_version": {
Type: schema.TypeString,
Computed: true,
Description: "Version of the SQL Server database engine.",
},
"ha_type": {
Type: schema.TypeString,
Computed: true,
Description: "Instance type.",
},
"project_id": {
Type: schema.TypeInt,
Computed: true,
Description: "Project ID.",
},
}

basic := TencentSqlServerBasicInfo(true)
Expand All @@ -81,7 +96,9 @@ func ResourceTencentCloudSqlserverReadonlyInstance() *schema.Resource {
Read: resourceTencentCloudSqlserverReadonlyInstanceRead,
Update: resourceTencentCloudSqlserverReadonlyInstanceUpdate,
Delete: resourceTencentCloudSqlserverReadonlyInstanceDelete,

Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},
Schema: readonlyInstanceInfo,
}
}
Expand Down Expand Up @@ -263,6 +280,25 @@ func resourceTencentCloudSqlserverReadonlyInstanceRead(d *schema.ResourceData, m
_ = d.Set("readonly_groups_max_delay_time", readOnlyInstance.ReadOnlyMaxDelayTime)
_ = d.Set("readonly_groups_min_in_group", readOnlyInstance.MinReadOnlyInGroup)

readOnlyGroup, err := sqlserverService.DescribeReadOnlyGroupListById(ctx, *readOnlyInstance.MasterInstanceId, *readOnlyInstance.ReadOnlyGroupId)
if readOnlyGroup == nil {
d.SetId("")
log.Printf("[WARN]%s resource `sqlserver_readonly_instance` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
return nil
}

if readOnlyGroup.ReadOnlyGroupType != nil {
_ = d.Set("readonly_group_type", readOnlyGroup.ReadOnlyGroupType)
}

if readOnlyGroup.ReadOnlyGroupForcedUpgrade != nil {
if *readOnlyGroup.ReadOnlyGroupForcedUpgrade == 1 {
_ = d.Set("force_upgrade", true)
} else {
_ = d.Set("force_upgrade", false)
}
}

tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn()
tagService := svctag.NewTagService(tcClient)
tags, err := tagService.DescribeResourceTags(ctx, "sqlserver", "instance", tcClient.Region, d.Id())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,25 +25,18 @@ resource "tencentcloud_security_group" "security_group" {
description = "desc."
}

resource "tencentcloud_sqlserver_basic_instance" "example" {
name = "tf-example"
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.4.name
charge_type = "POSTPAID_BY_HOUR"
vpc_id = tencentcloud_vpc.vpc.id
subnet_id = tencentcloud_subnet.subnet.id
project_id = 0
memory = 4
storage = 100
cpu = 2
machine_type = "CLOUD_PREMIUM"
maintenance_week_set = [1, 2, 3]
maintenance_start_time = "09:00"
maintenance_time_span = 3
security_groups = [tencentcloud_security_group.security_group.id]

tags = {
"test" = "test"
}
resource "tencentcloud_sqlserver_instance" "example" {
name = "tf-example"
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.4.name
multi_zones = true
charge_type = "POSTPAID_BY_HOUR"
engine_version = "2019"
vpc_id = tencentcloud_vpc.vpc.id
subnet_id = tencentcloud_subnet.subnet.id
project_id = 0
memory = 16
storage = 20
security_groups = [tencentcloud_security_group.security_group.id]
}

resource "tencentcloud_sqlserver_readonly_instance" "example" {
Expand All @@ -54,11 +47,11 @@ resource "tencentcloud_sqlserver_readonly_instance" "example" {
subnet_id = tencentcloud_subnet.subnet.id
memory = 4
storage = 20
master_instance_id = tencentcloud_sqlserver_basic_instance.example.id
master_instance_id = tencentcloud_sqlserver_instance.example.id
readonly_group_type = 1
force_upgrade = true
tags = {
"test" = "test"
CreateBy = "Terraform"
}
}
```
Expand Down
40 changes: 40 additions & 0 deletions tencentcloud/services/sqlserver/service_tencentcloud_sqlserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -554,6 +554,46 @@ func (me *SqlserverService) DescribeReadonlyGroupListByReadonlyInstanceId(ctx co
return
}

func (me *SqlserverService) DescribeReadOnlyGroupListById(ctx context.Context, masterInstanceId, readOnlyGroupId string) (readOnlyGroup *sqlserver.ReadOnlyGroup, errRet error) {
logId := tccommon.GetLogId(ctx)
request := sqlserver.NewDescribeReadOnlyGroupListRequest()
response := sqlserver.NewDescribeReadOnlyGroupListResponse()
request.InstanceId = &masterInstanceId
defer func() {
if errRet != nil {
log.Printf("[CRITAL]%s api[%s] fail, reason[%s]", logId, request.GetAction(), errRet.Error())
}
}()

outErr := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
ratelimit.Check(request.GetAction())
result, err := me.client.UseSqlserverClient().DescribeReadOnlyGroupList(request)
if err != nil {
return tccommon.RetryError(err)
}

if result == nil || result.Response == nil || result.Response.ReadOnlyGroupSet == nil {
return resource.NonRetryableError(fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()))
}

response = result
return nil
})

if outErr != nil {
return nil, outErr
}

for _, item := range response.Response.ReadOnlyGroupSet {
if *item.ReadOnlyGroupId == readOnlyGroupId {
readOnlyGroup = item
break
}
}

return
}

func (me *SqlserverService) CreateSqlserverAccount(ctx context.Context, instanceId string, userName string, password string, remark string, isAdmin bool) (errRet error) {
logId := tccommon.GetLogId(ctx)
request := sqlserver.NewCreateAccountRequest()
Expand Down

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

Loading
Loading