From bac597eca19445f0a5cdedacd0ca5a35f7f01b16 Mon Sep 17 00:00:00 2001 From: mikatong Date: Thu, 10 Apr 2025 19:21:27 +0800 Subject: [PATCH] add retry --- .../eb/resource_tc_eb_event_bus_test.go | 2 +- .../eb/resource_tc_eb_event_connector_test.go | 21 +--- .../eb/resource_tc_eb_event_rule_test.go | 2 +- .../services/eb/service_tencentcloud_eb.go | 117 +++++++++++------- 4 files changed, 82 insertions(+), 60 deletions(-) diff --git a/tencentcloud/services/eb/resource_tc_eb_event_bus_test.go b/tencentcloud/services/eb/resource_tc_eb_event_bus_test.go index 751ebfc2d4..b3d679c053 100644 --- a/tencentcloud/services/eb/resource_tc_eb_event_bus_test.go +++ b/tencentcloud/services/eb/resource_tc_eb_event_bus_test.go @@ -91,7 +91,7 @@ func testAccTencentCloudEbEventBusDestroy(s *terraform.State) error { securityGroup, err := service.DescribeEbEventBusById(ctx, rs.Primary.ID) if err != nil { - if err.(*sdkErrors.TencentCloudSDKError).Code == "ResourceNotFound.EventBus" { + if err.(*sdkErrors.TencentCloudSDKError).Code == "ResourceNotFound" { return nil } return err diff --git a/tencentcloud/services/eb/resource_tc_eb_event_connector_test.go b/tencentcloud/services/eb/resource_tc_eb_event_connector_test.go index a7d08aa717..8e4090b34a 100644 --- a/tencentcloud/services/eb/resource_tc_eb_event_connector_test.go +++ b/tencentcloud/services/eb/resource_tc_eb_event_connector_test.go @@ -32,18 +32,14 @@ func TestAccTencentCloudEbEventConnectorResource_basic(t *testing.T) { resource.TestCheckResourceAttr("tencentcloud_eb_event_connector.event_connector", "connection_name", "tf-event-connector"), resource.TestCheckResourceAttr("tencentcloud_eb_event_connector.event_connector", "description", "event connector desc"), resource.TestCheckResourceAttr("tencentcloud_eb_event_connector.event_connector", "enable", "true"), - resource.TestCheckResourceAttr("tencentcloud_eb_event_connector.event_connector", "type", "ckafka"), + resource.TestCheckResourceAttr("tencentcloud_eb_event_connector.event_connector", "type", "tdmq"), resource.TestCheckResourceAttr("tencentcloud_eb_event_connector.event_connector", "connection_description.#", "1"), resource.TestCheckResourceAttrSet("tencentcloud_eb_event_connector.event_connector", "connection_description.0.resource_description"), - resource.TestCheckResourceAttr("tencentcloud_eb_event_connector.event_connector", "connection_description.0.ckafka_params.#", "1"), - resource.TestCheckResourceAttr("tencentcloud_eb_event_connector.event_connector", "connection_description.0.ckafka_params.0.offset", "latest"), - resource.TestCheckResourceAttr("tencentcloud_eb_event_connector.event_connector", "connection_description.0.ckafka_params.0.topic_name", "dasdasd"), ), }, { - ResourceName: "tencentcloud_eb_event_connector.event_connector", - ImportState: true, - ImportStateVerify: true, + ResourceName: "tencentcloud_eb_event_connector.event_connector", + ImportState: true, }, }, }) @@ -69,7 +65,7 @@ func testAccCheckEbEventConnectorDestroy(s *terraform.State) error { connector, err := service.DescribeEbEventConnectorById(ctx, connectionId, eventBusId) if err != nil { - if err.(*sdkErrors.TencentCloudSDKError).Code == "ResourceNotFound.EventBus" { + if err.(*sdkErrors.TencentCloudSDKError).Code == "ResourceNotFound" { return nil } return err @@ -130,7 +126,6 @@ resource "tencentcloud_eb_event_bus" "foo" { } locals { - ckafka_id = "ckafka-qzoeaqx8" uin = data.tencentcloud_user_info.foo.owner_uin } @@ -139,14 +134,10 @@ resource "tencentcloud_eb_event_connector" "event_connector" { connection_name = "tf-event-connector" description = "event connector desc" enable = true - type = "ckafka" + type = "tdmq" connection_description { - resource_description = "qcs::ckafka:ap-guangzhou:uin/${local.uin}:ckafkaId/uin/${local.uin}/${local.ckafka_id}" - ckafka_params { - offset = "latest" - topic_name = "dasdasd" - } + resource_description = "qcs::tdmq:ap-guangzhou:uin/${local.uin}:subscriptionName/pulsar-pb5xp2wwxepd/keep-tdmq-ns/keep-tdmq-topic1/test" } } diff --git a/tencentcloud/services/eb/resource_tc_eb_event_rule_test.go b/tencentcloud/services/eb/resource_tc_eb_event_rule_test.go index a1454a7cd0..e7e6dfffd0 100644 --- a/tencentcloud/services/eb/resource_tc_eb_event_rule_test.go +++ b/tencentcloud/services/eb/resource_tc_eb_event_rule_test.go @@ -76,7 +76,7 @@ func testAccCheckEbEventRuleDestroy(s *terraform.State) error { rule, err := service.DescribeEbEventRuleById(ctx, eventBusId, ruleId) if err != nil { - if err.(*sdkErrors.TencentCloudSDKError).Code == "ResourceNotFound.Rule" { + if err.(*sdkErrors.TencentCloudSDKError).Code == "ResourceNotFound" { return nil } return err diff --git a/tencentcloud/services/eb/service_tencentcloud_eb.go b/tencentcloud/services/eb/service_tencentcloud_eb.go index f3a958e8b1..921171fde3 100644 --- a/tencentcloud/services/eb/service_tencentcloud_eb.go +++ b/tencentcloud/services/eb/service_tencentcloud_eb.go @@ -4,6 +4,7 @@ import ( "context" "log" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416" @@ -155,20 +156,22 @@ func (me *EbService) DescribeEbEventBusById(ctx context.Context, eventBusId stri } }() - ratelimit.Check(request.GetAction()) - - response, err := me.client.UseEbClient().GetEventBus(request) + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, e := me.client.UseEbClient().GetEventBus(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + event = response.Response + return nil + }) if err != nil { errRet = err return } - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) - - if response.Response == nil { - return - } - event = response.Response return } @@ -184,14 +187,20 @@ func (me *EbService) DeleteEbEventBusById(ctx context.Context, eventBusId string } }() - ratelimit.Check(request.GetAction()) - - response, err := me.client.UseEbClient().DeleteEventBus(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, e := me.client.UseEbClient().DeleteEventBus(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + return nil + }) if err != nil { errRet = err return } - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) return } @@ -271,20 +280,26 @@ func (me *EbService) DescribeEbEventRuleById(ctx context.Context, eventBusId str } }() - ratelimit.Check(request.GetAction()) + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, e := me.client.UseEbClient().GetRule(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + if response.Response == nil { + return nil + } - response, err := me.client.UseEbClient().GetRule(request) + rule = response.Response + return nil + }) if err != nil { errRet = err return } - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) - if response.Response == nil { - return - } - - rule = response.Response return } @@ -301,14 +316,20 @@ func (me *EbService) DeleteEbEventRuleById(ctx context.Context, eventBusId strin } }() - ratelimit.Check(request.GetAction()) - - response, err := me.client.UseEbClient().DeleteRule(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, e := me.client.UseEbClient().DeleteRule(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + return nil + }) if err != nil { errRet = err return } - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) return } @@ -436,24 +457,28 @@ func (me *EbService) DescribeEbEventConnectorById(ctx context.Context, connectio } }() - ratelimit.Check(request.GetAction()) - - response, err := me.client.UseEbClient().ListConnections(request) + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, e := me.client.UseEbClient().ListConnections(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + if len(response.Response.Connections) < 1 { + return nil + } + for _, v := range response.Response.Connections { + if *v.ConnectionId == connectionId { + eventConnector = v + } + } + return nil + }) if err != nil { errRet = err return } - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) - - if len(response.Response.Connections) < 1 { - return - } - - for _, v := range response.Response.Connections { - if *v.ConnectionId == connectionId { - eventConnector = v - } - } return } @@ -471,14 +496,20 @@ func (me *EbService) DeleteEbEventConnectorById(ctx context.Context, connectionI } }() - ratelimit.Check(request.GetAction()) - - response, err := me.client.UseEbClient().DeleteConnection(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, e := me.client.UseEbClient().DeleteConnection(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + return nil + }) if err != nil { errRet = err return } - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) return }