Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .changelog/3541.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
resource/tencentcloud_cfw_edge_policy: optmize code logic
```
14 changes: 10 additions & 4 deletions tencentcloud/services/cfw/resource_tc_cfw_edge_policy.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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
})
Expand All @@ -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)
Expand All @@ -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
}

Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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))
}

Expand Down
20 changes: 14 additions & 6 deletions tencentcloud/services/cfw/service_tencentcloud_cfw.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
}

Expand Down
Loading