source: other-projects/hathitrust/vagrant-hadoop-cluster/trunk/modules/stdlib/lib/puppet/parser/functions/ensure_packages.rb@ 30903

Last change on this file since 30903 was 30903, checked in by davidb, 8 years ago

Vagrant provisioning files for a 4-node Hadoop cluster. See README.txt for more details

File size: 1.4 KB
Line 
1#
2# ensure_packages.rb
3#
4
5module Puppet::Parser::Functions
6 newfunction(:ensure_packages, :type => :statement, :doc => <<-EOS
7Takes a list of packages and only installs them if they don't already exist.
8It optionally takes a hash as a second parameter that will be passed as the
9third argument to the ensure_resource() function.
10 EOS
11 ) do |arguments|
12
13 if arguments.size > 2 or arguments.size == 0
14 raise(Puppet::ParseError, "ensure_packages(): Wrong number of arguments " +
15 "given (#{arguments.size} for 1 or 2)")
16 elsif arguments.size == 2 and !arguments[1].is_a?(Hash)
17 raise(Puppet::ParseError, 'ensure_packages(): Requires second argument to be a Hash')
18 end
19
20 if arguments[0].is_a?(Hash)
21 if arguments[1]
22 defaults = { 'ensure' => 'present' }.merge(arguments[1])
23 else
24 defaults = { 'ensure' => 'present' }
25 end
26
27 Puppet::Parser::Functions.function(:ensure_resources)
28 function_ensure_resources(['package', Hash(arguments[0]), defaults ])
29 else
30 packages = Array(arguments[0])
31
32 if arguments[1]
33 defaults = { 'ensure' => 'present' }.merge(arguments[1])
34 else
35 defaults = { 'ensure' => 'present' }
36 end
37
38 Puppet::Parser::Functions.function(:ensure_resource)
39 packages.each { |package_name|
40 function_ensure_resource(['package', package_name, defaults ])
41 }
42 end
43 end
44end
45
46# vim: set ts=2 sw=2 et :
Note: See TracBrowser for help on using the repository browser.