diff --git a/.changelog/3156.txt b/.changelog/3156.txt new file mode 100644 index 0000000000..257c1182fe --- /dev/null +++ b/.changelog/3156.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_tag: optimize the creation retry logic +``` \ No newline at end of file diff --git a/tencentcloud/services/tag/resource_tc_tag.go b/tencentcloud/services/tag/resource_tc_tag.go index c6dcbba844..f2127118aa 100644 --- a/tencentcloud/services/tag/resource_tc_tag.go +++ b/tencentcloud/services/tag/resource_tc_tag.go @@ -10,6 +10,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" @@ -28,14 +29,14 @@ func ResourceTencentCloudTag() *schema.Resource { Required: true, ForceNew: true, Type: schema.TypeString, - Description: "tag key.", + Description: "Tag key.", }, "tag_value": { Required: true, ForceNew: true, Type: schema.TypeString, - Description: "tag value.", + Description: "Tag value.", }, }, } @@ -65,6 +66,12 @@ func resourceTencentCloudTagResourceCreate(d *schema.ResourceData, meta interfac err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseTagClient().CreateTag(request) if e != nil { + if sdkError, ok := e.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceInUse.TagDuplicate" { + return resource.NonRetryableError(e) + } + } + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) diff --git a/tencentcloud/services/tag/resource_tc_tag.md b/tencentcloud/services/tag/resource_tc_tag.md index c8489687e8..b42403bce6 100644 --- a/tencentcloud/services/tag/resource_tc_tag.md +++ b/tencentcloud/services/tag/resource_tc_tag.md @@ -3,18 +3,16 @@ Provides a resource to create a tag Example Usage ```hcl - -resource "tencentcloud_tag" "tag" { - tag_key = "test" - tag_value = "Terraform" +resource "tencentcloud_tag" "example" { + tag_key = "tagKey" + tag_value = "tagValue" } - ``` Import -tag tag can be imported using the id, e.g. +tag can be imported using the id, e.g. ``` -terraform import tencentcloud_tag.tag tag_id +terraform import tencentcloud_tag.example tagKey#tagValue ``` \ No newline at end of file diff --git a/website/docs/r/tag.html.markdown b/website/docs/r/tag.html.markdown index 00a677ac41..d613da3170 100644 --- a/website/docs/r/tag.html.markdown +++ b/website/docs/r/tag.html.markdown @@ -14,9 +14,9 @@ Provides a resource to create a tag ## Example Usage ```hcl -resource "tencentcloud_tag" "tag" { - tag_key = "test" - tag_value = "Terraform" +resource "tencentcloud_tag" "example" { + tag_key = "tagKey" + tag_value = "tagValue" } ``` @@ -24,8 +24,8 @@ resource "tencentcloud_tag" "tag" { The following arguments are supported: -* `tag_key` - (Required, String, ForceNew) tag key. -* `tag_value` - (Required, String, ForceNew) tag value. +* `tag_key` - (Required, String, ForceNew) Tag key. +* `tag_value` - (Required, String, ForceNew) Tag value. ## Attributes Reference @@ -37,9 +37,9 @@ In addition to all arguments above, the following attributes are exported: ## Import -tag tag can be imported using the id, e.g. +tag can be imported using the id, e.g. ``` -terraform import tencentcloud_tag.tag tag_id +terraform import tencentcloud_tag.example tagKey#tagValue ```