From a3d587f9ad0dae7acbc2d74b7e9b7a36e3a0f3a0 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Thu, 9 Oct 2025 14:13:00 +0800 Subject: [PATCH 1/2] add --- .../cfw/resource_tc_cfw_edge_policy.go | 14 +++++++++---- .../services/cfw/service_tencentcloud_cfw.go | 20 +++++++++++++------ 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/tencentcloud/services/cfw/resource_tc_cfw_edge_policy.go b/tencentcloud/services/cfw/resource_tc_cfw_edge_policy.go index 6c6de3e1b6..c120013a72 100644 --- a/tencentcloud/services/cfw/resource_tc_cfw_edge_policy.go +++ b/tencentcloud/services/cfw/resource_tc_cfw_edge_policy.go @@ -163,7 +163,6 @@ func resourceTencentCloudCfwEdgePolicyCreate(d *schema.ResourceData, meta interf } request.Rules = append(request.Rules, &createRuleItem) - err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCfwClient().AddAclRule(request) if e != nil { @@ -172,6 +171,10 @@ func resourceTencentCloudCfwEdgePolicyCreate(d *schema.ResourceData, meta interf log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } + if result == nil || result.Response == nil { + return tccommon.RetryError(fmt.Errorf("Create cfw edgePolicy failed, Response is nil.")) + } + response = result return nil }) @@ -181,6 +184,10 @@ func resourceTencentCloudCfwEdgePolicyCreate(d *schema.ResourceData, meta interf return err } + if len(response.Response.RuleUuid) == 0 { + return fmt.Errorf("RuleUuid is nil.") + } + ruleUuid := *response.Response.RuleUuid[0] uuid = strconv.FormatInt(ruleUuid, 10) d.SetId(uuid) @@ -207,8 +214,8 @@ func resourceTencentCloudCfwEdgePolicyRead(d *schema.ResourceData, meta interfac } if edgePolicy == nil { + log.Printf("[WARN]%s resource `tencentcloud_cfw_edge_policy` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) d.SetId("") - log.Printf("[WARN]%s resource `CfwEdgePolicy` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) return nil } @@ -303,7 +310,6 @@ func resourceTencentCloudCfwEdgePolicyUpdate(d *schema.ResourceData, meta interf ) immutableArgs := []string{"uuid", "direction"} - for _, v := range immutableArgs { if d.HasChange(v) { return fmt.Errorf("argument `%s` cannot be changed", v) @@ -341,7 +347,7 @@ func resourceTencentCloudCfwEdgePolicyUpdate(d *schema.ResourceData, meta interf modifyRuleItem.Port = helper.String(v.(string)) } - if v, ok := d.GetOk("direction"); ok { + if v, ok := d.GetOkExists("direction"); ok { modifyRuleItem.Direction = helper.IntUint64(v.(int)) } diff --git a/tencentcloud/services/cfw/service_tencentcloud_cfw.go b/tencentcloud/services/cfw/service_tencentcloud_cfw.go index 46224591d8..f5df9371d9 100644 --- a/tencentcloud/services/cfw/service_tencentcloud_cfw.go +++ b/tencentcloud/services/cfw/service_tencentcloud_cfw.go @@ -6,6 +6,7 @@ import ( "log" "strconv" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" cfw "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cfw/v20190904" @@ -213,16 +214,23 @@ func (me *CfwService) DeleteCfwEdgePolicyById(ctx context.Context, uuid string) } }() - ratelimit.Check(request.GetAction()) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseCfwClient().RemoveAclRule(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(), result.ToJsonString()) + } + + return nil + }) - response, err := me.client.UseCfwClient().RemoveAclRule(request) if err != nil { - errRet = err - return + log.Printf("[CRITAL]%s update cfw edgePolicy failed, reason:%+v", logId, err) + return err } - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) - return } From 5c154080e0c01679a1e3d00e464b540a57eb8b5d Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Thu, 9 Oct 2025 14:16:05 +0800 Subject: [PATCH 2/2] add --- .changelog/3541.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/3541.txt diff --git a/.changelog/3541.txt b/.changelog/3541.txt new file mode 100644 index 0000000000..41bdbcfb39 --- /dev/null +++ b/.changelog/3541.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_cfw_edge_policy: optmize code logic +```