]> gitweb.fluxo.info Git - puppet-stdlib.git/commitdiff
Catch :undefined_variable thrown when Future Parser is enabled with 3.7.x
authorTravis Fields <travis@puppetlabs.com>
Fri, 31 Oct 2014 06:37:00 +0000 (23:37 -0700)
committerHunter Haugen <hunter@puppetlabs.com>
Tue, 11 Nov 2014 00:33:18 +0000 (16:33 -0800)
lib/puppet/parser/functions/has_interface_with.rb

index 00e405d13c61b37b9bcdfc2c078c0947015734d7..1e91026ba97cd11150a8b1c41a73b09edc440f66 100644 (file)
@@ -16,11 +16,11 @@ etc.
 
 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')
 
@@ -35,7 +35,13 @@ has_interface_with("lo")                        => true
 
     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
 
@@ -44,15 +50,17 @@ has_interface_with("lo")                        => true
       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