X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=files%2Fetc%2Fpuppet%2Flib%2Fpuppet%2Fparser%2Ffunctions%2Fextractnodeinfo.rb;h=19f0ca827756a0f2c337a526bae66454c2be005b;hb=2bbf27af83a6bd01536e611eee09d7e5023b2305;hp=d12386fc65e4281d2297e4faa643cd8d6c31a316;hpb=6223d29ea525ff1ef4626af124280d5f10fea746;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..19f0ca827 100644 --- a/files/etc/puppet/lib/puppet/parser/functions/extractnodeinfo.rb +++ b/files/etc/puppet/lib/puppet/parser/functions/extractnodeinfo.rb @@ -1,13 +1,23 @@ 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) + unless ni.has_key?(key) + ni = false + break + end + ni = ni[key] + keys_done << key end + return ni end end +# vim:set et: +# vim:set sts=2 ts=2: +# vim:set shiftwidth=2: