Skip to content

Commit 91e4d08

Browse files
committed
add
1 parent 8244dd3 commit 91e4d08

17 files changed

+467
-10
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ require (
4646
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1107
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.1148
49-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1161
49+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1162
5050
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.1153
5151
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
5252
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.1161
@@ -97,7 +97,7 @@ require (
9797
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tsf v1.0.674
9898
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.860
9999
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1154
100-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1149
100+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1162
101101
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792
102102
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199
103103
github.com/tencentyun/cos-go-sdk-v5 v0.7.64

go.sum

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -971,6 +971,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1159 h1:Jl1
971971
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1159/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
972972
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1161 h1:S4dJSWhOtaPjp0/GO/yhzUC6DfZvpWhrnsEKaLxr73c=
973973
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1161/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
974+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1162 h1:bscCBygP9JRl6iNabF+vmBOhY+xayFFGYV5Wa0NzH0A=
975+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1162/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
974976
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ=
975977
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY=
976978
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU=
@@ -1119,6 +1121,10 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1148 h1:ILcBbO
11191121
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1148/go.mod h1:1n+Jj71KPI+7oeySg5l9+JopaMgsIqA0y9ATSi4nx0k=
11201122
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1149 h1:SOrBtPoCjS8Jsq1dHa2Ul+ZUPP/vT6j/dJN/08ZEMHM=
11211123
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1149/go.mod h1:6e3sb0k9K8kWQdB/WVXVrZxyYxrSC8hN4MWpzYRR80s=
1124+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1161 h1:7eXR3p6ZmggYE7GIvN/FbIg1ESh+LxJWbb0LV4oapnQ=
1125+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1161/go.mod h1:v3l7e0+48bKOFo8V/KLLDtegi0H7zLDqGKLMdqNPblI=
1126+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1162 h1:gnmuUaoFAShc9FKj3Omswu3n08bHM/sGsl8xjFAkFNs=
1127+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1162/go.mod h1:bu3KAFeoJ1xDGQp72h9Le3FqbOcCcdomOUig3OqgcE4=
11221128
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792 h1:NLgKNOIHWa38AmW7dyfI9Jlcp2Kr9VRD94f48pPNmxM=
11231129
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792/go.mod h1:Xz6vPV3gHlzPwtEcmWdWO1EUXJDgn2p7UMCXbJiVioQ=
11241130
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199 h1:hMBLtiJPnZ9GvA677cTB6ELBR6B68wCR2QY1sNoGQc4=

tencentcloud/provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2239,6 +2239,7 @@ func Provider() *schema.Provider {
22392239
"tencentcloud_waf_log_post_cls_flow": waf.ResourceTencentCloudWafLogPostClsFlow(),
22402240
"tencentcloud_waf_log_post_ckafka_flow": waf.ResourceTencentCloudWafLogPostCkafkaFlow(),
22412241
"tencentcloud_waf_domain_post_action": waf.ResourceTencentCloudWafDomainPostAction(),
2242+
"tencentcloud_waf_instance_attack_log_post": waf.ResourceTencentCloudWafInstanceAttackLogPost(),
22422243
"tencentcloud_wedata_rule_template": wedata.ResourceTencentCloudWedataRuleTemplate(),
22432244
"tencentcloud_wedata_datasource": wedata.ResourceTencentCloudWedataDatasource(),
22442245
"tencentcloud_wedata_function": wedata.ResourceTencentCloudWedataFunction(),

tencentcloud/provider.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2184,6 +2184,7 @@ tencentcloud_waf_ip_access_control_v2
21842184
tencentcloud_waf_log_post_cls_flow
21852185
tencentcloud_waf_log_post_ckafka_flow
21862186
tencentcloud_waf_domain_post_action
2187+
tencentcloud_waf_instance_attack_log_post
21872188

21882189
Wedata
21892190
Data Source

tencentcloud/services/waf/resource_tc_waf_clb_instance.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,10 @@ func resourceTencentCloudWafClbInstanceCreate(d *schema.ResourceData, meta inter
313313
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
314314
}
315315

316+
if result == nil || result.Response == nil {
317+
return resource.NonRetryableError(fmt.Errorf("Create waf clb instance failed, Response is nil."))
318+
}
319+
316320
if *result.Response.Status == 0 || *result.Response.InstanceId == "" {
317321
return resource.NonRetryableError(fmt.Errorf("create waf clb instance status error: %s", *result.Response.ReturnMessage))
318322
}

tencentcloud/services/waf/resource_tc_waf_domain_post_action.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func resourceTencentCloudWafDomainPostActionRead(d *schema.ResourceData, meta in
7676
return err
7777
}
7878

79-
if respData == nil {
79+
if respData == nil || len(respData) < 1 {
8080
d.SetId("")
8181
log.Printf("[WARN]%s resource `waf_domain_post_action` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
8282
return nil
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
package waf
2+
3+
import (
4+
"context"
5+
"log"
6+
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9+
wafv20180125 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125"
10+
11+
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
12+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
13+
)
14+
15+
func ResourceTencentCloudWafInstanceAttackLogPost() *schema.Resource {
16+
return &schema.Resource{
17+
Create: resourceTencentCloudWafInstanceAttackLogPostCreate,
18+
Read: resourceTencentCloudWafInstanceAttackLogPostRead,
19+
Update: resourceTencentCloudWafInstanceAttackLogPostUpdate,
20+
Delete: resourceTencentCloudWafInstanceAttackLogPostDelete,
21+
Importer: &schema.ResourceImporter{
22+
State: schema.ImportStatePassthrough,
23+
},
24+
Schema: map[string]*schema.Schema{
25+
"instance_id": {
26+
Type: schema.TypeString,
27+
Required: true,
28+
ForceNew: true,
29+
Description: "Waf instance ID.",
30+
},
31+
32+
"attack_log_post": {
33+
Type: schema.TypeInt,
34+
Required: true,
35+
ValidateFunc: tccommon.ValidateAllowedIntValue([]int{0, 1}),
36+
Description: "Attack log delivery switch. 0- Disable, 1- Enable.",
37+
},
38+
},
39+
}
40+
}
41+
42+
func resourceTencentCloudWafInstanceAttackLogPostCreate(d *schema.ResourceData, meta interface{}) error {
43+
defer tccommon.LogElapsed("resource.tencentcloud_waf_instance_attack_log_post.create")()
44+
defer tccommon.InconsistentCheck(d, meta)()
45+
46+
var instanceId string
47+
if v, ok := d.GetOk("instance_id"); ok {
48+
instanceId = v.(string)
49+
}
50+
51+
d.SetId(instanceId)
52+
53+
return resourceTencentCloudWafInstanceAttackLogPostUpdate(d, meta)
54+
}
55+
56+
func resourceTencentCloudWafInstanceAttackLogPostRead(d *schema.ResourceData, meta interface{}) error {
57+
defer tccommon.LogElapsed("resource.tencentcloud_waf_instance_attack_log_post.read")()
58+
defer tccommon.InconsistentCheck(d, meta)()
59+
60+
var (
61+
logId = tccommon.GetLogId(tccommon.ContextNil)
62+
ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
63+
service = WafService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
64+
instanceId = d.Id()
65+
)
66+
67+
respData, err := service.DescribeWafInstanceById(ctx, instanceId)
68+
if err != nil {
69+
return err
70+
}
71+
72+
if respData == nil {
73+
d.SetId("")
74+
log.Printf("[WARN]%s resource `waf_instance_attack_log_post` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
75+
return nil
76+
}
77+
78+
_ = d.Set("instance_id", instanceId)
79+
80+
if respData.AttackLogPost != nil {
81+
_ = d.Set("attack_log_post", respData.AttackLogPost)
82+
}
83+
84+
return nil
85+
}
86+
87+
func resourceTencentCloudWafInstanceAttackLogPostUpdate(d *schema.ResourceData, meta interface{}) error {
88+
defer tccommon.LogElapsed("resource.tencentcloud_waf_instance_attack_log_post.update")()
89+
defer tccommon.InconsistentCheck(d, meta)()
90+
91+
var (
92+
logId = tccommon.GetLogId(tccommon.ContextNil)
93+
ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
94+
request = wafv20180125.NewModifyInstanceAttackLogPostRequest()
95+
instanceId = d.Id()
96+
)
97+
98+
if v, ok := d.GetOkExists("attack_log_post"); ok {
99+
request.AttackLogPost = helper.IntInt64(v.(int))
100+
}
101+
102+
request.InstanceId = &instanceId
103+
reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
104+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseWafV20180125Client().ModifyInstanceAttackLogPostWithContext(ctx, request)
105+
if e != nil {
106+
return tccommon.RetryError(e)
107+
} else {
108+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
109+
}
110+
111+
return nil
112+
})
113+
114+
if reqErr != nil {
115+
log.Printf("[CRITAL]%s update waf instance attack log_post failed, reason:%+v", logId, reqErr)
116+
return reqErr
117+
}
118+
119+
return resourceTencentCloudWafInstanceAttackLogPostRead(d, meta)
120+
}
121+
122+
func resourceTencentCloudWafInstanceAttackLogPostDelete(d *schema.ResourceData, meta interface{}) error {
123+
defer tccommon.LogElapsed("resource.tencentcloud_waf_instance_attack_log_post.delete")()
124+
defer tccommon.InconsistentCheck(d, meta)()
125+
126+
return nil
127+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
Provides a resource to create a WAF instance attack log post
2+
3+
~> **NOTE:** Only enterprise version and above are supported for activation
4+
5+
Example Usage
6+
7+
```hcl
8+
resource "tencentcloud_waf_instance_attack_log_post" "example" {
9+
instance_id = "waf_2kxtlbky11b4wcrb"
10+
attack_log_post = 1
11+
}
12+
```
13+
14+
Import
15+
16+
WAF instance attack log post can be imported using the id, e.g.
17+
18+
```
19+
terraform import tencentcloud_waf_instance_attack_log_post.example waf_2kxtlbky11b4wcrb
20+
```
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package waf_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
8+
tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest"
9+
)
10+
11+
func TestAccTencentCloudWafInstanceAttackLogPostResource_basic(t *testing.T) {
12+
t.Parallel()
13+
resource.Test(t, resource.TestCase{
14+
PreCheck: func() {
15+
tcacctest.AccPreCheck(t)
16+
},
17+
Providers: tcacctest.AccProviders,
18+
Steps: []resource.TestStep{
19+
{
20+
Config: testAccWafInstanceAttackLogPost,
21+
Check: resource.ComposeTestCheckFunc(
22+
resource.TestCheckResourceAttrSet("tencentcloud_waf_instance_attack_log_post.example", "id"),
23+
resource.TestCheckResourceAttrSet("tencentcloud_waf_instance_attack_log_post.example", "instance_id"),
24+
resource.TestCheckResourceAttrSet("tencentcloud_waf_instance_attack_log_post.example", "attack_log_post"),
25+
),
26+
},
27+
{
28+
Config: testAccWafInstanceAttackLogPostUpdate,
29+
Check: resource.ComposeTestCheckFunc(
30+
resource.TestCheckResourceAttrSet("tencentcloud_waf_instance_attack_log_post.example", "id"),
31+
resource.TestCheckResourceAttrSet("tencentcloud_waf_instance_attack_log_post.example", "instance_id"),
32+
resource.TestCheckResourceAttrSet("tencentcloud_waf_instance_attack_log_post.example", "attack_log_post"),
33+
),
34+
},
35+
{
36+
ResourceName: "tencentcloud_waf_instance_attack_log_post.example",
37+
ImportState: true,
38+
ImportStateVerify: true,
39+
},
40+
},
41+
})
42+
}
43+
44+
const testAccWafInstanceAttackLogPost = `
45+
resource "tencentcloud_waf_instance_attack_log_post" "example" {
46+
instance_id = "waf_2kxtlbky11b4wcrb"
47+
attack_log_post = 1
48+
}
49+
`
50+
51+
const testAccWafInstanceAttackLogPostUpdate = `
52+
resource "tencentcloud_waf_instance_attack_log_post" "example" {
53+
instance_id = "waf_2kxtlbky11b4wcrb"
54+
attack_log_post = 0
55+
}
56+
`

tencentcloud/services/waf/resource_tc_waf_saas_instance.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,10 @@ func resourceTencentCloudWafSaasInstanceCreate(d *schema.ResourceData, meta inte
346346
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
347347
}
348348

349+
if result == nil || result.Response == nil {
350+
return resource.NonRetryableError(fmt.Errorf("Create waf saas instance failed, Response is nil."))
351+
}
352+
349353
if *result.Response.Status == 0 || *result.Response.InstanceId == "" {
350354
return resource.NonRetryableError(fmt.Errorf("create waf saas instance status error: %s", *result.Response.ReturnMessage))
351355
}

0 commit comments

Comments
 (0)