Skip to content

Commit 6ba1e81

Browse files
authored
fix(sqlserver): [120276071] tencentcloud_sqlserver_readonly_instance support import (#3050)
* add * add * add * add
1 parent 60bcc45 commit 6ba1e81

File tree

12 files changed

+3307
-2458
lines changed

12 files changed

+3307
-2458
lines changed

.changelog/3050.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_sqlserver_readonly_instance: support import
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.1034
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.1046
49-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1071
49+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1073
5050
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.1053
5151
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
5252
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.1058
@@ -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.816
81+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1073
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.524

go.sum

+8
Original file line numberDiff line numberDiff line change
@@ -949,6 +949,10 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1068 h1:mI0
949949
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1068/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
950950
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1071 h1:Q/Ue/yRv4HSpaiFAnXIshoDjxzwyhwezEidXU49Boa4=
951951
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1071/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
952+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1072 h1:zoo8LhsH0kC3ysBCMDmgOCVzyQKTpw7foOzNoxAXcGE=
953+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1072/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
954+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1073 h1:AWEtNWRQwIh9xJVarhhTB3h1CglBV5a0pMI9pvQvZ60=
955+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1073/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
952956
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ=
953957
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY=
954958
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU=
@@ -1033,6 +1037,10 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486 h1:eHLaL+h
10331037
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486/go.mod h1:MSsho0YlAsoPCOMqdBfwqGd/SMQ0FTGh0a6emBy2X+g=
10341038
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.816 h1:ESXJjklPGlKzdprjW5F2DM/NRcG/A6Vq3l3LcBvIvZI=
10351039
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.816/go.mod h1:J9Ce9D/ewpqzUsBAwINc+59qpDqYT9egjwyUsMHpDwA=
1040+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1072 h1:ET6o8jZ9+/y+EIOBCvSUhkp53aWAf294ZyfnrsA9MkU=
1041+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1072/go.mod h1:AVdVfejWJQlM0dYQp6DA+vbe48zm/AZ3wxxucnN8kL0=
1042+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1073 h1:sjLorWu5GwioPHJSbLPv/prfvvRYlK8FTtwtCHAjKzc=
1043+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.1073/go.mod h1:ldl6POfJqrGX8zi46gkZfZtloBrqLwlbgXijZFBc5fM=
10361044
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1015 h1:4fTbXtkXwleuDu/xYVELGpkuBLPgW+raED6y7Ni63sA=
10371045
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1015/go.mod h1:0ZWI4Rd0p6LnXEvEaj/DbUza8B2s74AllJr1WXrsLtY=
10381046
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssm v1.0.691 h1:UE55TqueOP889MDcJ+cBW+MBjtzvWUw5fuOBWGCBIjs=

tencentcloud/services/sqlserver/resource_tc_sqlserver_readonly_instance.go

+37-1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,21 @@ func ResourceTencentCloudSqlserverReadonlyInstance() *schema.Resource {
6969
Optional: true,
7070
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.",
7171
},
72+
"engine_version": {
73+
Type: schema.TypeString,
74+
Computed: true,
75+
Description: "Version of the SQL Server database engine.",
76+
},
77+
"ha_type": {
78+
Type: schema.TypeString,
79+
Computed: true,
80+
Description: "Instance type.",
81+
},
82+
"project_id": {
83+
Type: schema.TypeInt,
84+
Computed: true,
85+
Description: "Project ID.",
86+
},
7287
}
7388

7489
basic := TencentSqlServerBasicInfo(true)
@@ -81,7 +96,9 @@ func ResourceTencentCloudSqlserverReadonlyInstance() *schema.Resource {
8196
Read: resourceTencentCloudSqlserverReadonlyInstanceRead,
8297
Update: resourceTencentCloudSqlserverReadonlyInstanceUpdate,
8398
Delete: resourceTencentCloudSqlserverReadonlyInstanceDelete,
84-
99+
Importer: &schema.ResourceImporter{
100+
State: schema.ImportStatePassthrough,
101+
},
85102
Schema: readonlyInstanceInfo,
86103
}
87104
}
@@ -263,6 +280,25 @@ func resourceTencentCloudSqlserverReadonlyInstanceRead(d *schema.ResourceData, m
263280
_ = d.Set("readonly_groups_max_delay_time", readOnlyInstance.ReadOnlyMaxDelayTime)
264281
_ = d.Set("readonly_groups_min_in_group", readOnlyInstance.MinReadOnlyInGroup)
265282

283+
readOnlyGroup, err := sqlserverService.DescribeReadOnlyGroupListById(ctx, *readOnlyInstance.MasterInstanceId, *readOnlyInstance.ReadOnlyGroupId)
284+
if readOnlyGroup == nil {
285+
d.SetId("")
286+
log.Printf("[WARN]%s resource `sqlserver_readonly_instance` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
287+
return nil
288+
}
289+
290+
if readOnlyGroup.ReadOnlyGroupType != nil {
291+
_ = d.Set("readonly_group_type", readOnlyGroup.ReadOnlyGroupType)
292+
}
293+
294+
if readOnlyGroup.ReadOnlyGroupForcedUpgrade != nil {
295+
if *readOnlyGroup.ReadOnlyGroupForcedUpgrade == 1 {
296+
_ = d.Set("force_upgrade", true)
297+
} else {
298+
_ = d.Set("force_upgrade", false)
299+
}
300+
}
301+
266302
tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn()
267303
tagService := svctag.NewTagService(tcClient)
268304
tags, err := tagService.DescribeResourceTags(ctx, "sqlserver", "instance", tcClient.Region, d.Id())

tencentcloud/services/sqlserver/resource_tc_sqlserver_readonly_instance.md

+14-21
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,18 @@ resource "tencentcloud_security_group" "security_group" {
2525
description = "desc."
2626
}
2727
28-
resource "tencentcloud_sqlserver_basic_instance" "example" {
29-
name = "tf-example"
30-
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.4.name
31-
charge_type = "POSTPAID_BY_HOUR"
32-
vpc_id = tencentcloud_vpc.vpc.id
33-
subnet_id = tencentcloud_subnet.subnet.id
34-
project_id = 0
35-
memory = 4
36-
storage = 100
37-
cpu = 2
38-
machine_type = "CLOUD_PREMIUM"
39-
maintenance_week_set = [1, 2, 3]
40-
maintenance_start_time = "09:00"
41-
maintenance_time_span = 3
42-
security_groups = [tencentcloud_security_group.security_group.id]
43-
44-
tags = {
45-
"test" = "test"
46-
}
28+
resource "tencentcloud_sqlserver_instance" "example" {
29+
name = "tf-example"
30+
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.4.name
31+
multi_zones = true
32+
charge_type = "POSTPAID_BY_HOUR"
33+
engine_version = "2019"
34+
vpc_id = tencentcloud_vpc.vpc.id
35+
subnet_id = tencentcloud_subnet.subnet.id
36+
project_id = 0
37+
memory = 16
38+
storage = 20
39+
security_groups = [tencentcloud_security_group.security_group.id]
4740
}
4841
4942
resource "tencentcloud_sqlserver_readonly_instance" "example" {
@@ -54,11 +47,11 @@ resource "tencentcloud_sqlserver_readonly_instance" "example" {
5447
subnet_id = tencentcloud_subnet.subnet.id
5548
memory = 4
5649
storage = 20
57-
master_instance_id = tencentcloud_sqlserver_basic_instance.example.id
50+
master_instance_id = tencentcloud_sqlserver_instance.example.id
5851
readonly_group_type = 1
5952
force_upgrade = true
6053
tags = {
61-
"test" = "test"
54+
CreateBy = "Terraform"
6255
}
6356
}
6457
```

tencentcloud/services/sqlserver/service_tencentcloud_sqlserver.go

+40
Original file line numberDiff line numberDiff line change
@@ -554,6 +554,46 @@ func (me *SqlserverService) DescribeReadonlyGroupListByReadonlyInstanceId(ctx co
554554
return
555555
}
556556

557+
func (me *SqlserverService) DescribeReadOnlyGroupListById(ctx context.Context, masterInstanceId, readOnlyGroupId string) (readOnlyGroup *sqlserver.ReadOnlyGroup, errRet error) {
558+
logId := tccommon.GetLogId(ctx)
559+
request := sqlserver.NewDescribeReadOnlyGroupListRequest()
560+
response := sqlserver.NewDescribeReadOnlyGroupListResponse()
561+
request.InstanceId = &masterInstanceId
562+
defer func() {
563+
if errRet != nil {
564+
log.Printf("[CRITAL]%s api[%s] fail, reason[%s]", logId, request.GetAction(), errRet.Error())
565+
}
566+
}()
567+
568+
outErr := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
569+
ratelimit.Check(request.GetAction())
570+
result, err := me.client.UseSqlserverClient().DescribeReadOnlyGroupList(request)
571+
if err != nil {
572+
return tccommon.RetryError(err)
573+
}
574+
575+
if result == nil || result.Response == nil || result.Response.ReadOnlyGroupSet == nil {
576+
return resource.NonRetryableError(fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()))
577+
}
578+
579+
response = result
580+
return nil
581+
})
582+
583+
if outErr != nil {
584+
return nil, outErr
585+
}
586+
587+
for _, item := range response.Response.ReadOnlyGroupSet {
588+
if *item.ReadOnlyGroupId == readOnlyGroupId {
589+
readOnlyGroup = item
590+
break
591+
}
592+
}
593+
594+
return
595+
}
596+
557597
func (me *SqlserverService) CreateSqlserverAccount(ctx context.Context, instanceId string, userName string, password string, remark string, isAdmin bool) (errRet error) {
558598
logId := tccommon.GetLogId(ctx)
559599
request := sqlserver.NewCreateAccountRequest()

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)