Skip to content

Commit a1830a9

Browse files
authored
Feat/support sqlserver update network (#1816)
* 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 * feat/support-sqlserver-update-network * feat/support-sqlserver-update-network * feat/support-sqlserver-update-network * feat/support-sqlserver-update-network * feat/support-sqlserver-update-network * feat/support-sqlserver-update-network * feat/support-sqlserver-update-network * feat/support-sqlserver-update-network
1 parent 1d08a84 commit a1830a9

File tree

33 files changed

+3335
-42
lines changed

33 files changed

+3335
-42
lines changed

.changelog/1816.txt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_sqlserver_instance: support update instance 'vpc-id', 'subnet-id' parameters
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_sqlserver_config_instance_security_groups
7+
```
8+
9+
```release-note:new-resource
10+
tencentcloud_sqlserver_general_cloud_instance
11+
```
12+
13+
```release-note:new-resource
14+
tencentcloud_sqlserver_renew_db_instance
15+
```
16+
17+
```release-note:new-resource
18+
tencentcloud_sqlserver_renew_db_instance
19+
```
20+
21+
```release-note:new-resource
22+
tencentcloud_sqlserver_renew_postpaid_db_instance
23+
```
24+
25+
```release-note:new-resource
26+
tencentcloud_sqlserver_restart_db_instance
27+
```
28+
29+
```release-note:new-resource
30+
tencentcloud_sqlserver_config_terminate_db_instance
31+
```
32+
33+
```release-note:new-resource
34+
tencentcloud_sqlserver_restore_instance
35+
```
36+
37+
```release-note:new-resource
38+
tencentcloud_sqlserver_rollback_instance
39+
```

tencentcloud/provider.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -682,12 +682,20 @@ SQLServer
682682
tencentcloud_sqlserver_business_intelligence_file
683683
tencentcloud_sqlserver_business_intelligence_instance
684684
tencentcloud_sqlserver_general_communication
685+
tencentcloud_sqlserver_general_cloud_instance
685686
tencentcloud_sqlserver_complete_expansion
686687
tencentcloud_sqlserver_config_database_cdc
687688
tencentcloud_sqlserver_config_database_ct
688689
tencentcloud_sqlserver_config_database_mdf
689690
tencentcloud_sqlserver_config_instance_param
690691
tencentcloud_sqlserver_config_instance_ro_group
692+
tencentcloud_sqlserver_config_instance_security_groups
693+
tencentcloud_sqlserver_renew_db_instance
694+
tencentcloud_sqlserver_renew_postpaid_db_instance
695+
tencentcloud_sqlserver_restart_db_instance
696+
tencentcloud_sqlserver_config_terminate_db_instance
697+
tencentcloud_sqlserver_restore_instance
698+
tencentcloud_sqlserver_rollback_instance
691699
692700
SSL Certificates
693701
Data Source
@@ -2042,12 +2050,20 @@ func Provider() *schema.Provider {
20422050
"tencentcloud_sqlserver_business_intelligence_file": resourceTencentCloudSqlserverBusinessIntelligenceFile(),
20432051
"tencentcloud_sqlserver_business_intelligence_instance": resourceTencentCloudSqlserverBusinessIntelligenceInstance(),
20442052
"tencentcloud_sqlserver_general_communication": resourceTencentCloudSqlserverGeneralCommunication(),
2053+
"tencentcloud_sqlserver_general_cloud_instance": resourceTencentCloudSqlserverGeneralCloudInstance(),
20452054
"tencentcloud_sqlserver_complete_expansion": resourceTencentCloudSqlserverCompleteExpansion(),
20462055
"tencentcloud_sqlserver_config_database_cdc": resourceTencentCloudSqlserverConfigDatabaseCDC(),
20472056
"tencentcloud_sqlserver_config_database_ct": resourceTencentCloudSqlserverConfigDatabaseCT(),
20482057
"tencentcloud_sqlserver_config_database_mdf": resourceTencentCloudSqlserverConfigDatabaseMdf(),
20492058
"tencentcloud_sqlserver_config_instance_param": resourceTencentCloudSqlserverConfigInstanceParam(),
20502059
"tencentcloud_sqlserver_config_instance_ro_group": resourceTencentCloudSqlserverConfigInstanceRoGroup(),
2060+
"tencentcloud_sqlserver_config_instance_security_groups": resourceTencentCloudSqlserverConfigInstanceSecurityGroups(),
2061+
"tencentcloud_sqlserver_renew_db_instance": resourceTencentCloudSqlserverRenewDBInstance(),
2062+
"tencentcloud_sqlserver_renew_postpaid_db_instance": resourceTencentCloudSqlserverRenewPostpaidDBInstance(),
2063+
"tencentcloud_sqlserver_restart_db_instance": resourceTencentCloudSqlserverRestartDBInstance(),
2064+
"tencentcloud_sqlserver_config_terminate_db_instance": resourceTencentCloudSqlserverConfigTerminateDBInstance(),
2065+
"tencentcloud_sqlserver_restore_instance": resourceTencentCloudSqlserverRestoreInstance(),
2066+
"tencentcloud_sqlserver_rollback_instance": resourceTencentCloudSqlserverRollbackInstance(),
20512067
"tencentcloud_ckafka_instance": resourceTencentCloudCkafkaInstance(),
20522068
"tencentcloud_ckafka_user": resourceTencentCloudCkafkaUser(),
20532069
"tencentcloud_ckafka_acl": resourceTencentCloudCkafkaAcl(),
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
/*
2+
Provides a resource to create a sqlserver config_instance_security_groups
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_sqlserver_config_instance_security_groups" "config_instance_security_groups" {
8+
instance_id = "mssql-qelbzgwf"
9+
security_group_id_set = ["sg-mayqdlt1", "sg-5aubsf8n"]
10+
}
11+
```
12+
13+
Import
14+
15+
sqlserver config_instance_security_groups can be imported using the id, e.g.
16+
17+
```
18+
terraform import tencentcloud_sqlserver_config_instance_security_groups.config_instance_security_groups config_instance_security_groups_id
19+
```
20+
*/
21+
package tencentcloud
22+
23+
import (
24+
"context"
25+
"log"
26+
27+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
28+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
29+
sqlserver "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver/v20180328"
30+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
31+
)
32+
33+
func resourceTencentCloudSqlserverConfigInstanceSecurityGroups() *schema.Resource {
34+
return &schema.Resource{
35+
Create: resourceTencentCloudSqlserverConfigInstanceSecurityGroupsCreate,
36+
Read: resourceTencentCloudSqlserverConfigInstanceSecurityGroupsRead,
37+
Update: resourceTencentCloudSqlserverConfigInstanceSecurityGroupsUpdate,
38+
Delete: resourceTencentCloudSqlserverConfigInstanceSecurityGroupsDelete,
39+
Importer: &schema.ResourceImporter{
40+
State: schema.ImportStatePassthrough,
41+
},
42+
Schema: map[string]*schema.Schema{
43+
"instance_id": {
44+
Required: true,
45+
Type: schema.TypeString,
46+
Description: "Instance ID.",
47+
},
48+
"security_group_id_set": {
49+
Required: true,
50+
Type: schema.TypeSet,
51+
Elem: &schema.Schema{Type: schema.TypeString},
52+
Description: "A list of security group IDs to modify, an array of one or more security group IDs.",
53+
},
54+
},
55+
}
56+
}
57+
58+
func resourceTencentCloudSqlserverConfigInstanceSecurityGroupsCreate(d *schema.ResourceData, meta interface{}) error {
59+
defer logElapsed("resource.tencentcloud_sqlserver_config_instance_security_groups.create")()
60+
defer inconsistentCheck(d, meta)()
61+
62+
var instanceId string
63+
64+
if v, ok := d.GetOk("instance_id"); ok {
65+
instanceId = v.(string)
66+
}
67+
68+
d.SetId(instanceId)
69+
70+
return resourceTencentCloudSqlserverConfigInstanceSecurityGroupsUpdate(d, meta)
71+
}
72+
73+
func resourceTencentCloudSqlserverConfigInstanceSecurityGroupsRead(d *schema.ResourceData, meta interface{}) error {
74+
defer logElapsed("resource.tencentcloud_sqlserver_config_instance_security_groups.read")()
75+
defer inconsistentCheck(d, meta)()
76+
77+
var (
78+
logId = getLogId(contextNil)
79+
ctx = context.WithValue(context.TODO(), logIdKey, logId)
80+
service = SqlserverService{client: meta.(*TencentCloudClient).apiV3Conn}
81+
instanceId = d.Id()
82+
)
83+
84+
configInstanceSecurityGroups, err := service.DescribeSqlserverConfigInstanceSecurityGroupsById(ctx, instanceId)
85+
if err != nil {
86+
return err
87+
}
88+
89+
if configInstanceSecurityGroups == nil {
90+
d.SetId("")
91+
log.Printf("[WARN]%s resource `SqlserverConfigInstanceSecurityGroups` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
92+
return nil
93+
}
94+
95+
_ = d.Set("instance_id", instanceId)
96+
97+
sgList := []interface{}{}
98+
for _, sg := range configInstanceSecurityGroups {
99+
sgList = append(sgList, sg.SecurityGroupId)
100+
}
101+
_ = d.Set("security_group_id_set", sgList)
102+
103+
return nil
104+
}
105+
106+
func resourceTencentCloudSqlserverConfigInstanceSecurityGroupsUpdate(d *schema.ResourceData, meta interface{}) error {
107+
defer logElapsed("resource.tencentcloud_sqlserver_config_instance_security_groups.update")()
108+
defer inconsistentCheck(d, meta)()
109+
110+
var (
111+
logId = getLogId(contextNil)
112+
request = sqlserver.NewModifyDBInstanceSecurityGroupsRequest()
113+
instanceId = d.Id()
114+
)
115+
116+
if v, ok := d.GetOk("security_group_id_set"); ok {
117+
for _, item := range v.(*schema.Set).List() {
118+
request.SecurityGroupIdSet = append(request.SecurityGroupIdSet, helper.String(item.(string)))
119+
}
120+
}
121+
122+
request.InstanceId = &instanceId
123+
124+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
125+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseSqlserverClient().ModifyDBInstanceSecurityGroups(request)
126+
if e != nil {
127+
return retryError(e)
128+
} else {
129+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
130+
}
131+
132+
return nil
133+
})
134+
135+
if err != nil {
136+
log.Printf("[CRITAL]%s update sqlserver configInstanceSecurityGroups failed, reason:%+v", logId, err)
137+
return err
138+
}
139+
140+
return resourceTencentCloudSqlserverConfigInstanceSecurityGroupsRead(d, meta)
141+
}
142+
143+
func resourceTencentCloudSqlserverConfigInstanceSecurityGroupsDelete(d *schema.ResourceData, meta interface{}) error {
144+
defer logElapsed("resource.tencentcloud_sqlserver_config_instance_security_groups.delete")()
145+
defer inconsistentCheck(d, meta)()
146+
147+
return nil
148+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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 TestAccTencentCloudSqlserverConfigInstanceSecurityGroupsResource_basic -v
10+
func TestAccTencentCloudSqlserverConfigInstanceSecurityGroupsResource_basic(t *testing.T) {
11+
resource.Test(t, resource.TestCase{
12+
PreCheck: func() {
13+
testAccPreCheck(t)
14+
},
15+
Providers: testAccProviders,
16+
Steps: []resource.TestStep{
17+
{
18+
Config: testAccSqlserverConfigInstanceSecurityGroups,
19+
Check: resource.ComposeTestCheckFunc(
20+
resource.TestCheckResourceAttrSet("tencentcloud_sqlserver_config_instance_security_groups.config_instance_security_groups", "id"),
21+
),
22+
},
23+
{
24+
ResourceName: "tencentcloud_sqlserver_config_instance_security_groups.config_instance_security_groups",
25+
ImportState: true,
26+
ImportStateVerify: true,
27+
},
28+
},
29+
})
30+
}
31+
32+
const testAccSqlserverConfigInstanceSecurityGroups = `
33+
resource "tencentcloud_sqlserver_config_instance_security_groups" "config_instance_security_groups" {
34+
instance_id = "mssql-qelbzgwf"
35+
security_group_id_set = ["sg-mayqdlt1", "sg-5aubsf8n"]
36+
}
37+
`
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
/*
2+
Provides a resource to create a sqlserver config_terminate_db_instance
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_sqlserver_config_terminate_db_instance" "config_terminate_db_instance" {
8+
instance_id = "mssql-4tgeyeeh"
9+
}
10+
```
11+
12+
Import
13+
14+
sqlserver config_terminate_db_instance can be imported using the id, e.g.
15+
16+
```
17+
terraform import tencentcloud_sqlserver_config_terminate_db_instance.config_terminate_db_instance config_terminate_db_instance_id
18+
```
19+
*/
20+
package tencentcloud
21+
22+
import (
23+
"context"
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+
)
30+
31+
func resourceTencentCloudSqlserverConfigTerminateDBInstance() *schema.Resource {
32+
return &schema.Resource{
33+
Create: resourceTencentCloudSqlserverConfigTerminateDBInstanceCreate,
34+
Read: resourceTencentCloudSqlserverConfigTerminateDBInstanceRead,
35+
Update: resourceTencentCloudSqlserverConfigTerminateDBInstanceUpdate,
36+
Delete: resourceTencentCloudSqlserverConfigTerminateDBInstanceDelete,
37+
Importer: &schema.ResourceImporter{
38+
State: schema.ImportStatePassthrough,
39+
},
40+
Schema: map[string]*schema.Schema{
41+
"instance_id": {
42+
Required: true,
43+
Type: schema.TypeString,
44+
Description: "Instance ID.",
45+
},
46+
},
47+
}
48+
}
49+
50+
func resourceTencentCloudSqlserverConfigTerminateDBInstanceCreate(d *schema.ResourceData, meta interface{}) error {
51+
defer logElapsed("resource.tencentcloud_sqlserver_config_terminate_db_instance.create")()
52+
defer inconsistentCheck(d, meta)()
53+
54+
var instanceId string
55+
56+
if v, ok := d.GetOk("instance_id"); ok {
57+
instanceId = v.(string)
58+
}
59+
60+
d.SetId(instanceId)
61+
62+
return resourceTencentCloudSqlserverConfigTerminateDBInstanceUpdate(d, meta)
63+
}
64+
65+
func resourceTencentCloudSqlserverConfigTerminateDBInstanceRead(d *schema.ResourceData, meta interface{}) error {
66+
defer logElapsed("resource.tencentcloud_sqlserver_config_terminate_db_instance.read")()
67+
defer inconsistentCheck(d, meta)()
68+
69+
var (
70+
logId = getLogId(contextNil)
71+
ctx = context.WithValue(context.TODO(), logIdKey, logId)
72+
service = SqlserverService{client: meta.(*TencentCloudClient).apiV3Conn}
73+
instanceId = d.Id()
74+
)
75+
76+
configTerminateDBInstance, err := service.DescribeSqlserverConfigTerminateDBInstanceById(ctx, instanceId)
77+
if err != nil {
78+
return err
79+
}
80+
81+
if configTerminateDBInstance == nil {
82+
d.SetId("")
83+
log.Printf("[WARN]%s resource `SqlserverConfigTerminateDBInstance` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
84+
return nil
85+
}
86+
87+
if configTerminateDBInstance.InstanceId != nil {
88+
_ = d.Set("instance_id", configTerminateDBInstance.InstanceId)
89+
}
90+
91+
return nil
92+
}
93+
94+
func resourceTencentCloudSqlserverConfigTerminateDBInstanceUpdate(d *schema.ResourceData, meta interface{}) error {
95+
defer logElapsed("resource.tencentcloud_sqlserver_config_terminate_db_instance.update")()
96+
defer inconsistentCheck(d, meta)()
97+
98+
var (
99+
logId = getLogId(contextNil)
100+
request = sqlserver.NewTerminateDBInstanceRequest()
101+
instanceId = d.Id()
102+
)
103+
104+
request.InstanceIdSet = []*string{&instanceId}
105+
106+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
107+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseSqlserverClient().TerminateDBInstance(request)
108+
if e != nil {
109+
return retryError(e)
110+
} else {
111+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
112+
}
113+
114+
return nil
115+
})
116+
117+
if err != nil {
118+
log.Printf("[CRITAL]%s update sqlserver configTerminateDBInstance failed, reason:%+v", logId, err)
119+
return err
120+
}
121+
122+
return resourceTencentCloudSqlserverConfigTerminateDBInstanceRead(d, meta)
123+
}
124+
125+
func resourceTencentCloudSqlserverConfigTerminateDBInstanceDelete(d *schema.ResourceData, meta interface{}) error {
126+
defer logElapsed("resource.tencentcloud_sqlserver_config_terminate_db_instance.delete")()
127+
defer inconsistentCheck(d, meta)()
128+
129+
return nil
130+
}

0 commit comments

Comments
 (0)