1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
# frozen_string_literal: true
# Test whether a given class or definition is defined
require 'puppet/parser/functions'
Puppet::Parser::Functions.newfunction(:getparam, type: :rvalue, doc: <<-DOC
@summary
Returns the value of a resource's parameter.
@return
value of a resource's parameter.
Takes a resource reference and name of the parameter and
returns value of resource's parameter. Note that user defined
resource types are evaluated lazily.
@example Example Usage:
# define a resource type with a parameter
define example_resource($param) {
}
# declare an instance of that type
example_resource { "example_resource_instance":
param => "'the value we are getting in this example''"
}
# Because of order of evaluation, a second definition is needed
# that will be evaluated after the first resource has been declared
#
define example_get_param {
# This will notice the value of the parameter
notice(getparam(Example_resource["example_resource_instance"], "param"))
}
# Declare an instance of the second resource type - this will call notice
example_get_param { 'show_notify': }
Would notice: 'the value we are getting in this example'
> **Note** that since Puppet 4.0.0 it is possible to get a parameter value by using its data type
and the [ ] operator. The example below is equivalent to a call to getparam():
```Example_resource['example_resource_instance']['param']``
DOC
) do |vals|
reference, param = vals
raise(ArgumentError, 'Must specify a reference') unless reference
raise(ArgumentError, 'Must specify name of a parameter') unless param.instance_of?(String)
return '' if param.empty?
resource = findresource(reference.to_s)
return resource[param] if resource && !resource[param].nil?
return ''
end
|