Skip to content

Commit 4e15065

Browse files
authored
fix(clb): [121342773] tencentcloud_clb_listener_default_domain support retry (#3038)
* add * add * add * add * add * add
1 parent 7a86856 commit 4e15065

File tree

3 files changed

+51
-6
lines changed

3 files changed

+51
-6
lines changed

.changelog/3038.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_clb_listener_default_domain: support retry
3+
```
4+
5+
```release-note:enhancement
6+
resource/tencentcloud_clb_listener_rule: support retry
7+
```

tencentcloud/services/clb/resource_tc_clb_listener_default_domain.go

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1212
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1313
clb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317"
14+
sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
1415

1516
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
1617
)
@@ -86,15 +87,20 @@ func resourceTencentCloudClbListenerDefaultDomainCreate(d *schema.ResourceData,
8687
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
8788
result, e := client.ModifyDomainAttributes(request)
8889
if e != nil {
90+
if sdkError, ok := e.(*sdkErrors.TencentCloudSDKError); ok {
91+
if sdkError.Code == "FailedOperation.ResourceInOperating" {
92+
return resource.RetryableError(e)
93+
}
94+
}
95+
8996
return tccommon.RetryError(e)
9097
} else {
9198
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
9299
logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
93100
}
94101

95-
if result == nil {
96-
e = fmt.Errorf("modify domain failed")
97-
return resource.NonRetryableError(e)
102+
if result == nil || result.Response == nil || response.Response.RequestId == nil {
103+
return resource.NonRetryableError(fmt.Errorf("Modify domain attributes failed, Response is nil."))
98104
}
99105

100106
response = result
@@ -211,15 +217,20 @@ func resourceTencentCloudClbListenerDefaultDomainUpdate(d *schema.ResourceData,
211217
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
212218
result, e := client.ModifyDomainAttributes(request)
213219
if e != nil {
220+
if sdkError, ok := e.(*sdkErrors.TencentCloudSDKError); ok {
221+
if sdkError.Code == "FailedOperation.ResourceInOperating" {
222+
return resource.RetryableError(e)
223+
}
224+
}
225+
214226
return tccommon.RetryError(e)
215227
} else {
216228
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
217229
logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
218230
}
219231

220-
if result == nil {
221-
e = fmt.Errorf("modify domain failed")
222-
return resource.NonRetryableError(e)
232+
if result == nil || result.Response == nil || response.Response.RequestId == nil {
233+
return resource.NonRetryableError(fmt.Errorf("Modify domain attributes failed, Response is nil."))
223234
}
224235

225236
response = result

tencentcloud/services/clb/resource_tc_clb_listener_rule.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1313
"github.com/pkg/errors"
1414
clb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317"
15+
sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
1516

1617
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
1718
)
@@ -344,6 +345,10 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte
344345
} else {
345346
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
346347
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
348+
if response == nil || response.Response == nil || response.Response.RequestId == nil {
349+
return resource.NonRetryableError(fmt.Errorf("Create CLB listener rule failed, Response is nil."))
350+
}
351+
347352
requestId = *response.Response.RequestId
348353
retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient())
349354
if retryErr != nil {
@@ -390,10 +395,20 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte
390395
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
391396
response, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient().ModifyDomainAttributes(domainRequest)
392397
if e != nil {
398+
if sdkError, ok := e.(*sdkErrors.TencentCloudSDKError); ok {
399+
if sdkError.Code == "FailedOperation.ResourceInOperating" {
400+
return resource.RetryableError(e)
401+
}
402+
}
403+
393404
return tccommon.RetryError(e)
394405
} else {
395406
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
396407
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
408+
if response == nil || response.Response == nil || response.Response.RequestId == nil {
409+
return resource.NonRetryableError(fmt.Errorf("Modify domain attributes failed, Response is nil."))
410+
}
411+
397412
requestId := *response.Response.RequestId
398413
retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient())
399414
if retryErr != nil {
@@ -428,6 +443,10 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte
428443
} else {
429444
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
430445
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
446+
if response == nil || response.Response == nil || response.Response.RequestId == nil {
447+
return resource.NonRetryableError(fmt.Errorf("Modify rule failed, Response is nil."))
448+
}
449+
431450
requestId := *response.Response.RequestId
432451
retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient())
433452
if retryErr != nil {
@@ -674,6 +693,10 @@ func resourceTencentCloudClbListenerRuleUpdate(d *schema.ResourceData, meta inte
674693
} else {
675694
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
676695
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
696+
if response == nil || response.Response == nil || response.Response.RequestId == nil {
697+
return resource.NonRetryableError(fmt.Errorf("Modify rule failed, Response is nil."))
698+
}
699+
677700
requestId := *response.Response.RequestId
678701
retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient())
679702
if retryErr != nil {
@@ -744,6 +767,10 @@ func resourceTencentCloudClbListenerRuleUpdate(d *schema.ResourceData, meta inte
744767
} else {
745768
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
746769
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
770+
if response == nil || response.Response == nil || response.Response.RequestId == nil {
771+
return resource.NonRetryableError(fmt.Errorf("Modify domain attributes failed, Response is nil."))
772+
}
773+
747774
requestId := *response.Response.RequestId
748775
retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient())
749776
if retryErr != nil {

0 commit comments

Comments
 (0)