Sha256: 4fb1197236f58bc4e8c26372dd058b6ff05cc31b6d438e4d96f778e0cf38636d

Contents?: true

Size: 1.48 KB

Versions: 20

Compression:

Stored size: 1.48 KB

Contents

# Test whether a given class or definition is defined
require 'puppet/parser/functions'

Puppet::Parser::Functions.newfunction(:ensure_resource,
                                      :type => :statement,
                                      :doc => <<-'ENDOFDOC'
Takes a resource type, title, and a list of attributes that describe a
resource.

    user { 'dan':
      ensure => present,
    }

This example only creates the resource if it does not already exist:

    ensure_resource('user, 'dan', {'ensure' => 'present' })

If the resource already exists but does not match the specified parameters,
this function will attempt to recreate the resource leading to a duplicate
resource definition error.

An array of resources can also be passed in and each will be created with
the type and parameters specified if it doesn't already exist.

    ensure_resource('user', ['dan','alex'], {'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 ||= {}

  items = [title].flatten

  items.each do |item|
    Puppet::Parser::Functions.function(:defined_with_params)
    if function_defined_with_params(["#{type}[#{item}]", params])
      Puppet.debug("Resource #{type}[#{item}] not created because it already exists")
    else
      Puppet::Parser::Functions.function(:create_resources)
      function_create_resources([type.capitalize, { item => params }])
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
freighthop-0.6.1 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.6.0 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.5.2 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.5.1 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.5.0 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.4.1 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.4.0 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.3.3 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.3.2 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.3.1 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.3.0 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.2.1 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.2.0 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.1.0 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.0.6 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.0.5 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.0.4 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.0.3 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.0.2 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb
freighthop-0.0.1 modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb