Catch :undefined_variable thrown when Future Parser is enabled with 3.7.x

This commit is contained in:
Travis Fields 2014-10-30 23:37:00 -07:00 committed by Hunter Haugen
parent d8b86fdcc2
commit c52e262a17

View file

@ -16,11 +16,11 @@ etc.
If no "kind" is given, then the presence of the interface is checked: If no "kind" is given, then the presence of the interface is checked:
has_interface_with("lo") => true has_interface_with("lo") => true
EOS EOS
) do |args| ) do |args|
raise(Puppet::ParseError, "has_interface_with(): Wrong number of arguments " + 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') interfaces = lookupvar('interfaces')
@ -35,7 +35,13 @@ has_interface_with("lo") => true
kind, value = args 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 return true
end end
@ -44,15 +50,17 @@ has_interface_with("lo") => true
iface.downcase! iface.downcase!
factval = nil factval = nil
begin 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 rescue Puppet::ParseError # Eat the exception if strict_variables = true is set
end end
if value == factval
result = true
break
end
end end
result result
end end
end end