Puppet Function: params_lookup
- Defined in:
- lib/puppet/functions/params_lookup.rb
- Function type:
- Ruby 4.x API
Overview
params_lookup.rb
Puppet 4 implementation
This function lookups for a variable value in various locations following this order (first match is returned)
-
Hiera backend (if present) for modulename_varname
-
Hiera backend (if present) for varname (if second argument is ‘global’)
-
Top Scope Variable ::modulename_varname
-
Top Scope Variable ::varname (if second argument is ‘global’)
-
Module default: ::modulename::params::varname
Alessandro Franceschi al@lab42.it
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/puppet/functions/params_lookup.rb', line 16 Puppet::Functions.create_function(:params_lookup, Puppet::Functions::InternalFunction) do dispatch :single do scope_param() param 'String', :varname optional_param 'String', :lookup_type # arg_count 1, 3 end def single(scope, varname, lookup_type='') value = '' modulename = scope["module_name"] # OK - Hiera Lookup modulename_varname value = call_function('hiera', "#{modulename}_#{varname}" , '') return value if (value != '') # OK - Hiera Lookup varname (global) value = call_function('hiera', "#{varname}", '') if lookup_type == 'global' return value if (not value.nil?) && (value != :undefined) && (value != '') # OK - Top Scope Variable Lookup (::modulename_varname) catch (:undefined_variable) do begin value = scope["::#{modulename}_#{varname}"] rescue Puppet::ParseError => e raise unless e.to_s =~ /.Could not look./ end end return value if (not value.nil?) && (value != :undefined) && (value != '') # OK - Top Scope Variable Lookup ::varname (global) if lookup_type == 'global' catch (:undefined_variable) do begin value = scope["::#{varname}"] rescue Puppet::ParseError => e raise unless e.to_s =~ /.Could not look./ end end return value if (not value.nil?) && (value != :undefined) && (value != '') end # TODO: Set the correct classname when params_lookup used in subclasses classname = modulename # classname = scope.self.resource.name.downcase loaded_classes = closure_scope.catalog.classes # TOTEST - legacy params lookup (self::params) if loaded_classes.include?("#{classname}::params") value = closure_scope["::#{classname}::params::#{varname}"] return value if (not value.nil?) # return value if (not value.nil?) && (value != :undefined) && (value != '') end # OK - default params lookup if loaded_classes.include?("#{modulename}::params") value = closure_scope["::#{modulename}::params::#{varname}"] return value if (not value.nil?) # return value if (not value.nil?) && (value != :undefined) && (value != '') end return '' end end |