X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;ds=sidebyside;f=modules%2Fpuppetmaster%2Flib%2Fpuppet%2Fparser%2Ffunctions%2Fhas_role.rb;h=eef31b984523ad2c6f969c5598444bebb8b8e281;hb=acc06f8a3b65391b44bbb3b56b17a18bab966c22;hp=758f500022f0b2e57ffaea58db85dbf369123f71;hpb=23f9450261ac9199f17f6af9089cf4f63f0c0668;p=mirror%2Fdsa-puppet.git diff --git a/modules/puppetmaster/lib/puppet/parser/functions/has_role.rb b/modules/puppetmaster/lib/puppet/parser/functions/has_role.rb index 758f50002..eef31b984 100644 --- a/modules/puppetmaster/lib/puppet/parser/functions/has_role.rb +++ b/modules/puppetmaster/lib/puppet/parser/functions/has_role.rb @@ -1,11 +1,20 @@ module Puppet::Parser::Functions - newfunction(:has_role, :type => :rvalue) do |role| - roles = lookupvar('site::roles') + newfunction(:has_role, :type => :rvalue) do |args| + role = args[0] + roles = lookupvar('deprecated::roles') fqdn = lookupvar('fqdn') if not roles.include?(role) err "Failed to look up missing role #{role}" return false end - return roles[role].include?(fqdn) - end + case roles[role] + when Hash then roles[role].include?(fqdn) + else roles[role].map{ |k| + case k + when Hash then k.keys.first + else k + end + }.include?(fqdn) + end + end end