Skip to content

Commit

Permalink
Catch :undefined_variable thrown when Future Parser is enabled with 3…
Browse files Browse the repository at this point in the history
….7.x
  • Loading branch information
Travis Fields authored and hunner committed Nov 11, 2014
1 parent d8b86fd commit c52e262
Showing 1 changed file with 17 additions and 9 deletions.
26 changes: 17 additions & 9 deletions lib/puppet/parser/functions/has_interface_with.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ module Puppet::Parser::Functions
If no "kind" is given, then the presence of the interface is checked:
has_interface_with("lo") => true
EOS
EOS
) do |args|

raise(Puppet::ParseError, "has_interface_with(): Wrong number of arguments " +
"given (#{args.size} for 1 or 2)") if args.size < 1 or args.size > 2
"given (#{args.size} for 1 or 2)") if args.size < 1 or args.size > 2

interfaces = lookupvar('interfaces')

Expand All @@ -35,7 +35,13 @@ module Puppet::Parser::Functions

kind, value = args

if lookupvar(kind) == value
# Bug with 3.7.1 - 3.7.3 when using future parser throws :undefined_variable
# https://tickets.puppetlabs.com/browse/PUP-3597
factval = nil
catch :undefined_variable do
factval = lookupvar(kind)
end
if factval == value
return true
end

Expand All @@ -44,15 +50,17 @@ module Puppet::Parser::Functions
iface.downcase!
factval = nil
begin
factval = lookupvar("#{kind}_#{iface}")
# Bug with 3.7.1 - 3.7.3 when using future parser throws :undefined_variable
# https://tickets.puppetlabs.com/browse/PUP-3597
catch :undefined_variable do
factval = lookupvar("#{kind}_#{iface}")
end
if value == factval
result = true
end
rescue Puppet::ParseError # Eat the exception if strict_variables = true is set
end
if value == factval
result = true
break
end
end

result
end
end

0 comments on commit c52e262

Please sign in to comment.