diff options
| author | Hunter Haugen <hunter@puppetlabs.com> | 2016-03-17 09:25:38 -0700 | 
|---|---|---|
| committer | Hunter Haugen <hunter@puppetlabs.com> | 2016-03-17 09:25:38 -0700 | 
| commit | b6383d259cf4917edd832ba31cf4dae2b4201235 (patch) | |
| tree | 7ac0df39a11d5335c4373c48603341c4035327c0 /lib/puppet/parser | |
| parent | 52f6af3accb4657d89aa26b623710b4e698cdde2 (diff) | |
| parent | 0da9ca7e4a78df49c08873f55caf7c88cdd9bc32 (diff) | |
| download | puppet-stdlib-master.tar.gz puppet-stdlib-master.tar.bz2  | |
ensure_packages.rb: Modifed to pass hiera parameters (as hash,array) as first argument
Diffstat (limited to 'lib/puppet/parser')
| -rw-r--r-- | lib/puppet/parser/functions/ensure_packages.rb | 27 | ||||
| -rw-r--r-- | lib/puppet/parser/functions/ensure_resources.rb | 54 | 
2 files changed, 73 insertions, 8 deletions
diff --git a/lib/puppet/parser/functions/ensure_packages.rb b/lib/puppet/parser/functions/ensure_packages.rb index f1da4aa..532b702 100644 --- a/lib/puppet/parser/functions/ensure_packages.rb +++ b/lib/puppet/parser/functions/ensure_packages.rb @@ -17,18 +17,29 @@ third argument to the ensure_resource() function.        raise(Puppet::ParseError, 'ensure_packages(): Requires second argument to be a Hash')      end -    packages = Array(arguments[0]) +    if arguments[0].is_a?(Hash) +      if arguments[1] +        defaults = { 'ensure' => 'present' }.merge(arguments[1]) +      else +        defaults = { 'ensure' => 'present' } +      end -    if arguments[1] -      defaults = { 'ensure' => 'present' }.merge(arguments[1]) +      Puppet::Parser::Functions.function(:ensure_resources) +      function_ensure_resources(['package', Hash(arguments[0]), defaults ])      else -      defaults = { 'ensure' => 'present' } -    end +      packages = Array(arguments[0]) + +      if arguments[1] +        defaults = { 'ensure' => 'present' }.merge(arguments[1]) +      else +        defaults = { 'ensure' => 'present' } +      end -    Puppet::Parser::Functions.function(:ensure_resource) -    packages.each { |package_name| -      function_ensure_resource(['package', package_name, defaults ]) +      Puppet::Parser::Functions.function(:ensure_resource) +      packages.each { |package_name| +        function_ensure_resource(['package', package_name, defaults ])      } +    end    end  end diff --git a/lib/puppet/parser/functions/ensure_resources.rb b/lib/puppet/parser/functions/ensure_resources.rb new file mode 100644 index 0000000..30d57a8 --- /dev/null +++ b/lib/puppet/parser/functions/ensure_resources.rb @@ -0,0 +1,54 @@ +require 'puppet/parser/functions' + +Puppet::Parser::Functions.newfunction(:ensure_resources, +                                      :type => :statement, +                                      :doc => <<-'ENDOFDOC' +Takes a resource type, title (only hash), and a list of attributes that describe a +resource. + +    user { 'dan': +      gid => 'mygroup', +      ensure => present, +    } + +An hash of resources should be passed in and each will be created with +the type and parameters specified if it doesn't already exist. + +    ensure_resources('user', {'dan' => { gid => 'mygroup', uid => '600' } ,  'alex' => { gid => 'mygroup' }}, {'ensure' => 'present'}) + +From Hiera Backend: + +userlist: +  dan: +    gid: 'mygroup' + uid: '600' +  alex: + gid: 'mygroup' + +Call: +ensure_resources('user', hiera_hash('userlist'), {'ensure' => 'present'}) + +ENDOFDOC +) do |vals| +  type, title, params = vals +  raise(ArgumentError, 'Must specify a type') unless type +  raise(ArgumentError, 'Must specify a title') unless title +  params ||= {} + +  if title.is_a?(Hash) +    resource_hash = Hash(title) +    resources = resource_hash.keys + +    Puppet::Parser::Functions.function(:ensure_resource) +    resources.each { |resource_name| +    if resource_hash[resource_name] +        params_merged = params.merge(resource_hash[resource_name]) +    else +        params_merged = params +    end +    function_ensure_resource([ type, resource_name, params_merged ]) +    } +  else +       raise(Puppet::ParseError, 'ensure_resources(): Requires second argument to be a Hash') +  end +end  | 
