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 3 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
32 changes: 32 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,38 @@ 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()
request.InstanceId = &masterInstanceId
defer func() {
if errRet != nil {
log.Printf("[CRITAL]%s api[%s] fail, reason[%s]", logId, request.GetAction(), errRet.Error())
}
}()

ratelimit.Check(request.GetAction())
response, err := me.client.UseSqlserverClient().DescribeReadOnlyGroupList(request)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

查询接口要添加重试呀

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

if err != nil {
errRet = err
return
}

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

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