Skip to content

Commit c59d899

Browse files
authored
fix(cfw): [128892707] tencentcloud_cfw_nat_policy optimiz update function code logic (#3621)
* add * add
1 parent 1e73ddc commit c59d899

File tree

3 files changed

+38
-14
lines changed

3 files changed

+38
-14
lines changed

.changelog/3621.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_cfw_nat_policy: optimiz update function code logic
3+
```

tencentcloud/services/cfw/resource_tc_cfw_nat_policy.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,6 @@ func resourceTencentCloudCfwNatPolicyCreate(d *schema.ResourceData, meta interfa
165165
}
166166

167167
request.Rules = append(request.Rules, &createNatRuleItem)
168-
169168
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
170169
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCfwClient().AddNatAcRule(request)
171170
if e != nil {
@@ -174,6 +173,10 @@ func resourceTencentCloudCfwNatPolicyCreate(d *schema.ResourceData, meta interfa
174173
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
175174
}
176175

176+
if result == nil || result.Response == nil || response.Response.RuleUuid == nil || len(result.Response.RuleUuid) == 0 {
177+
return resource.NonRetryableError(fmt.Errorf("Create cfw natPolicy failed, Response is nil."))
178+
}
179+
177180
response = result
178181
return nil
179182
})
@@ -207,8 +210,8 @@ func resourceTencentCloudCfwNatPolicyRead(d *schema.ResourceData, meta interface
207210
}
208211

209212
if natPolicy == nil {
213+
log.Printf("[WARN]%s resource `tencentcloud_cfw_nat_policy` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
210214
d.SetId("")
211-
log.Printf("[WARN]%s resource `CfwNatPolicy` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
212215
return nil
213216
}
214217

@@ -282,8 +285,7 @@ func resourceTencentCloudCfwNatPolicyUpdate(d *schema.ResourceData, meta interfa
282285
uuid = d.Id()
283286
)
284287

285-
immutableArgs := []string{"uuid", "direction"}
286-
288+
immutableArgs := []string{"direction"}
287289
for _, v := range immutableArgs {
288290
if d.HasChange(v) {
289291
return fmt.Errorf("argument `%s` cannot be changed", v)
@@ -321,7 +323,7 @@ func resourceTencentCloudCfwNatPolicyUpdate(d *schema.ResourceData, meta interfa
321323
modifyRuleItem.Port = helper.String(v.(string))
322324
}
323325

324-
if v, ok := d.GetOk("direction"); ok {
326+
if v, ok := d.GetOkExists("direction"); ok {
325327
modifyRuleItem.Direction = helper.IntUint64(v.(int))
326328
}
327329

@@ -342,7 +344,6 @@ func resourceTencentCloudCfwNatPolicyUpdate(d *schema.ResourceData, meta interfa
342344
}
343345

344346
request.Rules = append(request.Rules, &modifyRuleItem)
345-
346347
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
347348
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCfwClient().ModifyNatAcRule(request)
348349
if e != nil {

tencentcloud/services/cfw/service_tencentcloud_cfw.go

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,7 @@ func (me *CfwService) DescribeCfwNatPolicyById(ctx context.Context, uuid string)
418418
logId := tccommon.GetLogId(ctx)
419419

420420
request := cfw.NewDescribeNatAcRuleRequest()
421+
response := cfw.NewDescribeNatAcRuleResponse()
421422
request.Limit = common.Uint64Ptr(20)
422423
request.Offset = common.Uint64Ptr(0)
423424
request.Filters = []*cfw.CommonFilter{
@@ -434,16 +435,28 @@ func (me *CfwService) DescribeCfwNatPolicyById(ctx context.Context, uuid string)
434435
}
435436
}()
436437

437-
ratelimit.Check(request.GetAction())
438+
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
439+
ratelimit.Check(request.GetAction())
440+
result, e := me.client.UseCfwClient().DescribeNatAcRule(request)
441+
if e != nil {
442+
return tccommon.RetryError(e)
443+
} else {
444+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
445+
}
446+
447+
if result == nil || result.Response == nil || result.Response.Data == nil {
448+
return resource.NonRetryableError(fmt.Errorf("Describe nat ac rule failed, Response is nil."))
449+
}
450+
451+
response = result
452+
return nil
453+
})
438454

439-
response, err := me.client.UseCfwClient().DescribeNatAcRule(request)
440455
if err != nil {
441456
errRet = err
442457
return
443458
}
444459

445-
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
446-
447460
if len(response.Response.Data) < 1 {
448461
return
449462
}
@@ -465,16 +478,23 @@ func (me *CfwService) DeleteCfwNatPolicyById(ctx context.Context, uuid string) (
465478
}
466479
}()
467480

468-
ratelimit.Check(request.GetAction())
481+
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
482+
ratelimit.Check(request.GetAction())
483+
result, e := me.client.UseCfwClient().RemoveNatAcRule(request)
484+
if e != nil {
485+
return tccommon.RetryError(e)
486+
} else {
487+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
488+
}
489+
490+
return nil
491+
})
469492

470-
response, err := me.client.UseCfwClient().RemoveNatAcRule(request)
471493
if err != nil {
472494
errRet = err
473495
return
474496
}
475497

476-
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
477-
478498
return
479499
}
480500

0 commit comments

Comments
 (0)