From: Peter Palfrader Date: Fri, 3 Sep 2010 12:03:06 +0000 (+0200) Subject: Try to make extractnodeinfo accept more than one level of hash keys X-Git-Url: https://git.adam-barratt.org.uk/?a=commitdiff_plain;h=dad7d9bdc1fc85d817bb3c2be7ab53a1cbe2a43e;p=mirror%2Fdsa-puppet.git Try to make extractnodeinfo accept more than one level of hash keys --- 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