Catch :undefined_variable thrown when Future Parser is enabled with 3.7.x
This commit is contained in:
parent
d8b86fdcc2
commit
c52e262a17
1 changed files with 17 additions and 9 deletions
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue