Skip to content

Commit c6a0848

Browse files
author
hhermanwang
committed
1.sqlserver and sqlserver ro instance add tags. 2. es support disksize modification
1 parent f8943a8 commit c6a0848

Some content is hidden

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

41 files changed

+2457
-62
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
## 1.46.5 (Unreleased)
2+
3+
ENHANCEMENTS:
4+
* Resource: `tencentcloud_sqlserver_instance` add new argument `tags`.
5+
* Resource: `tencentcloud_sqlserver_readonly_instance` add new argument `tags`.
6+
* Resource: `tencentcloud_elasticsearch_instance` support nodeType and diskSize modification.
7+
28
## 1.46.4 (November 6, 2020)
39

410
BUG FIXES:

examples/tencentcloud-sqlserver/main.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ resource "tencentcloud_sqlserver_instance" "example" {
2424
project_id = 0
2525
memory = 2
2626
storage = 10
27+
tags = {
28+
"test" = "test"
29+
}
2730
}
2831

2932
resource "tencentcloud_sqlserver_db" "example" {
@@ -58,6 +61,9 @@ resource "tencentcloud_sqlserver_readonly_instance" "example" {
5861
master_instance_id = tencentcloud_sqlserver_instance.test.id
5962
readonly_group_type = 1
6063
force_upgrade = true
64+
tags = {
65+
"test" = "test"
66+
}
6167
}
6268

6369
resource "tencentcloud_sqlserver_publish_subscribe" "example" {

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 v1.0.37
18+
github.com/tencentcloud/tencentcloud-sdk-go v1.0.50
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 & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,8 @@ github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2 h1:Xr9gkxfOP0K
443443
github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM=
444444
github.com/tencentcloud/tencentcloud-sdk-go v1.0.37 h1:zNJfC6+5sj/OloSq6GzmdSC9lwlZbgQ438zz3qH+v4k=
445445
github.com/tencentcloud/tencentcloud-sdk-go v1.0.37/go.mod h1:asUz5BPXxgoPGaRgZaVm1iGcUAuHyYUo1nXqKa83cvI=
446+
github.com/tencentcloud/tencentcloud-sdk-go v1.0.50 h1:KAIRXHVSVMvRX3Dl5gvrcVqCxBv7fDLvHahU0F3GNsc=
447+
github.com/tencentcloud/tencentcloud-sdk-go v1.0.50/go.mod h1:asUz5BPXxgoPGaRgZaVm1iGcUAuHyYUo1nXqKa83cvI=
446448
github.com/tetafro/godot v0.3.7 h1:+mecr7RKrUKB5UQ1gwqEMn13sDKTyDR8KNIquB9mm+8=
447449
github.com/tetafro/godot v0.3.7/go.mod h1:/7NLHhv08H1+8DNj0MElpAACw1ajsCuf3TKNQxA5S+0=
448450
github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e h1:RumXZ56IrCj4CL+g1b9OL/oH0QnsF976bC8xQFYUD5Q=

tencentcloud/data_source_tc_sqlserver_instances.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,11 @@ func dataSourceTencentCloudSqlserverInstances() *schema.Resource {
149149
Computed: true,
150150
Description: "Status of the SQL Server instance. 1 for applying, 2 for running, 3 for running with limit, 4 for isolated, 5 for recycling, 6 for recycled, 7 for running with task, 8 for off-line, 9 for expanding, 10 for migrating, 11 for readonly, 12 for rebooting.",
151151
},
152+
"tags": {
153+
Type: schema.TypeMap,
154+
Computed: true,
155+
Description: "Tags of the SQL Server instance.",
156+
},
152157
},
153158
},
154159
},
@@ -162,7 +167,9 @@ func dataSourceTencentCloudSqlserverInstanceRead(d *schema.ResourceData, meta in
162167
logId := getLogId(contextNil)
163168
ctx := context.WithValue(context.TODO(), logIdKey, logId)
164169

165-
service := SqlserverService{client: meta.(*TencentCloudClient).apiV3Conn}
170+
tcClient := meta.(*TencentCloudClient).apiV3Conn
171+
tagService := &TagService{client: tcClient}
172+
service := SqlserverService{client: tcClient}
166173

167174
id := d.Get("id").(string)
168175

@@ -210,6 +217,13 @@ func dataSourceTencentCloudSqlserverInstanceRead(d *schema.ResourceData, meta in
210217
} else {
211218
listItem["charge_type"] = COMMON_PAYTYPE_POSTPAID
212219
}
220+
221+
tagList, err := tagService.DescribeResourceTags(ctx, "sqlserver", "instance", tcClient.Region, *v.InstanceId)
222+
if err != nil {
223+
return err
224+
}
225+
226+
listItem["tags"] = tagList
213227
list = append(list, listItem)
214228
ids = append(ids, *v.InstanceId)
215229
}

tencentcloud/data_source_tc_sqlserver_instances_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ func TestAccTencentCloudDataSqlserverInstances(t *testing.T) {
3131
resource.TestCheckResourceAttrSet(testDataSqlserverInstancesName, "instance_list.0.vport"),
3232
resource.TestCheckResourceAttrSet(testDataSqlserverInstancesName, "instance_list.0.status"),
3333
resource.TestCheckResourceAttrSet(testDataSqlserverInstancesName, "instance_list.0.used_storage"),
34+
resource.TestCheckResourceAttr(testDataPostgresqlInstancesName, "instance_list.0.tags.tf", "test"),
3435
),
3536
},
3637
},
@@ -49,6 +50,9 @@ resource "tencentcloud_sqlserver_instance" "test" {
4950
project_id = 0
5051
memory = 2
5152
storage = 10
53+
tags = {
54+
tf = "test"
55+
}
5256
}
5357
5458
data "tencentcloud_sqlserver_instances" "id_test"{

tencentcloud/resource_tc_elasticsearch_instance.go

Lines changed: 49 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,6 @@ func resourceTencentCloudElasticsearchInstance() *schema.Resource {
156156
Type: schema.TypeList,
157157
Required: true,
158158
MinItems: 1,
159-
ForceNew: true,
160159
Description: "Node information list, which is used to describe the specification information of various types of nodes in the cluster, such as node type, node quantity, node specification, disk type, and disk size.",
161160
Elem: &schema.Resource{
162161
Schema: map[string]*schema.Schema{
@@ -463,7 +462,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
463462
instanceName := d.Get("instance_name").(string)
464463
// Update operation support at most one item at the same time
465464
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
466-
errRet := elasticsearchService.UpdateInstance(ctx, instanceId, instanceName, "", 0)
465+
errRet := elasticsearchService.UpdateInstance(ctx, instanceId, instanceName, "", 0, nil)
467466
if errRet != nil {
468467
return retryError(errRet)
469468
}
@@ -477,7 +476,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
477476
if d.HasChange("password") {
478477
password := d.Get("password").(string)
479478
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
480-
errRet := elasticsearchService.UpdateInstance(ctx, instanceId, "", password, 0)
479+
errRet := elasticsearchService.UpdateInstance(ctx, instanceId, "", password, 0, nil)
481480
if errRet != nil {
482481
return retryError(errRet)
483482
}
@@ -550,7 +549,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
550549
if d.HasChange("basic_security_type") {
551550
basicSecurityType := d.Get("basic_security_type").(int)
552551
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
553-
errRet := elasticsearchService.UpdateInstance(ctx, instanceId, "", "", int64(basicSecurityType))
552+
errRet := elasticsearchService.UpdateInstance(ctx, instanceId, "", "", int64(basicSecurityType), nil)
554553
if errRet != nil {
555554
return retryError(errRet)
556555
}
@@ -562,6 +561,52 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
562561
d.SetPartial("basic_security_type")
563562
}
564563

564+
if v, ok := d.GetOk("node_info_list"); ok {
565+
nodeInfos := v.([]interface{})
566+
nodeInfoList := make([]*es.NodeInfo, 0, len(nodeInfos))
567+
for _, d := range nodeInfos {
568+
value := d.(map[string]interface{})
569+
nodeType := value["node_type"].(string)
570+
diskSize := uint64(value["disk_size"].(int))
571+
nodeNum := uint64(value["node_num"].(int))
572+
types := value["type"].(string)
573+
diskType := value["disk_type"].(string)
574+
encrypt := value["encrypt"].(bool)
575+
dataDisk := es.NodeInfo{
576+
NodeType: &nodeType,
577+
DiskSize: &diskSize,
578+
NodeNum: &nodeNum,
579+
Type: &types,
580+
DiskType: &diskType,
581+
DiskEncrypt: helper.BoolToInt64Pointer(encrypt),
582+
}
583+
nodeInfoList = append(nodeInfoList, &dataDisk)
584+
}
585+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
586+
errRet := elasticsearchService.UpdateInstance(ctx, instanceId, "", "", 0, nodeInfoList)
587+
if errRet != nil {
588+
return retryError(errRet)
589+
}
590+
return nil
591+
})
592+
if err != nil {
593+
return err
594+
}
595+
d.SetPartial("node_info_list")
596+
err = resource.Retry(10*readRetryTimeout, func() *resource.RetryError {
597+
instance, errRet := elasticsearchService.DescribeInstanceById(ctx, instanceId)
598+
if errRet != nil {
599+
return retryError(errRet, InternalError)
600+
}
601+
if instance != nil && *instance.Status == ES_INSTANCE_STATUS_PROCESSING {
602+
return resource.RetryableError(errors.New("elasticsearch instance status is processing, retry..."))
603+
}
604+
return nil
605+
})
606+
if err != nil {
607+
return err
608+
}
609+
}
565610
if d.HasChange("tags") {
566611
oldInterface, newInterface := d.GetChange("tags")
567612
replaceTags, deleteTags := diffTags(oldInterface.(map[string]interface{}), newInterface.(map[string]interface{}))

tencentcloud/resource_tc_elasticsearch_instance_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ func TestAccTencentCloudElasticsearchInstance_basic(t *testing.T) {
4343
resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "license_type", "basic"),
4444
resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "basic_security_type", "2"),
4545
resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "tags.test", "test"),
46+
resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "node_info_list.0.node_type", "ES.S1.MEDIUM8"),
47+
resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "node_info_list.0.disk_size", "200"),
4648
),
4749
},
4850
{
@@ -155,7 +157,8 @@ resource "tencentcloud_elasticsearch_instance" "foo" {
155157
156158
node_info_list {
157159
node_num = 2
158-
node_type = "ES.S1.SMALL2"
160+
node_type = "ES.S1.MEDIUM8"
161+
disk_size = 200
159162
}
160163
161164
tags = {

tencentcloud/resource_tc_sqlserver_instance.go

Lines changed: 56 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ import (
3030
"context"
3131
"fmt"
3232

33+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
34+
3335
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
3436
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
3537
sqlserver "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver/v20180328"
@@ -114,6 +116,11 @@ func TencentSqlServerBasicInfo() map[string]*schema.Schema {
114116
Computed: true,
115117
Description: "Status of the SQL Server instance. 1 for applying, 2 for running, 3 for running with limit, 4 for isolated, 5 for recycling, 6 for recycled, 7 for running with task, 8 for off-line, 9 for expanding, 10 for migrating, 11 for readonly, 12 for rebooting.",
116118
},
119+
"tags": {
120+
Type: schema.TypeMap,
121+
Optional: true,
122+
Description: "The tags of the SQL Server.",
123+
},
117124
}
118125
}
119126

@@ -189,8 +196,10 @@ func resourceTencentCloudSqlserverInstanceCreate(d *schema.ResourceData, meta in
189196
logId := getLogId(contextNil)
190197
ctx := context.WithValue(context.TODO(), logIdKey, logId)
191198

192-
sqlserverService := SqlserverService{client: meta.(*TencentCloudClient).apiV3Conn}
193-
199+
client := meta.(*TencentCloudClient).apiV3Conn
200+
sqlserverService := SqlserverService{client: client}
201+
tagService := TagService{client: client}
202+
region := client.Region
194203
var (
195204
name = d.Get("name").(string)
196205
dbVersion = d.Get("engine_version").(string)
@@ -252,11 +261,20 @@ func resourceTencentCloudSqlserverInstanceCreate(d *schema.ResourceData, meta in
252261
return outErr
253262
}
254263

264+
if tags := helper.GetTags(d, "tags"); len(tags) > 0 {
265+
resourceName := BuildTagResourceName("sqlserver", "instance", region, instanceId)
266+
if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil {
267+
return err
268+
}
269+
}
255270
return resourceTencentCloudSqlserverInstanceRead(d, meta)
256271
}
257272

258273
func sqlServerAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
259-
sqlserverService := SqlserverService{client: meta.(*TencentCloudClient).apiV3Conn}
274+
client := meta.(*TencentCloudClient).apiV3Conn
275+
sqlserverService := SqlserverService{client: client}
276+
tagService := TagService{client: client}
277+
region := client.Region
260278
instanceId := d.Id()
261279

262280
var outErr, inErr error
@@ -332,6 +350,18 @@ func sqlServerAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData,
332350
d.SetPartial("security_groups")
333351
}
334352

353+
if d.HasChange("tags") {
354+
oldTags, newTags := d.GetChange("tags")
355+
replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{}))
356+
357+
resourceName := BuildTagResourceName("sqlserver", "instance", region, instanceId)
358+
if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil {
359+
return err
360+
}
361+
362+
d.SetPartial("tags")
363+
}
364+
335365
return nil
336366
}
337367

@@ -350,7 +380,10 @@ func resourceTencentCloudSqlserverInstanceUpdate(d *schema.ResourceData, meta in
350380
var outErr, inErr error
351381
instanceId := d.Id()
352382

353-
sqlserverService := SqlserverService{client: meta.(*TencentCloudClient).apiV3Conn}
383+
client := meta.(*TencentCloudClient).apiV3Conn
384+
sqlserverService := SqlserverService{client: client}
385+
tagService := TagService{client: client}
386+
region := client.Region
354387
//update project id
355388
if d.HasChange("project_id") {
356389
projectId := d.Get("project_id").(int)
@@ -394,6 +427,17 @@ func resourceTencentCloudSqlserverInstanceUpdate(d *schema.ResourceData, meta in
394427
d.SetPartial("maintenance_start_time")
395428
d.SetPartial("maintenance_time_span")
396429
}
430+
if d.HasChange("tags") {
431+
oldTags, newTags := d.GetChange("tags")
432+
replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{}))
433+
434+
resourceName := BuildTagResourceName("sqlserver", "instance", region, instanceId)
435+
if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil {
436+
return err
437+
}
438+
439+
d.SetPartial("tags")
440+
}
397441

398442
d.Partial(false)
399443

@@ -504,6 +548,14 @@ func resourceTencentCloudSqlserverInstanceRead(d *schema.ResourceData, meta inte
504548
_ = d.Set("maintenance_start_time", startTime)
505549
_ = d.Set("maintenance_time_span", timeSpan)
506550

551+
tcClient := meta.(*TencentCloudClient).apiV3Conn
552+
tagService := &TagService{client: tcClient}
553+
tags, err := tagService.DescribeResourceTags(ctx, "sqlserver", "instance", tcClient.Region, d.Id())
554+
if err != nil {
555+
return err
556+
}
557+
_ = d.Set("tags", tags)
558+
507559
return nil
508560
}
509561

tencentcloud/resource_tc_sqlserver_instance_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ func TestAccTencentCloudSqlserverInstanceResource(t *testing.T) {
3737
resource.TestCheckResourceAttrSet(testSqlserverInstanceResourceKey, "vport"),
3838
resource.TestCheckResourceAttrSet(testSqlserverInstanceResourceKey, "status"),
3939
resource.TestCheckResourceAttr(testSqlserverInstanceResourceKey, "security_groups.#", "1"),
40+
resource.TestCheckResourceAttr(testSqlserverInstanceResourceKey, "tags.test", "test"),
4041
),
4142
},
4243
{
@@ -65,6 +66,8 @@ func TestAccTencentCloudSqlserverInstanceResource(t *testing.T) {
6566
resource.TestCheckResourceAttrSet(testSqlserverInstanceResourceKey, "vport"),
6667
resource.TestCheckResourceAttrSet(testSqlserverInstanceResourceKey, "status"),
6768
resource.TestCheckResourceAttr(testSqlserverInstanceResourceKey, "security_groups.#", "0"),
69+
resource.TestCheckNoResourceAttr(testSqlserverInstanceResourceKey, "tags.test"),
70+
resource.TestCheckResourceAttr(testSqlserverInstanceResourceKey, "tags.abc", "abc"),
6871
),
6972
},
7073
},
@@ -96,6 +99,7 @@ func TestAccTencentCloudSqlserverInstanceMultiClusterResource(t *testing.T) {
9699
resource.TestCheckResourceAttrSet(testSqlserverInstanceResourceKey, "vip"),
97100
resource.TestCheckResourceAttrSet(testSqlserverInstanceResourceKey, "vport"),
98101
resource.TestCheckResourceAttrSet(testSqlserverInstanceResourceKey, "status"),
102+
resource.TestCheckResourceAttr(testSqlserverInstanceResourceKey, "tags.test", "test"),
99103
),
100104
},
101105
{
@@ -176,6 +180,10 @@ resource "tencentcloud_sqlserver_instance" "test" {
176180
maintenance_start_time = "09:00"
177181
maintenance_time_span = 3
178182
security_groups = ["sg-nltpbqg1"]
183+
184+
tags = {
185+
"test" = "test"
186+
}
179187
}
180188
`
181189

@@ -193,6 +201,9 @@ resource "tencentcloud_sqlserver_instance" "test" {
193201
maintenance_start_time = "08:00"
194202
maintenance_time_span = 4
195203
204+
tags = {
205+
abc = "abc"
206+
}
196207
}
197208
`
198209

@@ -212,5 +223,8 @@ resource "tencentcloud_sqlserver_instance" "test" {
212223
maintenance_week_set = [1,2,3]
213224
maintenance_start_time = "09:00"
214225
maintenance_time_span = 3
226+
tags = {
227+
"test" = "test"
228+
}
215229
}
216230
`

0 commit comments

Comments
 (0)