Skip to content

Commit 9b43a4c

Browse files
author
brickzzhang
committed
[add datasource for sqlserver db]
1. add datasource for sqlserver db 2. modify example for sqlserver 3. modify description for resource sqlserver db 4. merge conflict [commiter: brickzzhang]
1 parent 64a7cc4 commit 9b43a4c

File tree

8 files changed

+218
-10
lines changed

8 files changed

+218
-10
lines changed

examples/tencentcloud-sqlserver/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
data "tencentcloud_sqlserver_zone_config" "mysqlserver" {
1+
data "tencentcloud_sqlserver_zone_config" "foo" {
22
}
33

44
resource "tencentcloud_sqlserver_db" "mysqlserver_db" {
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
/*
2+
Use this data source to query DB resources for the specific SQLServer instance.
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_sqlserver_db" "mysqlserver_db" {
8+
instance_id = "mssql-XXXXXX"
9+
name = "sqlserver_db_terraform"
10+
charset = "Chinese_PRC_BIN"
11+
remark = "test-remark"
12+
}
13+
14+
data "tencentcloud_sqlserver_db" "mysqlserver" {
15+
instance_id = tencentcloud_sqlserver_db.mysqlserver_db.instance_id
16+
name = tencentcloud_sqlserver_db.mysqlserver_db.name
17+
}
18+
```
19+
*/
20+
package tencentcloud
21+
22+
import (
23+
"context"
24+
"fmt"
25+
"log"
26+
27+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
28+
)
29+
30+
func dataSourceTencentSqlserverDB() *schema.Resource {
31+
return &schema.Resource{
32+
Read: dataSourceTencentSqlserverDBRead,
33+
Schema: map[string]*schema.Schema{
34+
"result_output_file": {
35+
Type: schema.TypeString,
36+
Optional: true,
37+
Description: "Used to store results.",
38+
},
39+
"instance_id": {
40+
Type: schema.TypeString,
41+
Required: true,
42+
Description: "SQLServer instance ID which DB belongs to.",
43+
},
44+
"name": {
45+
Type: schema.TypeString,
46+
Required: true,
47+
Description: "Name of DB.",
48+
},
49+
// Computed
50+
"charset": {
51+
Type: schema.TypeString,
52+
Computed: true,
53+
Description: "Character set DB uses, could be `Chinese_PRC_CI_AS`, `Chinese_PRC_CS_AS`, `Chinese_PRC_BIN`, `Chinese_Taiwan_Stroke_CI_AS`, `SQL_Latin1_General_CP1_CI_AS`, and `SQL_Latin1_General_CP1_CS_AS`. Default value is `Chinese_PRC_CI_AS`.",
54+
},
55+
"remark": {
56+
Type: schema.TypeString,
57+
Computed: true,
58+
Description: "Remark of the DB.",
59+
},
60+
"create_time": {
61+
Type: schema.TypeString,
62+
Computed: true,
63+
Description: "Database creation time.",
64+
},
65+
"status": {
66+
Type: schema.TypeString,
67+
Computed: true,
68+
Description: "Database status. Valid values are `creating`, `running`, `modifying`, `dropping`.",
69+
},
70+
},
71+
}
72+
}
73+
74+
func dataSourceTencentSqlserverDBRead(d *schema.ResourceData, meta interface{}) error {
75+
defer logElapsed("data_source.tencent_sqlserver_db.read")()
76+
77+
logId := getLogId(contextNil)
78+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
79+
sqlserverService := SqlserverService{client: meta.(*TencentCloudClient).apiV3Conn}
80+
81+
// precheck
82+
instanceId := d.Get("instance_id").(string)
83+
_, has, err := sqlserverService.DescribeSqlserverInstanceById(ctx, instanceId)
84+
if err != nil {
85+
return fmt.Errorf("[CRITAL]%s DescribeSqlserverInstanceById fail, reason:%s\n", logId, err)
86+
}
87+
if !has {
88+
return fmt.Errorf("[CRITAL]%s SQLServer instance %s dose not exist", logId, instanceId)
89+
}
90+
91+
dbName := d.Get("name").(string)
92+
id := instanceId + FILED_SP + dbName
93+
dbInfo, has, err := sqlserverService.DescribeDBDetailsById(ctx, id)
94+
if err != nil {
95+
return err
96+
}
97+
if !has {
98+
return fmt.Errorf("[CRITAL]%s DB %s doesn't exist for SQLServer instance %s", logId, dbName, instanceId)
99+
}
100+
_ = d.Set("instance_id", instanceId)
101+
_ = d.Set("name", dbName)
102+
_ = d.Set("charset", dbInfo.Charset)
103+
_ = d.Set("remark", dbInfo.Remark)
104+
_ = d.Set("create_time", dbInfo.CreateTime)
105+
_ = d.Set("status", SQLSERVER_DB_STATUS[*dbInfo.Status])
106+
d.SetId(id)
107+
108+
if output, ok := d.GetOk("result_output_file"); ok && output.(string) != "" {
109+
if err := writeToFile(output.(string), id); err != nil {
110+
log.Printf("[CRITAL]%s output file[%s] fail, reason[%s]\n",
111+
logId, output.(string), err.Error())
112+
}
113+
}
114+
return nil
115+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
7+
)
8+
9+
func TestAccDataSourceTencentCloudSqlserverDB_basic(t *testing.T) {
10+
resource.Test(t, resource.TestCase{
11+
PreCheck: func() { testAccPreCheck(t) },
12+
Providers: testAccProviders,
13+
Steps: []resource.TestStep{
14+
{
15+
Config: TestAccDataSourceTencentCloudSqlserverDB,
16+
Check: resource.ComposeTestCheckFunc(
17+
testAccCheckTencentCloudDataSourceID("data.tencentcloud_sqlserver_db.foo"),
18+
resource.TestCheckResourceAttrSet("data.tencentcloud_sqlserver_db.foo", "instance_id"),
19+
resource.TestCheckResourceAttrSet("data.tencentcloud_sqlserver_db.foo", "name"),
20+
resource.TestCheckResourceAttrSet("data.tencentcloud_sqlserver_db.foo", "charset"),
21+
resource.TestCheckResourceAttrSet("data.tencentcloud_sqlserver_db.foo", "remark"),
22+
resource.TestCheckResourceAttrSet("data.tencentcloud_sqlserver_db.foo", "create_time"),
23+
resource.TestCheckResourceAttrSet("data.tencentcloud_sqlserver_db.foo", "status"),
24+
),
25+
},
26+
},
27+
})
28+
}
29+
30+
const TestAccDataSourceTencentCloudSqlserverDB = `
31+
resource "tencentcloud_sqlserver_db" "foo" {
32+
instance_id = "mssql-3cdq7kx5"
33+
name = "testAccDatasourceSqlserverDB"
34+
charset = "Chinese_PRC_BIN"
35+
remark = "test-remark"
36+
}
37+
38+
data "tencentcloud_sqlserver_db" "foo" {
39+
instance_id = tencentcloud_sqlserver_db.foo.instance_id
40+
name = tencentcloud_sqlserver_db.foo.name
41+
}
42+
`

tencentcloud/provider.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,7 @@ Serverless Cloud Function(SCF)
306306
SQLServer
307307
Data Source
308308
tencentcloud_sqlserver_zone_config
309+
tencentcloud_sqlserver_db
309310
310311
Resource
311312
tencentcloud_sqlserver_db
@@ -590,6 +591,7 @@ func Provider() terraform.ResourceProvider {
590591
"tencentcloud_monitor_product_namespace": dataSourceTencentMonitorProductNamespace(),
591592
"tencentcloud_elasticsearch_instances": dataSourceTencentCloudElasticsearchInstances(),
592593
"tencentcloud_sqlserver_zone_config": dataSourceTencentSqlserverZoneConfig(),
594+
"tencentcloud_sqlserver_db": dataSourceTencentSqlserverDB(),
593595
},
594596

595597
ResourcesMap: map[string]*schema.Resource{

tencentcloud/resource_tc_sqlserver_db.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func resourceTencentCloudSqlserverDB() *schema.Resource {
3737
Type: schema.TypeString,
3838
Required: true,
3939
ForceNew: true,
40-
Description: "SQL server instance ID which DB belongs to.",
40+
Description: "SQLServer instance ID which DB belongs to.",
4141
},
4242
"name": {
4343
Type: schema.TypeString,
@@ -67,7 +67,7 @@ func resourceTencentCloudSqlserverDB() *schema.Resource {
6767
"status": {
6868
Type: schema.TypeString,
6969
Computed: true,
70-
Description: "Database status could be `creating`, `running`, `modifying` which means changing the remark, and `deleting`.",
70+
Description: "Database status, could be `creating`, `running`, `modifying` which means changing the remark, and `deleting`.",
7171
},
7272
},
7373
}
@@ -81,24 +81,24 @@ func resourceTencentCloudSqlserverDBCreate(d *schema.ResourceData, meta interfac
8181

8282
sqlserverService := SqlserverService{client: meta.(*TencentCloudClient).apiV3Conn}
8383

84-
instanceID := d.Get("instance_id").(string)
85-
_, has, err := sqlserverService.DescribeSqlserverInstanceById(ctx, instanceID)
84+
instanceId := d.Get("instance_id").(string)
85+
_, has, err := sqlserverService.DescribeSqlserverInstanceById(ctx, instanceId)
8686
if err != nil {
8787
return fmt.Errorf("[CRITAL]%s DescribeSqlserverInstanceById fail, reason:%s\n", logId, err)
8888
}
8989
if !has {
90-
return fmt.Errorf("[CRITAL]%s Sqlserver instance %s dose not exist for DB creation", logId, instanceID)
90+
return fmt.Errorf("[CRITAL]%s SQLServer instance %s dose not exist for DB creation", logId, instanceId)
9191
}
9292

9393
dbName := d.Get("name").(string)
9494
charset := d.Get("charset").(string)
9595
remark := d.Get("remark").(string)
9696

97-
if err := sqlserverService.CreateSqlserverDB(ctx, instanceID, dbName, charset, remark); err != nil {
97+
if err := sqlserverService.CreateSqlserverDB(ctx, instanceId, dbName, charset, remark); err != nil {
9898
return err
9999
}
100100

101-
d.SetId(instanceID + FILED_SP + dbName)
101+
d.SetId(instanceId + FILED_SP + dbName)
102102
return resourceTencentCloudSqlserverDBRead(d, meta)
103103
}
104104

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
layout: "tencentcloud"
3+
page_title: "TencentCloud: tencentcloud_sqlserver_db"
4+
sidebar_current: "docs-tencentcloud-datasource-sqlserver_db"
5+
description: |-
6+
Use this data source to query DB resources for the specific SQLServer instance.
7+
---
8+
9+
# tencentcloud_sqlserver_db
10+
11+
Use this data source to query DB resources for the specific SQLServer instance.
12+
13+
## Example Usage
14+
15+
```hcl
16+
resource "tencentcloud_sqlserver_db" "mysqlserver_db" {
17+
instance_id = "mssql-XXXXXX"
18+
name = "sqlserver_db_terraform"
19+
charset = "Chinese_PRC_BIN"
20+
remark = "test-remark"
21+
}
22+
23+
data "tencentcloud_sqlserver_db" "mysqlserver" {
24+
instance_id = tencentcloud_sqlserver_db.mysqlserver_db.instance_id
25+
name = tencentcloud_sqlserver_db.mysqlserver_db.name
26+
}
27+
```
28+
29+
## Argument Reference
30+
31+
The following arguments are supported:
32+
33+
* `instance_id` - (Required) SQLServer instance ID which DB belongs to.
34+
* `name` - (Required) Name of DB.
35+
* `result_output_file` - (Optional) Used to store results.
36+
37+
## Attributes Reference
38+
39+
In addition to all arguments above, the following attributes are exported:
40+
41+
* `charset` - Character set DB uses, could be `Chinese_PRC_CI_AS`, `Chinese_PRC_CS_AS`, `Chinese_PRC_BIN`, `Chinese_Taiwan_Stroke_CI_AS`, `SQL_Latin1_General_CP1_CI_AS`, and `SQL_Latin1_General_CP1_CS_AS`. Default value is `Chinese_PRC_CI_AS`.
42+
* `create_time` - Database creation time.
43+
* `remark` - Remark of the DB.
44+
* `status` - Database status. Valid values are `creating`, `running`, `modifying`, `dropping`.
45+
46+

website/docs/r/sqlserver_db.html.markdown

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ resource "tencentcloud_sqlserver_db" "mysqlserver_db" {
2525

2626
The following arguments are supported:
2727

28-
* `instance_id` - (Required, ForceNew) SQL server instance ID which DB belongs to.
28+
* `instance_id` - (Required, ForceNew) SQLServer instance ID which DB belongs to.
2929
* `name` - (Required, ForceNew) Name of SQLServer DB. The DataBase name must be unique and must be composed of numbers, letters and underlines, and the first one can not be underline.
3030
* `charset` - (Optional, ForceNew) Character set DB uses. Valid values: `Chinese_PRC_CI_AS`, `Chinese_PRC_CS_AS`, `Chinese_PRC_BIN`, `Chinese_Taiwan_Stroke_CI_AS`, `SQL_Latin1_General_CP1_CI_AS`, and `SQL_Latin1_General_CP1_CS_AS`. Default value is `Chinese_PRC_CI_AS`.
3131
* `remark` - (Optional) Remark of the DB.
@@ -36,6 +36,6 @@ In addition to all arguments above, the following attributes are exported:
3636

3737
* `id` - ID of the resource.
3838
* `create_time` - Database creation time.
39-
* `status` - Database status could be `creating`, `running`, `modifying` which means changing the remark, and `deleting`.
39+
* `status` - Database status, could be `creating`, `running`, `modifying` which means changing the remark, and `deleting`.
4040

4141

website/tencentcloud.erb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,9 @@
800800
<li>
801801
<a href="#">Data Sources</a>
802802
<ul class="nav nav-auto-expand">
803+
<li>
804+
<a href="/docs/providers/tencentcloud/d/sqlserver_db.html">tencentcloud_sqlserver_db</a>
805+
</li>
803806
<li>
804807
<a href="/docs/providers/tencentcloud/d/sqlserver_zone_config.html">tencentcloud_sqlserver_zone_config</a>
805808
</li>

0 commit comments

Comments
 (0)