From 3e60c4bd054fb7176e362c4052a90f47f1a12a2c Mon Sep 17 00:00:00 2001 From: mikatong Date: Mon, 17 Feb 2025 15:51:38 +0800 Subject: [PATCH 1/2] retry the FailedOperation.PgroupIsUpdating error --- tencentcloud/services/cfs/extension_cfs.go | 2 ++ .../services/cfs/resource_tc_cfs_access_rule.go | 16 ++++++++++++++++ .../cfs/resource_tc_cfs_access_rule_test.go | 10 +++++++--- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/tencentcloud/services/cfs/extension_cfs.go b/tencentcloud/services/cfs/extension_cfs.go index e32e7e3647..537a519e83 100644 --- a/tencentcloud/services/cfs/extension_cfs.go +++ b/tencentcloud/services/cfs/extension_cfs.go @@ -24,6 +24,8 @@ const ( CFS_USER_PERMISSION_NO_ALL_SQUASH = "no_all_squash" CFS_USER_PERMISSION_ROOT_SQUASH = "root_squash" CFS_USER_PERMISSION_NO_ROOT_SQUASH = "no_root_squash" + + FAILED_OPERATION_PGROUP_IS_UPDATING_ERROR = "FailedOperation.PgroupIsUpdating" ) var CFS_STORAGETYPE = []string{ diff --git a/tencentcloud/services/cfs/resource_tc_cfs_access_rule.go b/tencentcloud/services/cfs/resource_tc_cfs_access_rule.go index 467433f096..94d6ca3196 100644 --- a/tencentcloud/services/cfs/resource_tc_cfs_access_rule.go +++ b/tencentcloud/services/cfs/resource_tc_cfs_access_rule.go @@ -12,6 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" cfs "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cfs/v20190719" + sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) @@ -76,6 +77,11 @@ func resourceTencentCloudCfsAccessRuleCreate(d *schema.ResourceData, meta interf if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), err.Error()) + if e, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if e.GetCode() == FAILED_OPERATION_PGROUP_IS_UPDATING_ERROR { + return resource.RetryableError(err) + } + } return tccommon.RetryError(err) } log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", @@ -162,6 +168,11 @@ func resourceTencentCloudCfsAccessRuleUpdate(d *schema.ResourceData, meta interf if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), err.Error()) + if e, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if e.GetCode() == FAILED_OPERATION_PGROUP_IS_UPDATING_ERROR { + return resource.RetryableError(err) + } + } return tccommon.RetryError(err) } log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", @@ -188,6 +199,11 @@ func resourceTencentCloudCfsAccessRuleDelete(d *schema.ResourceData, meta interf err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { errRet := cfsService.DeleteAccessRule(ctx, groupId, ruleId) if errRet != nil { + if e, ok := errRet.(*sdkErrors.TencentCloudSDKError); ok { + if e.GetCode() == FAILED_OPERATION_PGROUP_IS_UPDATING_ERROR { + return resource.RetryableError(errRet) + } + } return tccommon.RetryError(errRet) } return nil diff --git a/tencentcloud/services/cfs/resource_tc_cfs_access_rule_test.go b/tencentcloud/services/cfs/resource_tc_cfs_access_rule_test.go index 31dbb8c126..f7a68740df 100644 --- a/tencentcloud/services/cfs/resource_tc_cfs_access_rule_test.go +++ b/tencentcloud/services/cfs/resource_tc_cfs_access_rule_test.go @@ -13,7 +13,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) -func TestAccTencentCloudCfsAccessRule(t *testing.T) { +func TestAccTencentCloudCfsAccessRuleResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { tcacctest.AccPreCheck(t) }, @@ -97,10 +97,14 @@ func testAccCheckCfsAccessRuleExists(n string) resource.TestCheckFunc { } } -const testAccCfsAccessRule = DefaultCfsAccessGroup + ` +const testAccCfsAccessRule = ` +resource "tencentcloud_cfs_access_group" "foo" { + name = "testAccessRuleGroup" + description = "desc." +} resource "tencentcloud_cfs_access_rule" "foo" { - access_group_id = local.cfs_access_group_id + access_group_id = tencentcloud_cfs_access_group.foo.id auth_client_ip = "10.11.1.0/24" priority = 1 } From 1f2c16c4454450752f656e4f01f2726648cd34cb Mon Sep 17 00:00:00 2001 From: mikatong Date: Mon, 17 Feb 2025 15:55:35 +0800 Subject: [PATCH 2/2] add changelog --- .changelog/3134.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/3134.txt diff --git a/.changelog/3134.txt b/.changelog/3134.txt new file mode 100644 index 0000000000..3a8c7727af --- /dev/null +++ b/.changelog/3134.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_cfs_access_rule: retry the FailedOperation.PgroupIsUpdating error +```