fuel-library/deployment/puppet/osnailyfacter/lib/puppet/parser/functions/get_cred_files_hash.rb

24 lines
940 B
Ruby

module Puppet::Parser::Functions
newfunction(:get_cred_files_hash, :type => :rvalue, :arity => 3,
:doc => <<-EOS
Build hash for credentials files creation
EOS
) do |args|
raise(Puppet::ParseError, 'Wrong cred_users. Should be a Hash.') unless args[0].is_a?(Hash)
raise(Puppet::ParseError, 'Wrong common_cred_params. Should be a Hash.') unless args[1].is_a?(Hash)
raise(Puppet::ParseError, 'Wrong users. Should be a Hash.') unless args[2].is_a?(Hash)
cred_users, common_cred_params, users = args
cred_users.inject({}) do |result, el|
home_dir, owner = el.first, el.last
if users.has_key?(owner)
result[home_dir] = common_cred_params.dup.update({'owner' => owner, 'group' => owner, 'require' => "User[#{users[owner]}]"})
else
result[home_dir] = common_cred_params.dup.update({'owner' => owner, 'group' => owner})
end
result
end
end
end