Puppet Function: params_lookup

Defined in:
lib/puppet/parser/functions/params_lookup.rb
Function type:
Ruby 3.x API

Overview

params_lookup()Any

This fuction looks for the given variable name in a set of different sources:

  • ::varname (if is_global is true)

  • ::classname_subclass_varname

  • ::modulename_varname

  • ::modulename::params::varname

If no value is found in the defined sources, it returns an empty string (”)

Returns:

  • (Any)


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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/puppet/parser/functions/params_lookup.rb', line 22

newfunction(:params_lookup, :type => :rvalue, :doc => <<-EOS
This fuction looks for the given variable name in a set of different sources:
- ::varname (if is_global is true) 
- ::classname_subclass_varname
- ::modulename_varname
- ::modulename::params::varname
If no value is found in the defined sources, it returns an empty string ('')
  EOS
) do |arguments|

  raise(Puppet::ParseError, "params_lookup(): Define at least the variable name " +
    "given (#{arguments.size} for 1)") if arguments.size < 1

  value = ''
  var_name = arguments[0]
  is_global = arguments[1]
  default_value = arguments[2]
  module_name = parent_module_name
  classname = self.resource.name.downcase
  loaded_classes = catalog.classes
  
  # Top Scope Variable ::class_[sub_]_varname
  value = lookupvar("::#{classname.gsub('::','_')}_#{var_name}")
  return value if (not value.nil?) && (value != :undefined) && (value != '')

  # self::params class lookup for default value
  if loaded_classes.include?("#{classname}::params")
    value = lookupvar("::#{classname}::params::#{var_name}")
    return value if (not value.nil?) && (value != :undefined) && (value != '')
  end

  # Top Scope Variable Lookup (::modulename_varname)
  value = lookupvar("::#{module_name}_#{var_name}")
  return value if (not value.nil?) && (value != :undefined) && (value != '')

  # Params class lookup for default value
  if loaded_classes.include?("#{module_name}::params")
    value = lookupvar("::#{module_name}::params::#{var_name}")
    return value if (not value.nil?) && (value != :undefined) && (value != '')
  end

  # Look up ::varname (if we've set is_global to true) 
  if is_global
    value = lookupvar("::#{var_name}")
    return value if (not value.nil?) && (value != :undefined) && (value != '')
  end

  # Return our passed in default
  return default_value if ( not default_value.nil? ) && (default_value != :undefined)

  # Return the empty string
  return ''
end