X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=files%2Fetc%2Fpuppet%2Flib%2Fpuppet%2Fparser%2Ffunctions%2Fextractnodeinfo.rb;fp=files%2Fetc%2Fpuppet%2Flib%2Fpuppet%2Fparser%2Ffunctions%2Fextractnodeinfo.rb;h=74999dc08bd43b3e85f2d2d6d26449124ff99a77;hb=dad7d9bdc1fc85d817bb3c2be7ab53a1cbe2a43e;hp=d12386fc65e4281d2297e4faa643cd8d6c31a316;hpb=02c7f4f4890f18696ce9e8094da69e8802282995;p=mirror%2Fdsa-puppet.git diff --git a/files/etc/puppet/lib/puppet/parser/functions/extractnodeinfo.rb b/files/etc/puppet/lib/puppet/parser/functions/extractnodeinfo.rb index d12386fc6..74999dc08 100644 --- a/files/etc/puppet/lib/puppet/parser/functions/extractnodeinfo.rb +++ b/files/etc/puppet/lib/puppet/parser/functions/extractnodeinfo.rb @@ -1,13 +1,17 @@ module Puppet::Parser::Functions newfunction(:extractnodeinfo, :type => :rvalue) do |args| - nodeinfo = args[0] - key = args[1] + nodeinfo = args.shift - if nodeinfo.has_key?(key) - return nodeinfo[key] - else - return "false" + ni = nodeinfo + keys_done = [] + + args.each do |key| + raise Puppet::ParseError, "nodeinfo is not a hash at #{keys_done.join('->')}" unless ni.kind_of?(Hash) + return false unless ni.has_key?(key) + ni = ni[key] + keys_done << key end + return ni end end