Skip to content

Commit 2a48e20

Browse files
committed
add
1 parent 365c103 commit 2a48e20

File tree

3 files changed

+81
-16
lines changed

3 files changed

+81
-16
lines changed

tencentcloud/services/trabbit/resource_tc_tdmq_rabbitmq_vip_instance.go

Lines changed: 68 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package trabbit
22

33
import (
44
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
5+
svctag "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tag"
56
svctdmq "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tdmq"
67

78
"context"
@@ -88,6 +89,11 @@ func ResourceTencentCloudTdmqRabbitmqVipInstance() *schema.Resource {
8889
Computed: true,
8990
Description: "Cluster version, the default is `3.8.30`, valid values: `3.8.30` and `3.11.8`.",
9091
},
92+
"tags": {
93+
Type: schema.TypeMap,
94+
Optional: true,
95+
Description: "Tag description list.",
96+
},
9197
"public_access_endpoint": {
9298
Type: schema.TypeString,
9399
Computed: true,
@@ -199,6 +205,10 @@ func resourceTencentCloudTdmqRabbitmqVipInstanceCreate(d *schema.ResourceData, m
199205
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
200206
}
201207

208+
if result == nil || result.Response == nil {
209+
return resource.NonRetryableError(fmt.Errorf("Create tdmq rabbitmqVipInstance failed, Response is nil."))
210+
}
211+
202212
response = result
203213
return nil
204214
})
@@ -208,6 +218,10 @@ func resourceTencentCloudTdmqRabbitmqVipInstanceCreate(d *schema.ResourceData, m
208218
return err
209219
}
210220

221+
if response.Response.InstanceId == nil {
222+
return fmt.Errorf("InstanceId is nil.")
223+
}
224+
211225
instanceId = *response.Response.InstanceId
212226

213227
// wait
@@ -248,6 +262,15 @@ func resourceTencentCloudTdmqRabbitmqVipInstanceCreate(d *schema.ResourceData, m
248262

249263
d.SetId(instanceId)
250264

265+
if tags := helper.GetTags(d, "tags"); len(tags) > 0 {
266+
tagService := svctag.NewTagService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
267+
region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region
268+
resourceName := fmt.Sprintf("qcs::tdmq:%s:uin/:cluster/%s", region, d.Id())
269+
if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil {
270+
return err
271+
}
272+
}
273+
251274
return resourceTencentCloudTdmqRabbitmqVipInstanceRead(d, meta)
252275
}
253276

@@ -361,6 +384,15 @@ func resourceTencentCloudTdmqRabbitmqVipInstanceRead(d *schema.ResourceData, met
361384
return nil
362385
}
363386

387+
tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn()
388+
tagService := svctag.NewTagService(tcClient)
389+
tags, err := tagService.DescribeResourceTags(ctx, "tdmq", "cluster", tcClient.Region, d.Id())
390+
if err != nil {
391+
return err
392+
}
393+
394+
_ = d.Set("tags", tags)
395+
364396
return nil
365397
}
366398

@@ -386,28 +418,39 @@ func resourceTencentCloudTdmqRabbitmqVipInstanceUpdate(d *schema.ResourceData, m
386418
}
387419
}
388420

389-
request.InstanceId = &instanceId
390-
391421
if d.HasChange("cluster_name") {
392422
if v, ok := d.GetOk("cluster_name"); ok {
393423
request.ClusterName = helper.String(v.(string))
394424
}
395-
}
396425

397-
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
398-
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseTdmqClient().ModifyRabbitMQVipInstance(request)
399-
if e != nil {
400-
return tccommon.RetryError(e)
401-
} else {
402-
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
403-
}
426+
request.InstanceId = &instanceId
427+
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
428+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseTdmqClient().ModifyRabbitMQVipInstance(request)
429+
if e != nil {
430+
return tccommon.RetryError(e)
431+
} else {
432+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
433+
}
404434

405-
return nil
406-
})
435+
return nil
436+
})
407437

408-
if err != nil {
409-
log.Printf("[CRITAL]%s update tdmq rabbitmqVipInstance failed, reason:%+v", logId, err)
410-
return err
438+
if err != nil {
439+
log.Printf("[CRITAL]%s update tdmq rabbitmqVipInstance failed, reason:%+v", logId, err)
440+
return err
441+
}
442+
}
443+
444+
if d.HasChange("tags") {
445+
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
446+
tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn()
447+
tagService := svctag.NewTagService(tcClient)
448+
oldTags, newTags := d.GetChange("tags")
449+
replaceTags, deleteTags := svctag.DiffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{}))
450+
resourceName := tccommon.BuildTagResourceName("tdmq", "cluster", tcClient.Region, d.Id())
451+
if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil {
452+
return err
453+
}
411454
}
412455

413456
return resourceTencentCloudTdmqRabbitmqVipInstanceRead(d, meta)
@@ -424,7 +467,16 @@ func resourceTencentCloudTdmqRabbitmqVipInstanceDelete(d *schema.ResourceData, m
424467
instanceId = d.Id()
425468
)
426469

427-
if err := service.DeleteTdmqRabbitmqVipInstanceById(ctx, instanceId); err != nil {
470+
err := resource.Retry(tccommon.WaitReadTimeout, func() *resource.RetryError {
471+
e := service.DeleteTdmqRabbitmqVipInstanceById(ctx, instanceId)
472+
if e != nil {
473+
return tccommon.RetryError(e)
474+
}
475+
476+
return nil
477+
})
478+
479+
if err != nil {
428480
return err
429481
}
430482

tencentcloud/services/trabbit/resource_tc_tdmq_rabbitmq_vip_instance.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ resource "tencentcloud_tdmq_rabbitmq_vip_instance" "example" {
3434
enable_create_default_ha_mirror_queue = false
3535
auto_renew_flag = true
3636
time_span = 1
37+
tags = {
38+
createBy = "Terraform"
39+
}
3740
}
3841
3942
# create postpaid rabbitmq instance
@@ -50,6 +53,9 @@ resource "tencentcloud_tdmq_rabbitmq_vip_instance" "example2" {
5053
time_span = 1
5154
pay_mode = 0
5255
cluster_version = "3.11.8"
56+
tags = {
57+
createBy = "Terraform1"
58+
}
5359
}
5460
```
5561

website/docs/r/tdmq_rabbitmq_vip_instance.html.markdown

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ resource "tencentcloud_tdmq_rabbitmq_vip_instance" "example" {
4545
enable_create_default_ha_mirror_queue = false
4646
auto_renew_flag = true
4747
time_span = 1
48+
tags = {
49+
createBy = "Terraform"
50+
}
4851
}
4952
5053
# create postpaid rabbitmq instance
@@ -61,6 +64,9 @@ resource "tencentcloud_tdmq_rabbitmq_vip_instance" "example2" {
6164
time_span = 1
6265
pay_mode = 0
6366
cluster_version = "3.11.8"
67+
tags = {
68+
createBy = "Terraform1"
69+
}
6470
}
6571
```
6672

@@ -79,6 +85,7 @@ The following arguments are supported:
7985
* `node_spec` - (Optional, String) Node specifications. Valid values: rabbit-vip-basic-5 (for 2C4G), rabbit-vip-profession-2c8g (for 2C8G), rabbit-vip-basic-1 (for 4C8G), rabbit-vip-profession-4c16g (for 4C16G), rabbit-vip-basic-2 (for 8C16G), rabbit-vip-profession-8c32g (for 8C32G), rabbit-vip-basic-4 (for 16C32G), rabbit-vip-profession-16c64g (for 16C64G). The default is rabbit-vip-basic-1. NOTE: The above specifications may be sold out or removed from the shelves.
8086
* `pay_mode` - (Optional, Int) Payment method: 0 indicates postpaid; 1 indicates prepaid. Default: prepaid.
8187
* `storage_size` - (Optional, Int) Single node storage specification, the default is 200G.
88+
* `tags` - (Optional, Map) Tag description list.
8289
* `time_span` - (Optional, Int) Purchase duration, the default is 1 (month).
8390

8491
## Attributes Reference

0 commit comments

Comments
 (0)