From da258f1e8efd7eb6f6d4e7f69c5ae5fd58a54354 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Tue, 24 Dec 2024 14:37:54 +0800 Subject: [PATCH 1/6] add --- tencentcloud/common/common.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tencentcloud/common/common.go b/tencentcloud/common/common.go index 0390bfcb35..3cd4fac9fa 100644 --- a/tencentcloud/common/common.go +++ b/tencentcloud/common/common.go @@ -100,6 +100,8 @@ var retryableErrorCode = []string{ "UnsupportedOperation.UnsupportedDeleteService", // gaap "FailedOperation.ListenerHasTask", + // clb + "FailedOperation.ResourceInOperating", } // retryableCosErrorCode is retryable error code for COS/CI SDK From 3b3e0909c1f5766dec9293e1472f17077a009912 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Tue, 24 Dec 2024 14:40:55 +0800 Subject: [PATCH 2/6] add --- .changelog/3038.txt | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changelog/3038.txt diff --git a/.changelog/3038.txt b/.changelog/3038.txt new file mode 100644 index 0000000000..b81ab7c239 --- /dev/null +++ b/.changelog/3038.txt @@ -0,0 +1,7 @@ +```release-note:enhancement +resource/tencentcloud_clb_listener_default_domain: support retry +``` + +```release-note:enhancement +resource/tencentcloud_clb_listener_rule: support retry +``` From 7bb32951092a81fe58a6ca4017d694b88c4e6c46 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Tue, 24 Dec 2024 14:48:19 +0800 Subject: [PATCH 3/6] add --- tencentcloud/common/common.go | 2 -- .../clb/resource_tc_clb_listener_default_domain.go | 13 +++++++++++++ .../services/clb/resource_tc_clb_listener_rule.go | 7 +++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/tencentcloud/common/common.go b/tencentcloud/common/common.go index 3cd4fac9fa..0390bfcb35 100644 --- a/tencentcloud/common/common.go +++ b/tencentcloud/common/common.go @@ -100,8 +100,6 @@ var retryableErrorCode = []string{ "UnsupportedOperation.UnsupportedDeleteService", // gaap "FailedOperation.ListenerHasTask", - // clb - "FailedOperation.ResourceInOperating", } // retryableCosErrorCode is retryable error code for COS/CI SDK diff --git a/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go b/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go index 5a6389b880..9d83190a29 100644 --- a/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go +++ b/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go @@ -11,6 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" clb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317" + sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -86,6 +87,12 @@ func resourceTencentCloudClbListenerDefaultDomainCreate(d *schema.ResourceData, err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := client.ModifyDomainAttributes(request) if e != nil { + if sdkError, ok := e.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "FailedOperation.ResourceInOperating" { + return resource.RetryableError(e) + } + } + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", @@ -211,6 +218,12 @@ func resourceTencentCloudClbListenerDefaultDomainUpdate(d *schema.ResourceData, err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := client.ModifyDomainAttributes(request) if e != nil { + if sdkError, ok := e.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "FailedOperation.ResourceInOperating" { + return resource.RetryableError(e) + } + } + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", diff --git a/tencentcloud/services/clb/resource_tc_clb_listener_rule.go b/tencentcloud/services/clb/resource_tc_clb_listener_rule.go index 919159da63..89c543ac04 100644 --- a/tencentcloud/services/clb/resource_tc_clb_listener_rule.go +++ b/tencentcloud/services/clb/resource_tc_clb_listener_rule.go @@ -12,6 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/pkg/errors" clb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317" + sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -390,6 +391,12 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { response, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient().ModifyDomainAttributes(domainRequest) if e != nil { + if sdkError, ok := e.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "FailedOperation.ResourceInOperating" { + return resource.RetryableError(e) + } + } + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", From 9112889b97eb24bb24b3ae93e8813d8434fe9717 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Tue, 24 Dec 2024 14:51:33 +0800 Subject: [PATCH 4/6] add --- .../services/clb/resource_tc_clb_listener_default_domain.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go b/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go index 9d83190a29..291b14f9b4 100644 --- a/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go +++ b/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go @@ -99,7 +99,7 @@ func resourceTencentCloudClbListenerDefaultDomainCreate(d *schema.ResourceData, logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } - if result == nil { + if result == nil || result.Response == nil || response.Response.RequestId == nil { e = fmt.Errorf("modify domain failed") return resource.NonRetryableError(e) } @@ -230,7 +230,7 @@ func resourceTencentCloudClbListenerDefaultDomainUpdate(d *schema.ResourceData, logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } - if result == nil { + if result == nil || result.Response == nil || response.Response.RequestId == nil { e = fmt.Errorf("modify domain failed") return resource.NonRetryableError(e) } From 890b6fcd2b7b3e893d0b6720c877a1f6a1cce3cd Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Tue, 24 Dec 2024 14:58:21 +0800 Subject: [PATCH 5/6] add --- ...resource_tc_clb_listener_default_domain.go | 6 ++---- .../clb/resource_tc_clb_listener_rule.go | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go b/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go index 291b14f9b4..2dea5e77fb 100644 --- a/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go +++ b/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go @@ -100,8 +100,7 @@ func resourceTencentCloudClbListenerDefaultDomainCreate(d *schema.ResourceData, } if result == nil || result.Response == nil || response.Response.RequestId == nil { - e = fmt.Errorf("modify domain failed") - return resource.NonRetryableError(e) + return resource.NonRetryableError(fmt.Errorf("modify domain attributes failed")) } response = result @@ -231,8 +230,7 @@ func resourceTencentCloudClbListenerDefaultDomainUpdate(d *schema.ResourceData, } if result == nil || result.Response == nil || response.Response.RequestId == nil { - e = fmt.Errorf("modify domain failed") - return resource.NonRetryableError(e) + return resource.NonRetryableError(fmt.Errorf("modify domain attributes failed")) } response = result diff --git a/tencentcloud/services/clb/resource_tc_clb_listener_rule.go b/tencentcloud/services/clb/resource_tc_clb_listener_rule.go index 89c543ac04..2a80ee7000 100644 --- a/tencentcloud/services/clb/resource_tc_clb_listener_rule.go +++ b/tencentcloud/services/clb/resource_tc_clb_listener_rule.go @@ -345,6 +345,10 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + if response == nil || response.Response == nil || response.Response.RequestId == nil { + return resource.NonRetryableError(fmt.Errorf("create CLB listener rule failed")) + } + requestId = *response.Response.RequestId retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient()) if retryErr != nil { @@ -401,6 +405,10 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + if response == nil || response.Response == nil || response.Response.RequestId == nil { + return resource.NonRetryableError(fmt.Errorf("modify domain attributes failed")) + } + requestId := *response.Response.RequestId retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient()) if retryErr != nil { @@ -435,6 +443,10 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + if response == nil || response.Response == nil || response.Response.RequestId == nil { + return resource.NonRetryableError(fmt.Errorf("modify rule failed")) + } + requestId := *response.Response.RequestId retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient()) if retryErr != nil { @@ -681,6 +693,10 @@ func resourceTencentCloudClbListenerRuleUpdate(d *schema.ResourceData, meta inte } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + if response == nil || response.Response == nil || response.Response.RequestId == nil { + return resource.NonRetryableError(fmt.Errorf("modify rule failed")) + } + requestId := *response.Response.RequestId retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient()) if retryErr != nil { @@ -751,6 +767,10 @@ func resourceTencentCloudClbListenerRuleUpdate(d *schema.ResourceData, meta inte } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + if response == nil || response.Response == nil || response.Response.RequestId == nil { + return resource.NonRetryableError(fmt.Errorf("modify domain attributes failed")) + } + requestId := *response.Response.RequestId retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient()) if retryErr != nil { From 5ad3d7931412cebc1a27cf9143cbb29ca69eccfc Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Tue, 24 Dec 2024 17:10:31 +0800 Subject: [PATCH 6/6] add --- .../clb/resource_tc_clb_listener_default_domain.go | 4 ++-- .../services/clb/resource_tc_clb_listener_rule.go | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go b/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go index 2dea5e77fb..589dccfa56 100644 --- a/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go +++ b/tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go @@ -100,7 +100,7 @@ func resourceTencentCloudClbListenerDefaultDomainCreate(d *schema.ResourceData, } if result == nil || result.Response == nil || response.Response.RequestId == nil { - return resource.NonRetryableError(fmt.Errorf("modify domain attributes failed")) + return resource.NonRetryableError(fmt.Errorf("Modify domain attributes failed, Response is nil.")) } response = result @@ -230,7 +230,7 @@ func resourceTencentCloudClbListenerDefaultDomainUpdate(d *schema.ResourceData, } if result == nil || result.Response == nil || response.Response.RequestId == nil { - return resource.NonRetryableError(fmt.Errorf("modify domain attributes failed")) + return resource.NonRetryableError(fmt.Errorf("Modify domain attributes failed, Response is nil.")) } response = result diff --git a/tencentcloud/services/clb/resource_tc_clb_listener_rule.go b/tencentcloud/services/clb/resource_tc_clb_listener_rule.go index 2a80ee7000..3bf22eefba 100644 --- a/tencentcloud/services/clb/resource_tc_clb_listener_rule.go +++ b/tencentcloud/services/clb/resource_tc_clb_listener_rule.go @@ -346,7 +346,7 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) if response == nil || response.Response == nil || response.Response.RequestId == nil { - return resource.NonRetryableError(fmt.Errorf("create CLB listener rule failed")) + return resource.NonRetryableError(fmt.Errorf("Create CLB listener rule failed, Response is nil.")) } requestId = *response.Response.RequestId @@ -406,7 +406,7 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) if response == nil || response.Response == nil || response.Response.RequestId == nil { - return resource.NonRetryableError(fmt.Errorf("modify domain attributes failed")) + return resource.NonRetryableError(fmt.Errorf("Modify domain attributes failed, Response is nil.")) } requestId := *response.Response.RequestId @@ -444,7 +444,7 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) if response == nil || response.Response == nil || response.Response.RequestId == nil { - return resource.NonRetryableError(fmt.Errorf("modify rule failed")) + return resource.NonRetryableError(fmt.Errorf("Modify rule failed, Response is nil.")) } requestId := *response.Response.RequestId @@ -694,7 +694,7 @@ func resourceTencentCloudClbListenerRuleUpdate(d *schema.ResourceData, meta inte log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) if response == nil || response.Response == nil || response.Response.RequestId == nil { - return resource.NonRetryableError(fmt.Errorf("modify rule failed")) + return resource.NonRetryableError(fmt.Errorf("Modify rule failed, Response is nil.")) } requestId := *response.Response.RequestId @@ -768,7 +768,7 @@ func resourceTencentCloudClbListenerRuleUpdate(d *schema.ResourceData, meta inte log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) if response == nil || response.Response == nil || response.Response.RequestId == nil { - return resource.NonRetryableError(fmt.Errorf("modify domain attributes failed")) + return resource.NonRetryableError(fmt.Errorf("Modify domain attributes failed, Response is nil.")) } requestId := *response.Response.RequestId