From dad7d9bdc1fc85d817bb3c2be7ab53a1cbe2a43e Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Fri, 3 Sep 2010 14:03:06 +0200 Subject: [PATCH] Try to make extractnodeinfo accept more than one level of hash keys --- .../puppet/parser/functions/extractnodeinfo.rb | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) 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 -- 2.20.1