@@ -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
0 commit comments