Skip to content

Commit 2b0fe89

Browse files
authored
Merge pull request #457 from gailwang/master
Add resource SQL Server
2 parents b38d778 + 8433329 commit 2b0fe89

File tree

49 files changed

+6957
-251
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+6957
-251
lines changed

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
## 1.41.0 (Unreleased)
2+
3+
FEATURES:
4+
5+
* **New Resource**: `tencentcloud_sqlserver_instance`
6+
* **New Resource**: `tencentcloud_sqlserver_readonly_instance`
7+
* **New Resource**: `tencentcloud_sqlserver_db`
8+
* **New Resource**: `tencentcloud_sqlserver_account`
9+
* **New Resource**: `tencentcloud_sqlserver_db_account_attachment`
10+
* **New Data Source**: `tencentcloud_sqlserver_instance`
11+
* **New Data Source**: `tencentcloud_sqlserver_readonly_groups`
12+
113
## 1.40.3 (August 11, 2020)
214

315
ENHANCEMENTS:
Lines changed: 99 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,99 @@
1-
data "tencentcloud_sqlserver_zone_config" "mysqlserver" {
2-
}
1+
data "tencentcloud_sqlserver_zone_config" "foo" {
2+
}
3+
4+
resource "tencentcloud_vpc" "foo" {
5+
name = "example"
6+
cidr_block = "10.0.0.0/16"
7+
}
8+
9+
resource "tencentcloud_subnet" "foo" {
10+
name = "example"
11+
availability_zone = var.availability_zone
12+
vpc_id = tencentcloud_vpc.foo.id
13+
cidr_block = "10.0.0.0/24"
14+
is_multicast = false
15+
}
16+
17+
resource "tencentcloud_sqlserver_instance" "example" {
18+
name = "example"
19+
availability_zone = var.availability_zone
20+
charge_type = "POSTPAID_BY_HOUR"
21+
vpc_id = tencentcloud_vpc.foo.id
22+
subnet_id = tencentcloud_subnet.foo.id
23+
engine_version = "2008R2"
24+
project_id = 0
25+
memory = 2
26+
storage = 10
27+
}
28+
29+
resource "tencentcloud_sqlserver_db" "example" {
30+
instance_id = tencentcloud_sqlserver_instance.example.id
31+
name = "example"
32+
charset = "Chinese_PRC_BIN"
33+
remark = "tf"
34+
}
35+
36+
resource "tencentcloud_sqlserver_account" "example" {
37+
instance_id = tencentcloud_sqlserver_instance.example.id
38+
name = "example"
39+
password = "test1233"
40+
remark = "tf"
41+
}
42+
43+
resource "tencentcloud_sqlserver_account_db_attachment" "example" {
44+
instance_id = tencentcloud_sqlserver_instance.example.id
45+
account_name = tencentcloud_sqlserver_account.example.name
46+
db_name = tencentcloud_sqlserver_db.example.name
47+
privilege = "ReadWrite"
48+
}
49+
50+
resource "tencentcloud_sqlserver_readonly_instance" "example" {
51+
name = "example"
52+
availability_zone = var.availability_zone
53+
charge_type = "POSTPAID_BY_HOUR"
54+
vpc_id = tencentcloud_vpc.foo.id
55+
subnet_id = tencentcloud_subnet.foo.id
56+
memory = 4
57+
storage = 20
58+
master_instance_id = tencentcloud_sqlserver_instance.test.id
59+
readonly_group_type = 1
60+
force_upgrade = true
61+
}
62+
63+
64+
data "tencentcloud_sqlserver_instances" "id_example" {
65+
id = tencentcloud_sqlserver_instance.example.id
66+
}
67+
68+
data "tencentcloud_sqlserver_instances" "vpc_example" {
69+
vpc_id = tencentcloud_vpc.foo.id
70+
subnet_id = tencentcloud_subnet.foo.id
71+
}
72+
73+
data "tencentcloud_sqlserver_instances" "project_example" {
74+
project_id = 0
75+
}
76+
77+
data "tencentcloud_sqlserver_dbs" "example" {
78+
instance_id = tencentcloud_sqlserver_db.example.instance_id
79+
}
80+
81+
data "tencentcloud_sqlserver_accounts" "example" {
82+
instance_id = tencentcloud_sqlserver_instance.example.id
83+
}
84+
85+
data "tencentcloud_sqlserver_account_db_attachments" "example" {
86+
instance_id = tencentcloud_sqlserver_instance.example.id
87+
account_name = tencentcloud_sqlserver_account.example.name
88+
}
89+
90+
data "tencentcloud_sqlserver_backups" "example" {
91+
instance_id = tencentcloud_sqlserver_instance.example.id
92+
start_time = "2020-06-30 00:00:00"
93+
end_time = "2020-07-01 00:00:00"
94+
}
95+
96+
data "tencentcloud_sqlserver_readonly_groups" "example" {
97+
master_instance_id = tencentcloud_sqlserver_instance.example.id
98+
}
99+
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
variable "availability_zone" {
2+
default = "ap-guangzhou-3"
3+
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ require (
1515
github.com/mattn/go-colorable v0.1.6 // indirect
1616
github.com/mitchellh/go-homedir v1.1.0
1717
github.com/pkg/errors v0.9.1
18-
github.com/tencentcloud/tencentcloud-sdk-go v3.0.217+incompatible
18+
github.com/tencentcloud/tencentcloud-sdk-go v3.0.221+incompatible
1919
github.com/yangwenmai/ratelimit v0.0.0-20180104140304-44221c2292e1
2020
github.com/zclconf/go-cty v1.4.2 // indirect
2121
golang.org/x/sys v0.0.0-20200523222454-059865788121 // indirect

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -458,8 +458,8 @@ github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s
458458
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
459459
github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2 h1:Xr9gkxfOP0KQWXKNqmwe8vEeSUiUj4Rlee9CMVX2ZUQ=
460460
github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM=
461-
github.com/tencentcloud/tencentcloud-sdk-go v3.0.217+incompatible h1:c0N5XTxnRv3e6lgIEw3Ml0RdIV0fA8qDRuVEhQnDViE=
462-
github.com/tencentcloud/tencentcloud-sdk-go v3.0.217+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4=
461+
github.com/tencentcloud/tencentcloud-sdk-go v3.0.221+incompatible h1:KfLv0pH+sYexx2FcvvPhek5kfiI14JB9JCTMkEWrNVE=
462+
github.com/tencentcloud/tencentcloud-sdk-go v3.0.221+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4=
463463
github.com/tetafro/godot v0.3.7 h1:+mecr7RKrUKB5UQ1gwqEMn13sDKTyDR8KNIquB9mm+8=
464464
github.com/tetafro/godot v0.3.7/go.mod h1:/7NLHhv08H1+8DNj0MElpAACw1ajsCuf3TKNQxA5S+0=
465465
github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e h1:RumXZ56IrCj4CL+g1b9OL/oH0QnsF976bC8xQFYUD5Q=

tencentcloud/data_source_tc_cfs_file_systems_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ resource "tencentcloud_subnet" "subnet" {
4444
}
4545
4646
resource "tencentcloud_cfs_access_group" "foo" {
47-
name = "test_cfs_access_rule"
47+
name = "test_cfs_access_rule"
4848
}
4949
5050
resource "tencentcloud_cfs_file_system" "foo" {
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
/*
2+
Use this data source to query the list of SQL Server account DB privileges.
3+
4+
Example Usage
5+
6+
```hcl
7+
data "tencentcloud_sqlserver_account_db_attachments" "test"{
8+
instance_id = tencentcloud_sqlserver_instance.test.id
9+
account_name = tencentcloud_sqlserver_account_db_attachment.test.account_name
10+
}
11+
```
12+
*/
13+
package tencentcloud
14+
15+
import (
16+
"context"
17+
"fmt"
18+
"log"
19+
20+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
21+
"github.com/terraform-providers/terraform-provider-tencentcloud/tencentcloud/internal/helper"
22+
)
23+
24+
func dataSourceTencentCloudSqlserverAccountDBAttachments() *schema.Resource {
25+
return &schema.Resource{
26+
Read: dataSourceTencentSqlserverAccountDBAttachmentsRead,
27+
Schema: map[string]*schema.Schema{
28+
"instance_id": {
29+
Type: schema.TypeString,
30+
Required: true,
31+
Description: "SQL Server instance ID that the account belongs to.",
32+
},
33+
"account_name": {
34+
Type: schema.TypeString,
35+
Optional: true,
36+
Default: "",
37+
Description: "Name of the SQL Server account to be queried.",
38+
},
39+
"db_name": {
40+
Type: schema.TypeString,
41+
Optional: true,
42+
Default: "",
43+
Description: "Name of the DB to be queried.",
44+
},
45+
"result_output_file": {
46+
Type: schema.TypeString,
47+
Optional: true,
48+
Description: "Used to store results.",
49+
},
50+
// Computed values
51+
"list": {
52+
Type: schema.TypeList,
53+
Computed: true,
54+
Description: "A list of SQL Server account. Each element contains the following attributes:",
55+
Elem: &schema.Resource{
56+
Schema: map[string]*schema.Schema{
57+
"instance_id": {
58+
Type: schema.TypeString,
59+
Computed: true,
60+
Description: "SQL Server instance ID that the account belongs to.",
61+
},
62+
"account_name": {
63+
Type: schema.TypeString,
64+
Computed: true,
65+
Description: "SQL Server account name.",
66+
},
67+
"db_name": {
68+
Type: schema.TypeString,
69+
Computed: true,
70+
Description: "SQL Server DB name.",
71+
},
72+
"privilege": {
73+
Type: schema.TypeString,
74+
Computed: true,
75+
Description: "Privilege of the account on DB. Valid value are `ReadOnly`, `ReadWrite`.",
76+
},
77+
},
78+
},
79+
},
80+
},
81+
}
82+
}
83+
84+
func dataSourceTencentSqlserverAccountDBAttachmentsRead(d *schema.ResourceData, meta interface{}) error {
85+
defer logElapsed("data_source.tencentcloud_sqlserver_account_db_attachments.read")()
86+
87+
logId := getLogId(contextNil)
88+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
89+
90+
instanceId := d.Get("instance_id").(string)
91+
accountName := d.Get("account_name").(string)
92+
dbName := d.Get("db_name").(string)
93+
94+
sqlserverService := SqlserverService{client: meta.(*TencentCloudClient).apiV3Conn}
95+
96+
attachments, err := sqlserverService.DescribeAccountDBAttachments(ctx, instanceId, accountName, dbName)
97+
98+
if err != nil {
99+
return fmt.Errorf("api[DescribeAccountDBAttachments]fail, return %s", err.Error())
100+
}
101+
102+
var list []map[string]interface{}
103+
var ids = make([]string, len(attachments))
104+
105+
for _, item := range attachments {
106+
mapping := map[string]interface{}{
107+
"instance_id": instanceId,
108+
"account_name": item["account_name"],
109+
"db_name": item["db_name"],
110+
"privilege": item["privilege"],
111+
}
112+
113+
list = append(list, mapping)
114+
ids = append(ids, fmt.Sprintf("%s%s%s%s%s", instanceId, FILED_SP, accountName, FILED_SP, dbName))
115+
}
116+
117+
d.SetId(helper.DataResourceIdsHash(ids))
118+
if e := d.Set("list", list); e != nil {
119+
log.Printf("[CRITAL]%s provider set list fail, reason:%s\n", logId, e.Error())
120+
return e
121+
}
122+
output, ok := d.GetOk("result_output_file")
123+
if ok && output.(string) != "" {
124+
return writeToFile(output.(string), list)
125+
}
126+
127+
return nil
128+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
7+
)
8+
9+
var testDataSqlserverAccountDBAttachmentsName = "data.tencentcloud_sqlserver_account_db_attachments.test"
10+
11+
func TestAccTencentCloudDataSqlserverAccountDBAttachments(t *testing.T) {
12+
resource.Test(t, resource.TestCase{
13+
PreCheck: func() { testAccPreCheck(t) },
14+
Providers: testAccProviders,
15+
CheckDestroy: testAccCheckLBDestroy,
16+
Steps: []resource.TestStep{
17+
{
18+
Config: testAccTencentCloudDataSqlserverAccountDBAttachmentsBasic,
19+
Check: resource.ComposeTestCheckFunc(
20+
resource.TestCheckResourceAttr(testDataSqlserverAccountDBAttachmentsName, "list.#", "1"),
21+
resource.TestCheckResourceAttr(testDataSqlserverAccountDBAttachmentsName, "list.0.account_name", "tf_sqlserver_account"),
22+
resource.TestCheckResourceAttrSet(testDataSqlserverAccountDBAttachmentsName, "list.0.db_name"),
23+
resource.TestCheckResourceAttrSet(testDataSqlserverAccountDBAttachmentsName, "list.0.privilege"),
24+
),
25+
},
26+
},
27+
})
28+
}
29+
30+
const testAccTencentCloudDataSqlserverAccountDBAttachmentsBasic = testAccSqlserverInstance + `
31+
resource "tencentcloud_sqlserver_account" "test" {
32+
instance_id = tencentcloud_sqlserver_instance.test.id
33+
name = "tf_sqlserver_account"
34+
password = "testt123"
35+
}
36+
resource "tencentcloud_sqlserver_db" "test" {
37+
instance_id = tencentcloud_sqlserver_instance.test.id
38+
name = "test111"
39+
charset = "Chinese_PRC_BIN"
40+
remark = "testACC-remark"
41+
}
42+
43+
resource "tencentcloud_sqlserver_account_db_attachment" "test" {
44+
instance_id = tencentcloud_sqlserver_instance.test.id
45+
account_name = tencentcloud_sqlserver_account.test.name
46+
db_name = tencentcloud_sqlserver_db.test.name
47+
privilege = "ReadWrite"
48+
}
49+
data "tencentcloud_sqlserver_account_db_attachments" "test"{
50+
instance_id = tencentcloud_sqlserver_instance.test.id
51+
account_name = tencentcloud_sqlserver_account_db_attachment.test.account_name
52+
}
53+
`

0 commit comments

Comments
 (0)