@@ -2,6 +2,7 @@ package trabbit
22
33import (
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
0 commit comments