Skip to content

Commit 81dd201

Browse files
author
Julien Vehent
committed
Skip rules that fail validation
1 parent 484f07e commit 81dd201

2 files changed

Lines changed: 18 additions & 6 deletions

File tree

libraries/core.rb

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,10 @@ def process_rule(node, name, params)
4141
if options.include?('disable_syntax_check')
4242
Chef::Log.info("AFW: disabling syntax checking for rule '#{name}'")
4343
else
44-
# grammar check
45-
rule_validation(node, name,params)
44+
# grammar check, skip rule if doesn't pass
45+
if not rule_validation(node, name,params)
46+
return false
47+
end
4648
end
4749

4850
# Parse the parameters of the rules into separate variable
@@ -132,10 +134,13 @@ def rule_validation(node, name, rule_params)
132134
when 'default' then true
133135
when 'all' then true
134136
else
135-
unless node['network']['interfaces'].has_key?(rule_params['interface'])
136-
raise ArgumentError,
137-
"Invalid Interface '#{rule_params['interface']}' in rule '#{name}'",
138-
caller
137+
if node['network']['interfaces'].has_key?(rule_params['interface'])
138+
then true
139+
else
140+
# If the interface doesn't exist, log and skip the current rule
141+
Chef::Log.info("AFW: Unknown interface '#{rule_params['interface']}'" +
142+
" in rule '#{name}'.")
143+
return false
139144
end
140145
end
141146
end
@@ -181,6 +186,9 @@ def rule_validation(node, name, rule_params)
181186
end
182187
end
183188
end
189+
190+
# validation succeeded
191+
return true
184192
end
185193

186194

@@ -409,6 +417,8 @@ def create_rule(node, name, params)
409417
Chef::Log.info("AFW.create_rule(): processing '#{name}'")
410418
if AFW.process_rule(node, name, params)
411419
Chef::Log.info("AFW.create_rule(): finished processing '#{name}'")
420+
else
421+
Chef::Log.info("AFW.create_rule(): rule '#{name}' failed. Skipping it.")
412422
end
413423
return true
414424
end

recipes/default.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ class Chef::Recipe
2727
Chef::Log.info("AFW: processing rule '#{name}'")
2828
if process_rule(node, name, params)
2929
Chef::Log.info("AFW: finished processing of rule '#{name}'")
30+
else
31+
Chef::Log.info("AFW: rule '#{name}' failed. Skipping it.")
3032
end
3133
end
3234

0 commit comments

Comments
 (0)