Skip to content

Commit 744dc16

Browse files
authored
Feat/support sqlserver config add (#1811)
* feat/support-sqlserver-config * add * feat/support-sqlserver-config-add * feat/support-sqlserver-config-add * feat/support-sqlserver-config-add * feat/support-sqlserver-config-add * feat/support-sqlserver-config-add
1 parent 9f2b715 commit 744dc16

File tree

40 files changed

+4765
-83
lines changed

40 files changed

+4765
-83
lines changed

.changelog/1811.txt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
```release-note:new-resource
2+
tencentcloud_sqlserver_complete_expansion
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_sqlserver_config_database_cdc
7+
```
8+
9+
```release-note:new-resource
10+
tencentcloud_sqlserver_config_database_ct
11+
```
12+
13+
```release-note:new-resource
14+
tencentcloud_sqlserver_config_database_mdf
15+
```
16+
17+
```release-note:new-resource
18+
tencentcloud_sqlserver_config_instance_param
19+
```
20+
21+
```release-note:new-resource
22+
tencentcloud_sqlserver_config_instance_ro_group
23+
```
24+
25+
```release-note:enhancement
26+
resource/tencentcloud_sqlserver_instance: Support wait_switch
27+
```

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ require (
3838
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.599
3939
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544
4040
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.658
41-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.661
41+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.662
4242
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624
4343
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.589
4444
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.572
@@ -68,7 +68,7 @@ require (
6868
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.275
6969
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.529
7070
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486
71-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.581
71+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.662
7272
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.199
7373
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssm v1.0.199
7474
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sts v1.0.524

go.sum

Lines changed: 1301 additions & 5 deletions
Large diffs are not rendered by default.

tencentcloud/extension_sqlserver.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,34 @@ const (
155155
SQLSERVER_DB_VERSION_NAME_2019 = "SQL Server 2019 Integration Services"
156156
)
157157

158+
const (
159+
SQLSERVER_CLOUD_DB_VERSION_2008R2 = "2008R2"
160+
SQLSERVER_CLOUD_DB_VERSION_2012SP3 = "2012SP3"
161+
SQLSERVER_CLOUD_DB_VERSION_201202 = "201202"
162+
SQLSERVER_CLOUD_DB_VERSION_2014SP2 = "2014SP2"
163+
SQLSERVER_CLOUD_DB_VERSION_201402 = "201402"
164+
SQLSERVER_CLOUD_DB_VERSION_2016SP1 = "2016SP1"
165+
SQLSERVER_CLOUD_DB_VERSION_201602 = "201602"
166+
SQLSERVER_CLOUD_DB_VERSION_2017 = "2017"
167+
SQLSERVER_CLOUD_DB_VERSION_201702 = "201702"
168+
SQLSERVER_CLOUD_DB_VERSION_2019 = "2019"
169+
SQLSERVER_CLOUD_DB_VERSION_201902 = "201902"
170+
)
171+
172+
const (
173+
SQLSERVER_CLOUD_DB_VERSION_NAME_2008R2 = "SQL Server 2008 R2 Enterprise"
174+
SQLSERVER_CLOUD_DB_VERSION_NAME_2012SP3 = "SQL Server 2012 Enterprise"
175+
SQLSERVER_CLOUD_DB_VERSION_NAME_201202 = "SQL Server 2012 Standard"
176+
SQLSERVER_CLOUD_DB_VERSION_NAME_2014SP2 = "SQL Server 2014 Enterprise"
177+
SQLSERVER_CLOUD_DB_VERSION_NAME_201402 = "SQL Server 2014 Standard"
178+
SQLSERVER_CLOUD_DB_VERSION_NAME_2016SP1 = "SQL Server 2016 Enterprise"
179+
SQLSERVER_CLOUD_DB_VERSION_NAME_201602 = "SQL Server 2016 Standard"
180+
SQLSERVER_CLOUD_DB_VERSION_NAME_2017 = "SQL Server 2017 Enterprise"
181+
SQLSERVER_CLOUD_DB_VERSION_NAME_201702 = "SQL Server 2017 Standard"
182+
SQLSERVER_CLOUD_DB_VERSION_NAME_2019 = "SQL Server 2019 Enterprise"
183+
SQLSERVER_CLOUD_DB_VERSION_NAME_201902 = "SQL Server 2019 Standard"
184+
)
185+
158186
var SQLSERVER_MIGRATION_STATUS = map[int64]string{
159187
SQLSERVER_MIGRATION_INIT: "init",
160188
SQLSERVER_MIGRATION_MIGRATING: "migrating",

tencentcloud/provider.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,12 @@ SQLServer
657657
tencentcloud_sqlserver_business_intelligence_file
658658
tencentcloud_sqlserver_business_intelligence_instance
659659
tencentcloud_sqlserver_general_communication
660+
tencentcloud_sqlserver_complete_expansion
661+
tencentcloud_sqlserver_config_database_cdc
662+
tencentcloud_sqlserver_config_database_ct
663+
tencentcloud_sqlserver_config_database_mdf
664+
tencentcloud_sqlserver_config_instance_param
665+
tencentcloud_sqlserver_config_instance_ro_group
660666
661667
SSL Certificates
662668
Data Source
@@ -1975,6 +1981,12 @@ func Provider() *schema.Provider {
19751981
"tencentcloud_sqlserver_business_intelligence_file": resourceTencentCloudSqlserverBusinessIntelligenceFile(),
19761982
"tencentcloud_sqlserver_business_intelligence_instance": resourceTencentCloudSqlserverBusinessIntelligenceInstance(),
19771983
"tencentcloud_sqlserver_general_communication": resourceTencentCloudSqlserverGeneralCommunication(),
1984+
"tencentcloud_sqlserver_complete_expansion": resourceTencentCloudSqlserverCompleteExpansion(),
1985+
"tencentcloud_sqlserver_config_database_cdc": resourceTencentCloudSqlserverConfigDatabaseCDC(),
1986+
"tencentcloud_sqlserver_config_database_ct": resourceTencentCloudSqlserverConfigDatabaseCT(),
1987+
"tencentcloud_sqlserver_config_database_mdf": resourceTencentCloudSqlserverConfigDatabaseMdf(),
1988+
"tencentcloud_sqlserver_config_instance_param": resourceTencentCloudSqlserverConfigInstanceParam(),
1989+
"tencentcloud_sqlserver_config_instance_ro_group": resourceTencentCloudSqlserverConfigInstanceRoGroup(),
19781990
"tencentcloud_ckafka_instance": resourceTencentCloudCkafkaInstance(),
19791991
"tencentcloud_ckafka_user": resourceTencentCloudCkafkaUser(),
19801992
"tencentcloud_ckafka_acl": resourceTencentCloudCkafkaAcl(),

tencentcloud/resource_tc_sqlserver_business_intelligence_file_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import (
1212

1313
// go test -i; go test -test.run TestAccTencentCloudSqlserverBusinessIntelligenceFileResource_basic -v
1414
func TestAccTencentCloudSqlserverBusinessIntelligenceFileResource_basic(t *testing.T) {
15-
t.Parallel()
1615
resource.Test(t, resource.TestCase{
1716
PreCheck: func() {
1817
testAccPreCheck(t)

tencentcloud/resource_tc_sqlserver_business_intelligence_instance_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111

1212
// go test -i; go test -test.run TestAccTencentCloudSqlserverBusinessIntelligenceInstanceResource_basic -v
1313
func TestAccTencentCloudSqlserverBusinessIntelligenceInstanceResource_basic(t *testing.T) {
14-
t.Parallel()
1514
resource.Test(t, resource.TestCase{
1615
PreCheck: func() {
1716
testAccPreCheck(t)
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
/*
2+
Provides a resource to create a sqlserver complete_expansion
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_sqlserver_complete_expansion" "complete_expansion" {
8+
instance_id = "mssql-qelbzgwf"
9+
}
10+
```
11+
12+
Import
13+
14+
sqlserver complete_expansion can be imported using the id, e.g.
15+
16+
```
17+
terraform import tencentcloud_sqlserver_complete_expansion.complete_expansion complete_expansion_id
18+
```
19+
*/
20+
package tencentcloud
21+
22+
import (
23+
"fmt"
24+
"log"
25+
26+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
27+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
28+
sqlserver "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver/v20180328"
29+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
30+
)
31+
32+
func resourceTencentCloudSqlserverCompleteExpansion() *schema.Resource {
33+
return &schema.Resource{
34+
Create: resourceTencentCloudSqlserverCompleteExpansionCreate,
35+
Read: resourceTencentCloudSqlserverCompleteExpansionRead,
36+
Delete: resourceTencentCloudSqlserverCompleteExpansionDelete,
37+
Importer: &schema.ResourceImporter{
38+
State: schema.ImportStatePassthrough,
39+
},
40+
Schema: map[string]*schema.Schema{
41+
"instance_id": {
42+
Required: true,
43+
ForceNew: true,
44+
Type: schema.TypeString,
45+
Description: "ID of imported target instance.",
46+
},
47+
},
48+
}
49+
}
50+
51+
func resourceTencentCloudSqlserverCompleteExpansionCreate(d *schema.ResourceData, meta interface{}) error {
52+
defer logElapsed("resource.tencentcloud_sqlserver_complete_expansion.create")()
53+
defer inconsistentCheck(d, meta)()
54+
55+
var (
56+
logId = getLogId(contextNil)
57+
request = sqlserver.NewCompleteExpansionRequest()
58+
response = sqlserver.NewCompleteExpansionResponse()
59+
flowRequest = sqlserver.NewDescribeFlowStatusRequest()
60+
instanceId string
61+
flowId int64
62+
)
63+
64+
if v, ok := d.GetOk("instance_id"); ok {
65+
request.InstanceId = helper.String(v.(string))
66+
instanceId = v.(string)
67+
}
68+
69+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
70+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseSqlserverClient().CompleteExpansion(request)
71+
if e != nil {
72+
return retryError(e)
73+
} else {
74+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
75+
}
76+
77+
if result == nil {
78+
e = fmt.Errorf("sqlserver complete expansion %s not exists", instanceId)
79+
return resource.NonRetryableError(e)
80+
}
81+
82+
response = result
83+
flowId = int64(*response.Response.FlowId)
84+
return nil
85+
})
86+
87+
if err != nil {
88+
log.Printf("[CRITAL]%s operate sqlserver completeExpansion failed, reason:%+v", logId, err)
89+
return err
90+
}
91+
92+
flowRequest.FlowId = &flowId
93+
err = resource.Retry(10*writeRetryTimeout, func() *resource.RetryError {
94+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseSqlserverClient().DescribeFlowStatus(flowRequest)
95+
if e != nil {
96+
return retryError(e)
97+
}
98+
99+
if *result.Response.Status == SQLSERVER_TASK_SUCCESS {
100+
return nil
101+
} else if *result.Response.Status == SQLSERVER_TASK_RUNNING {
102+
return resource.RetryableError(fmt.Errorf("sqlserver completeExpansion status is running"))
103+
} else if *result.Response.Status == int64(SQLSERVER_TASK_FAIL) {
104+
return resource.NonRetryableError(fmt.Errorf("sqlserver completeExpansion status is fail"))
105+
} else {
106+
e = fmt.Errorf("sqlserver completeExpansion status illegal")
107+
return resource.NonRetryableError(e)
108+
}
109+
})
110+
111+
if err != nil {
112+
log.Printf("[CRITAL]%s create sqlserver completeExpansion failed, reason:%+v", logId, err)
113+
return err
114+
}
115+
116+
d.SetId(instanceId)
117+
118+
return resourceTencentCloudSqlserverCompleteExpansionRead(d, meta)
119+
}
120+
121+
func resourceTencentCloudSqlserverCompleteExpansionRead(d *schema.ResourceData, meta interface{}) error {
122+
defer logElapsed("resource.tencentcloud_sqlserver_complete_expansion.read")()
123+
defer inconsistentCheck(d, meta)()
124+
125+
return nil
126+
}
127+
128+
func resourceTencentCloudSqlserverCompleteExpansionDelete(d *schema.ResourceData, meta interface{}) error {
129+
defer logElapsed("resource.tencentcloud_sqlserver_complete_expansion.delete")()
130+
defer inconsistentCheck(d, meta)()
131+
132+
return nil
133+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
)
8+
9+
// go test -i; go test -test.run TestAccTencentCloudSqlserverCompleteExpansionResource_basic -v
10+
func TestAccTencentCloudSqlserverCompleteExpansionResource_basic(t *testing.T) {
11+
t.Parallel()
12+
resource.Test(t, resource.TestCase{
13+
PreCheck: func() {
14+
testAccPreCheck(t)
15+
},
16+
CheckDestroy: testAccCheckSqlserverInstanceDestroy,
17+
Providers: testAccProviders,
18+
Steps: []resource.TestStep{
19+
{
20+
Config: testAccNewSqlserverInstance,
21+
Check: resource.ComposeTestCheckFunc(
22+
testAccCheckSqlserverInstanceExists(testSqlserverInstanceResourceKey),
23+
resource.TestCheckResourceAttrSet(testSqlserverInstanceResourceKey, "id"),
24+
),
25+
},
26+
{
27+
Config: testAccUpdateNewSqlserverInstance,
28+
Check: resource.ComposeTestCheckFunc(
29+
testAccCheckSqlserverInstanceExists(testSqlserverInstanceResourceKey),
30+
resource.TestCheckResourceAttrSet(testSqlserverInstanceResourceKey, "id"),
31+
),
32+
},
33+
},
34+
})
35+
}
36+
37+
const testAccNewSqlserverInstance string = testAccSqlserverBasicInstanceNetwork + `
38+
resource "tencentcloud_sqlserver_instance" "test" {
39+
name = "tf_sqlserver_instance"
40+
availability_zone = "ap-guangzhou-7"
41+
charge_type = "POSTPAID_BY_HOUR"
42+
vpc_id = "vpc-1yg5ua6l"
43+
subnet_id = "subnet-h7av55g8"
44+
security_groups = ["sg-mayqdlt1"]
45+
project_id = 0
46+
memory = 2
47+
storage = 10
48+
maintenance_week_set = [1,2,3]
49+
maintenance_start_time = "09:00"
50+
maintenance_time_span = 3
51+
tags = {
52+
"test" = "test"
53+
}
54+
}
55+
`
56+
57+
const testAccUpdateNewSqlserverInstance string = testAccSqlserverBasicInstanceNetwork + `
58+
resource "tencentcloud_sqlserver_instance" "test" {
59+
name = "tf_sqlserver_instance"
60+
availability_zone = "ap-guangzhou-7"
61+
charge_type = "POSTPAID_BY_HOUR"
62+
vpc_id = "vpc-1yg5ua6l"
63+
subnet_id = "subnet-h7av55g8"
64+
security_groups = ["sg-mayqdlt1"]
65+
project_id = 0
66+
memory = 2
67+
storage = 20
68+
maintenance_week_set = [1,2,3]
69+
maintenance_start_time = "09:00"
70+
maintenance_time_span = 3
71+
wait_switch = 1
72+
tags = {
73+
"test" = "test"
74+
}
75+
}
76+
77+
resource "tencentcloud_sqlserver_complete_expansion" "complete_expansion" {
78+
instance_id = tencentcloud_sqlserver_instance.test.id
79+
}
80+
`

0 commit comments

Comments
 (0)