Skip to content

Commit fa305fc

Browse files
authored
Fix/sqlserver db sweeper (#1038)
* fix: tke - security group ref uniq * fix: sqlserver db attach sweeper and remark
1 parent d8f1bfa commit fa305fc

6 files changed

+92
-10
lines changed

tencentcloud/basic_test.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,14 @@ variable "subnet_cidr_less" {
182182
}
183183
`
184184

185+
const fixedTagVariable = `
186+
variable "fixed_tags" {
187+
default = {
188+
fixed_resource: "do_not_remove"
189+
}
190+
}
191+
`
192+
185193
const defaultInstanceVariable = defaultVpcVariable + `
186194
data "tencentcloud_availability_zones" "default" {
187195
}
@@ -233,9 +241,10 @@ locals {
233241
subnet_id = data.tencentcloud_vpc_subnets.gz3.instance_list.0.subnet_id
234242
}`
235243

236-
const defaultSecurityGroupData = `
244+
const defaultSecurityGroupData = fixedTagVariable + `
237245
data "tencentcloud_security_groups" "internal" {
238246
name = "default"
247+
tags = var.fixed_tags
239248
}
240249
241250
locals {

tencentcloud/resource_tc_sqlserver_account_db_attachment_test.go

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,48 @@ import (
1313
var testSqlserverAccountDBAttachmentResourceName = "tencentcloud_sqlserver_account_db_attachment"
1414
var testSqlserverAccountDBAttachmentResourceKey = testSqlserverAccountDBAttachmentResourceName + ".test"
1515

16+
func init() {
17+
// go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_sqlserver_account_db_attachment
18+
resource.AddTestSweepers(testSqlserverAccountDBAttachmentResourceName, &resource.Sweeper{
19+
Name: testSqlserverAccountDBAttachmentResourceName,
20+
F: func(r string) error {
21+
logId := getLogId(contextNil)
22+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
23+
cli, _ := sharedClientForRegion(r)
24+
client := cli.(*TencentCloudClient).apiV3Conn
25+
service := SqlserverService{client}
26+
27+
db, err := service.DescribeSqlserverInstances(ctx, "", defaultSQLServerName, -1, "", "", -1)
28+
29+
if err != nil {
30+
return err
31+
}
32+
33+
if len(db) == 0 {
34+
return fmt.Errorf("%s not exists", defaultSQLServerName)
35+
}
36+
37+
instanceId := *db[0].InstanceId
38+
39+
records, err := service.DescribeAccountDBAttachments(ctx, instanceId, defaultSQLServerAccount, defaultSQLServerDB)
40+
if err != nil {
41+
return err
42+
}
43+
44+
if len(records) > 0 {
45+
err = service.ModifyAccountDBAttachment(ctx, instanceId, defaultSQLServerAccount, defaultSQLServerDB, "Delete")
46+
}
47+
48+
if err != nil {
49+
return err
50+
}
51+
52+
return nil
53+
},
54+
})
55+
}
56+
1657
func TestAccTencentCloudSqlserverAccountDBAttachmentResource(t *testing.T) {
17-
t.Parallel()
1858
resource.Test(t, resource.TestCase{
1959
PreCheck: func() { testAccPreCheck(t) },
2060
Providers: testAccProviders,
@@ -119,8 +159,8 @@ func testAccCheckSqlserverAccountDBAttachmentExists(n string) resource.TestCheck
119159
const testAccSqlserverAccountDBAttachment string = CommonPresetSQLServerAccount + `
120160
resource "tencentcloud_sqlserver_account_db_attachment" "test" {
121161
instance_id = local.sqlserver_id
122-
account_name = local.sqlserver_account
123-
db_name = local.sqlserver_db
162+
account_name = local.sqlserver_account # "keep_sqlserver_account"
163+
db_name = local.sqlserver_db # "keep_sqlserver_db"
124164
privilege = "ReadOnly"
125165
}
126166
`

tencentcloud/resource_tc_sqlserver_db_test.go

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package tencentcloud
33
import (
44
"context"
55
"fmt"
6+
"log"
67
"testing"
78

89
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
@@ -22,13 +23,25 @@ func init() {
2223
client := cli.(*TencentCloudClient).apiV3Conn
2324
service := SqlserverService{client}
2425

25-
instance, err := service.DescribeSqlserverInstances(ctx, "", defaultSQLServerName, -1, "", "", -1)
26+
instances, err := service.DescribeSqlserverInstances(ctx, "", "", -1, "", "", -1)
2627

2728
if err != nil {
2829
return err
2930
}
3031

31-
insId := *instance[0].InstanceId
32+
var (
33+
insId string
34+
subInsId string
35+
)
36+
37+
for _, v := range instances {
38+
if *v.Name == defaultSQLServerName {
39+
insId = *v.InstanceId
40+
}
41+
if *v.Name == defaultSubSQLServerName {
42+
subInsId = *v.InstanceId
43+
}
44+
}
3245

3346
dbs, err := service.DescribeDBsOfInstance(ctx, insId)
3447

@@ -47,6 +60,20 @@ func init() {
4760
}
4861
}
4962

63+
// Clear sub instance db
64+
subDbs, err := service.DescribeDBsOfInstance(ctx, subInsId)
65+
66+
for i := range subDbs {
67+
db := subDbs[i]
68+
if *db.Name == defaultSQLServerPubSubDB {
69+
err = service.DeleteSqlserverDB(ctx, subInsId, []*string{db.Name})
70+
break
71+
}
72+
}
73+
74+
if err != nil {
75+
log.Printf("Delete sub instance DB fail: %s", err.Error())
76+
}
5077
return nil
5178
},
5279
})

tencentcloud/resource_tc_sqlserver_instance.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,10 @@ func resourceTencentCloudSqlserverInstance() *schema.Resource {
213213
Update: resourceTencentCloudSqlserverInstanceUpdate,
214214
Delete: resourceTencentCLoudSqlserverInstanceDelete,
215215
Importer: &schema.ResourceImporter{
216-
State: schema.ImportStatePassthrough,
216+
State: func(d *schema.ResourceData, i interface{}) ([]*schema.ResourceData, error) {
217+
_ = d.Set("auto_voucher", 0)
218+
return []*schema.ResourceData{d}, nil
219+
},
217220
},
218221
Schema: specialInfo,
219222
}

tencentcloud/resource_tc_sqlserver_instance_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,12 +422,12 @@ resource "tencentcloud_sqlserver_instance" "test" {
422422
}
423423
`
424424

425-
const testAccSqlserverInstanceMultiCluster string = testAccSqlserverAZ + `
425+
const testAccSqlserverInstanceMultiCluster string = testAccSqlserverBasicInstanceNetwork + `
426426
resource "tencentcloud_sqlserver_instance" "test" {
427427
name = "tf_sqlserver_instance_multi"
428428
engine_version = "2017"
429429
charge_type = "POSTPAID_BY_HOUR"
430-
availability_zone = local.az
430+
availability_zone = var.default_az
431431
vpc_id = local.vpc_id
432432
subnet_id = local.subnet_id
433433
security_groups = [local.sg_id]

tencentcloud/service_tencentcloud_sqlserver.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,10 @@ func (me *SqlserverService) CreateSqlserverAccount(ctx context.Context, instance
553553
}()
554554

555555
request.InstanceId = &instanceId
556-
account := sqlserver.AccountCreateInfo{UserName: &userName, Password: &password, IsAdmin: &isAdmin, Remark: &remark}
556+
account := sqlserver.AccountCreateInfo{UserName: &userName, Password: &password, IsAdmin: &isAdmin}
557+
if remark != "" {
558+
account.Remark = &remark
559+
}
557560
request.Accounts = []*sqlserver.AccountCreateInfo{&account}
558561

559562
ratelimit.Check(request.GetAction())

0 commit comments

Comments
 (0)