@@ -2,6 +2,7 @@ package trabbit
2
2
3
3
import (
4
4
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
5
+ svctag "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tag"
5
6
svctdmq "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tdmq"
6
7
7
8
"context"
@@ -88,6 +89,11 @@ func ResourceTencentCloudTdmqRabbitmqVipInstance() *schema.Resource {
88
89
Computed : true ,
89
90
Description : "Cluster version, the default is `3.8.30`, valid values: `3.8.30` and `3.11.8`." ,
90
91
},
92
+ "tags" : {
93
+ Type : schema .TypeMap ,
94
+ Optional : true ,
95
+ Description : "Tag description list." ,
96
+ },
91
97
"public_access_endpoint" : {
92
98
Type : schema .TypeString ,
93
99
Computed : true ,
@@ -199,6 +205,10 @@ func resourceTencentCloudTdmqRabbitmqVipInstanceCreate(d *schema.ResourceData, m
199
205
log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " , logId , request .GetAction (), request .ToJsonString (), result .ToJsonString ())
200
206
}
201
207
208
+ if result == nil || result .Response == nil {
209
+ return resource .NonRetryableError (fmt .Errorf ("Create tdmq rabbitmqVipInstance failed, Response is nil." ))
210
+ }
211
+
202
212
response = result
203
213
return nil
204
214
})
@@ -208,6 +218,10 @@ func resourceTencentCloudTdmqRabbitmqVipInstanceCreate(d *schema.ResourceData, m
208
218
return err
209
219
}
210
220
221
+ if response .Response .InstanceId == nil {
222
+ return fmt .Errorf ("InstanceId is nil." )
223
+ }
224
+
211
225
instanceId = * response .Response .InstanceId
212
226
213
227
// wait
@@ -248,6 +262,15 @@ func resourceTencentCloudTdmqRabbitmqVipInstanceCreate(d *schema.ResourceData, m
248
262
249
263
d .SetId (instanceId )
250
264
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
+
251
274
return resourceTencentCloudTdmqRabbitmqVipInstanceRead (d , meta )
252
275
}
253
276
@@ -361,6 +384,15 @@ func resourceTencentCloudTdmqRabbitmqVipInstanceRead(d *schema.ResourceData, met
361
384
return nil
362
385
}
363
386
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
+
364
396
return nil
365
397
}
366
398
@@ -386,28 +418,39 @@ func resourceTencentCloudTdmqRabbitmqVipInstanceUpdate(d *schema.ResourceData, m
386
418
}
387
419
}
388
420
389
- request .InstanceId = & instanceId
390
-
391
421
if d .HasChange ("cluster_name" ) {
392
422
if v , ok := d .GetOk ("cluster_name" ); ok {
393
423
request .ClusterName = helper .String (v .(string ))
394
424
}
395
- }
396
425
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
+ }
404
434
405
- return nil
406
- })
435
+ return nil
436
+ })
407
437
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
+ }
411
454
}
412
455
413
456
return resourceTencentCloudTdmqRabbitmqVipInstanceRead (d , meta )
@@ -424,7 +467,16 @@ func resourceTencentCloudTdmqRabbitmqVipInstanceDelete(d *schema.ResourceData, m
424
467
instanceId = d .Id ()
425
468
)
426
469
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 {
428
480
return err
429
481
}
430
482
0 commit comments