Skip to content

Commit 4540c24

Browse files
Merge pull request #5730 from cloudflare/vaishak/fix-rulesets-grit
fix: rulesets grit (not all cases)
2 parents 4aff724 + 9a56669 commit 4540c24

File tree

2 files changed

+135
-4
lines changed

2 files changed

+135
-4
lines changed

.grit/patterns/cloudflare_terraform_v5_block_to_attribute_configuration.grit

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,12 @@ pattern cloudflare_terraform_v5_block_to_attribute_configuration() {
138138
inline_cloudflare_block_to_list(`status_code_ttl`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
139139
inline_cloudflare_block_to_list(`status_code_range`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
140140
inline_cloudflare_block_to_list(`from_list`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
141-
inline_cloudflare_block_to_list(`from_value`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
142-
inline_cloudflare_block_to_list(`target_url`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
141+
inline_cloudflare_block_to_map(`from_value`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
142+
inline_cloudflare_block_to_map(`target_url`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
143143
inline_cloudflare_block_to_list(`headers`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
144144
inline_cloudflare_block_to_list(`matched_data`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
145145
inline_cloudflare_block_to_list(`origin`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
146-
inline_cloudflare_block_to_list(`overrides`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
146+
inline_cloudflare_block_to_map(`overrides`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
147147
inline_cloudflare_block_to_list(`categories`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
148148
inline_cloudflare_block_to_map(`response`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
149149
inline_cloudflare_block_to_list(`serve_stale`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
@@ -153,7 +153,7 @@ pattern cloudflare_terraform_v5_block_to_attribute_configuration() {
153153
inline_cloudflare_block_to_list(`query`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
154154
inline_cloudflare_block_to_list(`exposed_credential_check`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
155155
inline_cloudflare_block_to_map(`logging`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
156-
inline_cloudflare_block_to_list(`ratelimit`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
156+
inline_cloudflare_block_to_map(`ratelimit`) as $block where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` },
157157
inline_cloudflare_block_to_map(`dns`) as $block where { $block <: within `resource "cloudflare_spectrum_application" $_ { $_ }` },
158158
inline_cloudflare_block_to_map(`edge_ips`) as $block where { $block <: within `resource "cloudflare_spectrum_application" $_ { $_ }` },
159159
inline_cloudflare_block_to_map(`origin_dns`) as $block where { $block <: within `resource "cloudflare_spectrum_application" $_ { $_ }` },

.grit/patterns/test_v5.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,137 @@ resource "cloudflare_access_policy" "test_policy" {
108108
}
109109
```
110110

111+
## test-rulesets: collapse list, nested blocks mapped
112+
```hcl
113+
resource "cloudflare_ruleset" "test_ruleset" {
114+
kind = "zone"
115+
name = "test"
116+
phase = "http_request_dynamic_redirect"
117+
zone_id = "f037e56e89293a057740de681ac9abbe"
118+
119+
rules {
120+
action = "redirect"
121+
action_parameters {
122+
from_value {
123+
preserve_query_string = true
124+
status_code = 301
125+
target_url {
126+
value = "https://example.com"
127+
}
128+
}
129+
}
130+
description = "foo"
131+
enabled = false
132+
expression = "(http.host in {\"www.foo.com\"} and (http.user_agent contains \"foo\" or http.user_agent contains \"foo\"))"
133+
ref = "f037e56e89293a057740de681ac9abbe"
134+
}
135+
rules {
136+
action = "redirect"
137+
action_parameters {
138+
from_value {
139+
preserve_query_string = false
140+
status_code = 301
141+
target_url {
142+
value = "https://example.com"
143+
}
144+
}
145+
}
146+
description = "foo"
147+
enabled = false
148+
expression = "(http.host in {\"www.foo.com\"} and (http.user_agent contains \"foo\" or http.user_agent contains \"foo\"))"
149+
ref = "f037e56e89293a057740de681ac9abbe"
150+
}
151+
rules {
152+
action = "execute"
153+
action_parameters {
154+
id = "f037e56e89293a057740de681ac9abbe"
155+
overrides {
156+
enabled = true
157+
categories {
158+
category = "drupal"
159+
action = "managed_challenge"
160+
}
161+
categories {
162+
category = "command-injection"
163+
action = "block"
164+
}
165+
categories {
166+
category = "apache-struts"
167+
action = "challenge"
168+
}
169+
}
170+
}
171+
enabled = true
172+
expression = "true"
173+
}
174+
}
175+
```
176+
```hcl
177+
resource "cloudflare_ruleset" "test_ruleset" {
178+
kind = "zone"
179+
name = "test"
180+
phase = "http_request_dynamic_redirect"
181+
zone_id = "f037e56e89293a057740de681ac9abbe"
182+
183+
rules = [{
184+
action = "redirect"
185+
action_parameters = {
186+
from_value = {
187+
preserve_query_string = true
188+
status_code = 301
189+
target_url = {
190+
value = "https://example.com"
191+
}
192+
}
193+
}
194+
description = "foo"
195+
enabled = false
196+
expression = "(http.host in {\"www.foo.com\"} and (http.user_agent contains \"foo\" or http.user_agent contains \"foo\"))"
197+
ref = "f037e56e89293a057740de681ac9abbe"
198+
},
199+
{
200+
action = "redirect"
201+
action_parameters = {
202+
from_value = {
203+
preserve_query_string = false
204+
status_code = 301
205+
target_url = {
206+
value = "https://example.com"
207+
}
208+
}
209+
}
210+
description = "foo"
211+
enabled = false
212+
expression = "(http.host in {\"www.foo.com\"} and (http.user_agent contains \"foo\" or http.user_agent contains \"foo\"))"
213+
ref = "f037e56e89293a057740de681ac9abbe"
214+
},
215+
{
216+
action = "execute"
217+
action_parameters = {
218+
id = "f037e56e89293a057740de681ac9abbe"
219+
overrides = {
220+
enabled = true
221+
categories = [{
222+
category = "drupal"
223+
action = "managed_challenge"
224+
},
225+
{
226+
category = "command-injection"
227+
action = "block"
228+
},
229+
{
230+
category = "apache-struts"
231+
action = "challenge"
232+
}]
233+
234+
235+
}
236+
}
237+
enabled = true
238+
expression = "true"
239+
}]
240+
}
241+
```
111242
## test: single blocks
112243

113244
Blocks which are not lists should become attribute objects. This is based on the schema, not the number of blocks.

0 commit comments

Comments
 (0)