Skip to content

Commit 3199cf0

Browse files
committed
feat: support teo function rule
1 parent cdc4d48 commit 3199cf0

7 files changed

+232
-33
lines changed

tencentcloud/provider.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"strings"
1313

1414
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
15+
"github.com/mitchellh/go-homedir"
1516
sdkcommon "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
1617
commonJson "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/json"
1718
sdksts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sts/v20180813"
@@ -1702,7 +1703,7 @@ func Provider() *schema.Provider {
17021703
"tencentcloud_teo_application_proxy_rule": teo.ResourceTencentCloudTeoApplicationProxyRule(),
17031704
"tencentcloud_teo_realtime_log_delivery": teo.ResourceTencentCloudTeoRealtimeLogDelivery(),
17041705
"tencentcloud_teo_function": teo.ResourceTencentCloudTeoFunction(),
1705-
"tencentcloud_teo_function_rule": git tateo.ResourceTencentCloudTeoFunctionRule(),
1706+
"tencentcloud_teo_function_rule": teo.ResourceTencentCloudTeoFunctionRule(),
17061707
"tencentcloud_tcm_mesh": tcm.ResourceTencentCloudTcmMesh(),
17071708
"tencentcloud_tcm_cluster_attachment": tcm.ResourceTencentCloudTcmClusterAttachment(),
17081709
"tencentcloud_tcm_prometheus_attachment": tcm.ResourceTencentCloudTcmPrometheusAttachment(),

tencentcloud/services/teo/resource_tc_teo_function.go

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tencentcloud/services/teo/resource_tc_teo_function_rule.go

Lines changed: 7 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tencentcloud/services/teo/resource_tc_teo_function_rule.md

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,50 @@ Example Usage
44

55
```hcl
66
resource "tencentcloud_teo_function_rule" "teo_function_rule" {
7-
function_rule_conditions = ""
7+
function_id = "ef-txx7fnua"
8+
remark = "aaa"
9+
zone_id = "zone-2qtuhspy7cr6"
10+
11+
function_rule_conditions {
12+
rule_conditions {
13+
ignore_case = false
14+
name = null
15+
operator = "equal"
16+
target = "host"
17+
values = [
18+
"aaa.makn.cn",
19+
]
20+
}
21+
rule_conditions {
22+
ignore_case = false
23+
name = null
24+
operator = "equal"
25+
target = "extension"
26+
values = [
27+
".txt",
28+
]
29+
}
30+
}
31+
function_rule_conditions {
32+
rule_conditions {
33+
ignore_case = false
34+
name = null
35+
operator = "notequal"
36+
target = "host"
37+
values = [
38+
"aaa.makn.cn",
39+
]
40+
}
41+
rule_conditions {
42+
ignore_case = false
43+
name = null
44+
operator = "equal"
45+
target = "extension"
46+
values = [
47+
".png",
48+
]
49+
}
50+
}
851
}
952
```
1053

@@ -13,5 +56,5 @@ Import
1356
teo teo_function_rule can be imported using the id, e.g.
1457

1558
```
16-
terraform import tencentcloud_teo_function_rule.teo_function_rule teo_function_rule_id
59+
terraform import tencentcloud_teo_function_rule.teo_function_rule zone_id#function_id#rule_id
1760
```
Lines changed: 166 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package teo
1+
package teo_test
22

33
import (
44
"testing"
@@ -15,20 +15,176 @@ func TestAccTencentCloudTeoFunctionRuleResource_basic(t *testing.T) {
1515
tcacctest.AccPreCheck(t)
1616
},
1717
Providers: tcacctest.AccProviders,
18-
Steps: []resource.TestStep{{
19-
Config: testAccTeoFunctionRule,
20-
Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_teo_function_rule.teo_function_rule", "id")),
21-
}, {
22-
ResourceName: "tencentcloud_teo_function_rule.teo_function_rule",
23-
ImportState: true,
24-
ImportStateVerify: true,
25-
}},
18+
Steps: []resource.TestStep{
19+
{
20+
Config: testAccTeoFunctionRule,
21+
Check: resource.ComposeTestCheckFunc(
22+
resource.TestCheckResourceAttrSet("tencentcloud_teo_function_rule.teo_function_rule", "id"),
23+
resource.TestCheckResourceAttrSet("tencentcloud_teo_function_rule.teo_function_rule", "function_id"),
24+
resource.TestCheckResourceAttrSet("tencentcloud_teo_function_rule.teo_function_rule", "zone_id"),
25+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "remark", "aaa"),
26+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.#", "2"),
27+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.#", "2"),
28+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.0.ignore_case", "false"),
29+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.0.operator", "equal"),
30+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.0.target", "host"),
31+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.0.values.#", "1"),
32+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.0.values.0", "aaa.makn.cn"),
33+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.1.ignore_case", "false"),
34+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.1.operator", "equal"),
35+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.1.target", "extension"),
36+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.1.values.#", "1"),
37+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.1.values.0", ".txt"),
38+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.#", "2"),
39+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.0.ignore_case", "false"),
40+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.0.operator", "notequal"),
41+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.0.target", "host"),
42+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.0.values.#", "1"),
43+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.0.values.0", "aaa.makn.cn"),
44+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.1.ignore_case", "false"),
45+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.1.operator", "equal"),
46+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.1.target", "extension"),
47+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.1.values.#", "1"),
48+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.1.values.0", ".png"),
49+
),
50+
},
51+
{
52+
ResourceName: "tencentcloud_teo_function_rule.teo_function_rule",
53+
ImportState: true,
54+
ImportStateVerify: true,
55+
},
56+
{
57+
Config: testAccTeoFunctionRuleUp,
58+
Check: resource.ComposeTestCheckFunc(
59+
resource.TestCheckResourceAttrSet("tencentcloud_teo_function_rule.teo_function_rule", "id"),
60+
resource.TestCheckResourceAttrSet("tencentcloud_teo_function_rule.teo_function_rule", "function_id"),
61+
resource.TestCheckResourceAttrSet("tencentcloud_teo_function_rule.teo_function_rule", "zone_id"),
62+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "remark", "bbb"),
63+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.#", "2"),
64+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.#", "2"),
65+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.0.ignore_case", "false"),
66+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.0.operator", "notequal"),
67+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.0.target", "host"),
68+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.0.values.#", "1"),
69+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.0.values.0", "aaa.makn.cn"),
70+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.1.ignore_case", "false"),
71+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.1.operator", "equal"),
72+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.1.target", "extension"),
73+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.1.values.#", "1"),
74+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.0.rule_conditions.1.values.0", ".txt"),
75+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.#", "2"),
76+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.0.ignore_case", "false"),
77+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.0.operator", "notequal"),
78+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.0.target", "host"),
79+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.0.values.#", "1"),
80+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.0.values.0", "aaa.makn.cn"),
81+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.1.ignore_case", "false"),
82+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.1.operator", "equal"),
83+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.1.target", "extension"),
84+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.1.values.#", "1"),
85+
resource.TestCheckResourceAttr("tencentcloud_teo_function_rule.teo_function_rule", "function_rule_conditions.1.rule_conditions.1.values.0", ".png"),
86+
),
87+
},
88+
},
2689
})
2790
}
2891

2992
const testAccTeoFunctionRule = `
3093
3194
resource "tencentcloud_teo_function_rule" "teo_function_rule" {
32-
function_rule_conditions = ""
95+
function_id = "ef-txx7fnua"
96+
remark = "aaa"
97+
zone_id = "zone-2qtuhspy7cr6"
98+
99+
function_rule_conditions {
100+
rule_conditions {
101+
ignore_case = false
102+
name = null
103+
operator = "equal"
104+
target = "host"
105+
values = [
106+
"aaa.makn.cn",
107+
]
108+
}
109+
rule_conditions {
110+
ignore_case = false
111+
name = null
112+
operator = "equal"
113+
target = "extension"
114+
values = [
115+
".txt",
116+
]
117+
}
118+
}
119+
function_rule_conditions {
120+
rule_conditions {
121+
ignore_case = false
122+
name = null
123+
operator = "notequal"
124+
target = "host"
125+
values = [
126+
"aaa.makn.cn",
127+
]
128+
}
129+
rule_conditions {
130+
ignore_case = false
131+
name = null
132+
operator = "equal"
133+
target = "extension"
134+
values = [
135+
".png",
136+
]
137+
}
138+
}
139+
}
140+
`
141+
142+
const testAccTeoFunctionRuleUp = `
143+
144+
resource "tencentcloud_teo_function_rule" "teo_function_rule" {
145+
function_id = "ef-txx7fnua"
146+
remark = "bbb"
147+
zone_id = "zone-2qtuhspy7cr6"
148+
149+
function_rule_conditions {
150+
rule_conditions {
151+
ignore_case = false
152+
name = null
153+
operator = "notequal"
154+
target = "host"
155+
values = [
156+
"aaa.makn.cn",
157+
]
158+
}
159+
rule_conditions {
160+
ignore_case = false
161+
name = null
162+
operator = "equal"
163+
target = "extension"
164+
values = [
165+
".txt",
166+
]
167+
}
168+
}
169+
function_rule_conditions {
170+
rule_conditions {
171+
ignore_case = false
172+
name = null
173+
operator = "notequal"
174+
target = "host"
175+
values = [
176+
"aaa.makn.cn",
177+
]
178+
}
179+
rule_conditions {
180+
ignore_case = false
181+
name = null
182+
operator = "equal"
183+
target = "extension"
184+
values = [
185+
".png",
186+
]
187+
}
188+
}
33189
}
34190
`

tencentcloud/services/teo/resource_tc_teo_function_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ func TestAccTencentCloudTeoFunctionResource_basic(t *testing.T) {
2525
resource.TestCheckResourceAttr("tencentcloud_teo_function.teo_function", "content", `addEventListener('fetch', e => {
2626
const response = new Response('Hello World!!');
2727
e.respondWith(response);
28-
});`),
28+
});
29+
`),
2930
),
3031
},
3132
{
@@ -42,7 +43,8 @@ func TestAccTencentCloudTeoFunctionResource_basic(t *testing.T) {
4243
resource.TestCheckResourceAttr("tencentcloud_teo_function.teo_function", "content", `addEventListener('fetch', e => {
4344
const response = new Response('Hello World');
4445
e.respondWith(response);
45-
});`),
46+
});
47+
`),
4648
),
4749
},
4850
},

tencentcloud/services/teo/service_tencentcloud_teo.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1169,16 +1169,23 @@ func (me *TeoService) DescribeTeoFunctionById(ctx context.Context, zoneId string
11691169
return
11701170
}
11711171

1172-
func (me *TeoService) DescribeTeoFunctionRuleById(ctx context.Context, functionId string, ruleId string) (ret *teo.FunctionRule, errRet error) {
1172+
func (me *TeoService) DescribeTeoFunctionRuleById(ctx context.Context, zoneId string, functionId string, ruleId string) (ret *teo.FunctionRule, errRet error) {
11731173
logId := tccommon.GetLogId(ctx)
11741174

11751175
request := teo.NewDescribeFunctionRulesRequest()
1176+
request.ZoneId = helper.String(zoneId)
11761177
filter := &teo.Filter{
11771178
Name: helper.String("function-id"),
11781179
Values: []*string{helper.String(functionId)},
11791180
}
11801181
request.Filters = append(request.Filters, filter)
11811182

1183+
filterRule := &teo.Filter{
1184+
Name: helper.String("rule-id"),
1185+
Values: []*string{helper.String(ruleId)},
1186+
}
1187+
request.Filters = append(request.Filters, filterRule)
1188+
11821189
defer func() {
11831190
if errRet != nil {
11841191
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error())

0 commit comments

Comments
 (0)