Skip to content

Commit 65a1c27

Browse files
authored
Feat/sql (#2016)
* feat/sql * feat/sql * feat/sql * feat/sql
1 parent 95e2948 commit 65a1c27

12 files changed

+295
-40
lines changed

.changelog/2016.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_sqlserver_general_cloud_ro_instance: Support setting timeout
3+
```

tencentcloud/extension_sqlserver.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,3 +195,10 @@ var SQLSERVER_MIGRATION_STATUS = map[int64]string{
195195
SQLSERVER_MIGRATION_COMPLETED: "completed",
196196
SQLSERVER_MIGRATION_TERMINATED: "terminated",
197197
}
198+
199+
const (
200+
CreateDefaultTimeout = 7200
201+
ReadDefaultTimeout = 7200
202+
UpdateDefaultTimeout = 7200
203+
DeleteDefaultTimeout = 7200
204+
)

tencentcloud/resource_tc_sqlserver_account.go

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,39 @@ Use this resource to create SQL Server account
44
Example Usage
55
66
```hcl
7-
resource "tencentcloud_sqlserver_account" "foo" {
7+
data "tencentcloud_availability_zones_by_product" "zones" {
8+
product = "sqlserver"
9+
}
10+
11+
resource "tencentcloud_vpc" "vpc" {
12+
name = "vpc-example"
13+
cidr_block = "10.0.0.0/16"
14+
}
15+
16+
resource "tencentcloud_subnet" "subnet" {
17+
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.1.name
18+
name = "subnet-example"
19+
vpc_id = tencentcloud_vpc.vpc.id
20+
cidr_block = "10.0.0.0/16"
21+
is_multicast = false
22+
}
23+
24+
resource "tencentcloud_sqlserver_instance" "example" {
25+
name = "tf-example"
26+
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.1.name
27+
charge_type = "POSTPAID_BY_HOUR"
28+
vpc_id = tencentcloud_vpc.vpc.id
29+
subnet_id = tencentcloud_subnet.subnet.id
30+
project_id = 0
31+
memory = 4
32+
storage = 100
33+
}
34+
35+
resource "tencentcloud_sqlserver_account" "example" {
836
instance_id = tencentcloud_sqlserver_instance.example.id
9-
name = "tf_sqlserver_account"
10-
password = "test1233"
11-
remark = "testt"
37+
name = "tf_example_account"
38+
password = "Qwer@234"
39+
remark = "test-remark"
1240
}
1341
```
1442

tencentcloud/resource_tc_sqlserver_account_db_attachment.go

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,53 @@ Use this resource to create SQL Server account DB attachment
44
Example Usage
55
66
```hcl
7-
resource "tencentcloud_sqlserver_account_db_attachment" "foo" {
8-
instance_id = "mssql-3cdq7kx5"
7+
data "tencentcloud_availability_zones_by_product" "zones" {
8+
product = "sqlserver"
9+
}
10+
11+
resource "tencentcloud_vpc" "vpc" {
12+
name = "vpc-example"
13+
cidr_block = "10.0.0.0/16"
14+
}
15+
16+
resource "tencentcloud_subnet" "subnet" {
17+
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.1.name
18+
name = "subnet-example"
19+
vpc_id = tencentcloud_vpc.vpc.id
20+
cidr_block = "10.0.0.0/16"
21+
is_multicast = false
22+
}
23+
24+
resource "tencentcloud_sqlserver_instance" "example" {
25+
name = "tf-example"
26+
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.1.name
27+
charge_type = "POSTPAID_BY_HOUR"
28+
vpc_id = tencentcloud_vpc.vpc.id
29+
subnet_id = tencentcloud_subnet.subnet.id
30+
project_id = 0
31+
memory = 4
32+
storage = 100
33+
}
34+
35+
resource "tencentcloud_sqlserver_db" "example" {
36+
instance_id = tencentcloud_sqlserver_instance.example.id
37+
name = "tf_example_db"
38+
charset = "Chinese_PRC_BIN"
39+
remark = "test-remark"
40+
}
41+
42+
resource "tencentcloud_sqlserver_account" "example" {
43+
instance_id = tencentcloud_sqlserver_instance.example.id
44+
name = "tf_example_account"
45+
password = "Qwer@234"
46+
remark = "test-remark"
47+
}
48+
49+
resource "tencentcloud_sqlserver_account_db_attachment" "example" {
50+
instance_id = tencentcloud_sqlserver_instance.example.id
951
account_name = tencentcloud_sqlserver_account.example.name
10-
db_name = tencentcloud_sqlserver_db.example.name
11-
privilege = "ReadWrite"
52+
db_name = tencentcloud_sqlserver_db.example.name
53+
privilege = "ReadWrite"
1254
}
1355
```
1456

tencentcloud/resource_tc_sqlserver_db.go

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,39 @@ Provides a SQL Server DB resource belongs to SQL Server instance.
44
Example Usage
55
66
```hcl
7+
data "tencentcloud_availability_zones_by_product" "zones" {
8+
product = "sqlserver"
9+
}
10+
11+
resource "tencentcloud_vpc" "vpc" {
12+
name = "vpc-example"
13+
cidr_block = "10.0.0.0/16"
14+
}
15+
16+
resource "tencentcloud_subnet" "subnet" {
17+
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.1.name
18+
name = "subnet-example"
19+
vpc_id = tencentcloud_vpc.vpc.id
20+
cidr_block = "10.0.0.0/16"
21+
is_multicast = false
22+
}
23+
24+
resource "tencentcloud_sqlserver_instance" "example" {
25+
name = "tf-example"
26+
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.1.name
27+
charge_type = "POSTPAID_BY_HOUR"
28+
vpc_id = tencentcloud_vpc.vpc.id
29+
subnet_id = tencentcloud_subnet.subnet.id
30+
project_id = 0
31+
memory = 4
32+
storage = 100
33+
}
34+
735
resource "tencentcloud_sqlserver_db" "example" {
836
instance_id = tencentcloud_sqlserver_instance.example.id
9-
name = "example"
10-
charset = "Chinese_PRC_BIN"
11-
remark = "test-remark"
37+
name = "tf_example_db"
38+
charset = "Chinese_PRC_BIN"
39+
remark = "test-remark"
1240
}
1341
```
1442

tencentcloud/resource_tc_sqlserver_general_cloud_ro_instance.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ import (
8787
"fmt"
8888
"log"
8989
"strings"
90+
"time"
9091

9192
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
9293
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -100,6 +101,12 @@ func resourceTencentCloudSqlserverGeneralCloudRoInstance() *schema.Resource {
100101
Read: resourceTencentCloudSqlserverGeneralCloudRoInstanceRead,
101102
Update: resourceTencentCloudSqlserverGeneralCloudRoInstanceUpdate,
102103
Delete: resourceTencentCloudSqlserverGeneralCloudRoInstanceDelete,
104+
Timeouts: &schema.ResourceTimeout{
105+
Create: schema.DefaultTimeout(CreateDefaultTimeout * time.Second),
106+
Read: schema.DefaultTimeout(ReadDefaultTimeout * time.Second),
107+
Update: schema.DefaultTimeout(UpdateDefaultTimeout * time.Second),
108+
Delete: schema.DefaultTimeout(DeleteDefaultTimeout * time.Second),
109+
},
103110

104111
Schema: map[string]*schema.Schema{
105112
"instance_id": {
@@ -229,6 +236,7 @@ func resourceTencentCloudSqlserverGeneralCloudRoInstanceCreate(d *schema.Resourc
229236
service = SqlserverService{client: meta.(*TencentCloudClient).apiV3Conn}
230237
request = sqlserver.NewCreateCloudReadOnlyDBInstancesRequest()
231238
response = sqlserver.NewCreateCloudReadOnlyDBInstancesResponse()
239+
timeout = d.Timeout(schema.TimeoutCreate)
232240
instanceId string
233241
roInstanceId string
234242
dealNames string
@@ -326,7 +334,7 @@ func resourceTencentCloudSqlserverGeneralCloudRoInstanceCreate(d *schema.Resourc
326334

327335
request.GoodsNum = helper.IntInt64(1)
328336

329-
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
337+
err := resource.Retry(timeout, func() *resource.RetryError {
330338
result, e := meta.(*TencentCloudClient).apiV3Conn.UseSqlserverClient().CreateCloudReadOnlyDBInstances(request)
331339
if e != nil {
332340
return retryError(e)
@@ -344,7 +352,7 @@ func resourceTencentCloudSqlserverGeneralCloudRoInstanceCreate(d *schema.Resourc
344352
}
345353

346354
dealNames = *response.Response.DealNames[0]
347-
roInstanceId, err = service.GetInfoFromDeal(ctx, dealNames)
355+
roInstanceId, err = service.GetInfoFromDeal(ctx, dealNames, timeout)
348356
if err != nil {
349357
return err
350358
}
@@ -516,6 +524,7 @@ func resourceTencentCloudSqlserverGeneralCloudRoInstanceUpdate(d *schema.Resourc
516524
client = meta.(*TencentCloudClient).apiV3Conn
517525
sqlserverService = SqlserverService{client: client}
518526
request = sqlserver.NewUpgradeDBInstanceRequest()
527+
timeout = d.Timeout(schema.TimeoutUpdate)
519528
dealId string
520529
)
521530

@@ -549,7 +558,7 @@ func resourceTencentCloudSqlserverGeneralCloudRoInstanceUpdate(d *schema.Resourc
549558
request.Cpu = helper.IntInt64(v.(int))
550559
}
551560

552-
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
561+
err := resource.Retry(timeout, func() *resource.RetryError {
553562
result, e := meta.(*TencentCloudClient).apiV3Conn.UseSqlserverClient().UpgradeDBInstance(request)
554563
if e != nil {
555564
return retryError(e)
@@ -566,7 +575,7 @@ func resourceTencentCloudSqlserverGeneralCloudRoInstanceUpdate(d *schema.Resourc
566575
return err
567576
}
568577

569-
_, err = sqlserverService.GetInfoFromDeal(ctx, dealId)
578+
_, err = sqlserverService.GetInfoFromDeal(ctx, dealId, timeout)
570579
if err != nil {
571580
return err
572581
}

tencentcloud/resource_tc_sqlserver_instance.go

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,32 @@ Use this resource to create SQL Server instance
44
Example Usage
55
66
```hcl
7-
resource "tencentcloud_sqlserver_instance" "foo" {
8-
name = "example"
9-
availability_zone = var.availability_zone
10-
charge_type = "POSTPAID_BY_HOUR"
11-
vpc_id = "vpc-409mvdvv"
12-
subnet_id = "subnet-nf9n81ps"
13-
project_id = 123
14-
memory = 2
15-
storage = 100
7+
data "tencentcloud_availability_zones_by_product" "zones" {
8+
product = "sqlserver"
9+
}
10+
11+
resource "tencentcloud_vpc" "vpc" {
12+
name = "vpc-example"
13+
cidr_block = "10.0.0.0/16"
14+
}
15+
16+
resource "tencentcloud_subnet" "subnet" {
17+
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.1.name
18+
name = "subnet-example"
19+
vpc_id = tencentcloud_vpc.vpc.id
20+
cidr_block = "10.0.0.0/16"
21+
is_multicast = false
22+
}
23+
24+
resource "tencentcloud_sqlserver_instance" "example" {
25+
name = "tf-example"
26+
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.1.name
27+
charge_type = "POSTPAID_BY_HOUR"
28+
vpc_id = tencentcloud_vpc.vpc.id
29+
subnet_id = tencentcloud_subnet.subnet.id
30+
project_id = 0
31+
memory = 4
32+
storage = 100
1633
}
1734
```
1835

tencentcloud/service_tencentcloud_sqlserver.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -844,7 +844,7 @@ func (me *SqlserverService) DescribeAccountDBAttachmentById(ctx context.Context,
844844
return
845845
}
846846

847-
func (me *SqlserverService) GetInfoFromDeal(ctx context.Context, dealId string) (instanceId string, errRet error) {
847+
func (me *SqlserverService) GetInfoFromDeal(ctx context.Context, dealId string, timeout ...time.Duration) (instanceId string, errRet error) {
848848
logId := getLogId(ctx)
849849
request := sqlserver.NewDescribeOrdersRequest()
850850
request.DealNames = []*string{&dealId}
@@ -855,7 +855,13 @@ func (me *SqlserverService) GetInfoFromDeal(ctx context.Context, dealId string)
855855
}()
856856

857857
var flowId int64
858-
outErr := resource.Retry(40*readRetryTimeout, func() *resource.RetryError {
858+
var retryTimeout time.Duration
859+
if timeout != nil {
860+
retryTimeout = timeout[0]
861+
} else {
862+
retryTimeout = readRetryTimeout * 20
863+
}
864+
outErr := resource.Retry(retryTimeout, func() *resource.RetryError {
859865
ratelimit.Check(request.GetAction())
860866
response, err := me.client.UseSqlserverClient().DescribeOrders(request)
861867
if err != nil {

website/docs/r/sqlserver_account.html.markdown

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,39 @@ Use this resource to create SQL Server account
1414
## Example Usage
1515

1616
```hcl
17-
resource "tencentcloud_sqlserver_account" "foo" {
17+
data "tencentcloud_availability_zones_by_product" "zones" {
18+
product = "sqlserver"
19+
}
20+
21+
resource "tencentcloud_vpc" "vpc" {
22+
name = "vpc-example"
23+
cidr_block = "10.0.0.0/16"
24+
}
25+
26+
resource "tencentcloud_subnet" "subnet" {
27+
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.1.name
28+
name = "subnet-example"
29+
vpc_id = tencentcloud_vpc.vpc.id
30+
cidr_block = "10.0.0.0/16"
31+
is_multicast = false
32+
}
33+
34+
resource "tencentcloud_sqlserver_instance" "example" {
35+
name = "tf-example"
36+
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.1.name
37+
charge_type = "POSTPAID_BY_HOUR"
38+
vpc_id = tencentcloud_vpc.vpc.id
39+
subnet_id = tencentcloud_subnet.subnet.id
40+
project_id = 0
41+
memory = 4
42+
storage = 100
43+
}
44+
45+
resource "tencentcloud_sqlserver_account" "example" {
1846
instance_id = tencentcloud_sqlserver_instance.example.id
19-
name = "tf_sqlserver_account"
20-
password = "test1233"
21-
remark = "testt"
47+
name = "tf_example_account"
48+
password = "Qwer@234"
49+
remark = "test-remark"
2250
}
2351
```
2452

website/docs/r/sqlserver_account_db_attachment.html.markdown

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,50 @@ Use this resource to create SQL Server account DB attachment
1414
## Example Usage
1515

1616
```hcl
17-
resource "tencentcloud_sqlserver_account_db_attachment" "foo" {
18-
instance_id = "mssql-3cdq7kx5"
17+
data "tencentcloud_availability_zones_by_product" "zones" {
18+
product = "sqlserver"
19+
}
20+
21+
resource "tencentcloud_vpc" "vpc" {
22+
name = "vpc-example"
23+
cidr_block = "10.0.0.0/16"
24+
}
25+
26+
resource "tencentcloud_subnet" "subnet" {
27+
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.1.name
28+
name = "subnet-example"
29+
vpc_id = tencentcloud_vpc.vpc.id
30+
cidr_block = "10.0.0.0/16"
31+
is_multicast = false
32+
}
33+
34+
resource "tencentcloud_sqlserver_instance" "example" {
35+
name = "tf-example"
36+
availability_zone = data.tencentcloud_availability_zones_by_product.zones.zones.1.name
37+
charge_type = "POSTPAID_BY_HOUR"
38+
vpc_id = tencentcloud_vpc.vpc.id
39+
subnet_id = tencentcloud_subnet.subnet.id
40+
project_id = 0
41+
memory = 4
42+
storage = 100
43+
}
44+
45+
resource "tencentcloud_sqlserver_db" "example" {
46+
instance_id = tencentcloud_sqlserver_instance.example.id
47+
name = "tf_example_db"
48+
charset = "Chinese_PRC_BIN"
49+
remark = "test-remark"
50+
}
51+
52+
resource "tencentcloud_sqlserver_account" "example" {
53+
instance_id = tencentcloud_sqlserver_instance.example.id
54+
name = "tf_example_account"
55+
password = "Qwer@234"
56+
remark = "test-remark"
57+
}
58+
59+
resource "tencentcloud_sqlserver_account_db_attachment" "example" {
60+
instance_id = tencentcloud_sqlserver_instance.example.id
1961
account_name = tencentcloud_sqlserver_account.example.name
2062
db_name = tencentcloud_sqlserver_db.example.name
2163
privilege = "ReadWrite"

0 commit comments

Comments
 (0)