Module: Puppet::Plugins::DataProviders::DataProvider

Included in:
EnvironmentDataProvider, ModuleDataProvider, PathBasedDataProvider
Defined in:
lib/puppet/plugins/data_providers/data_provider.rb

Overview

Since:

  • Puppet 4.0.0

Instance Method Summary collapse

Instance Method Details

#lookup(name, lookup_invocation, merge) ⇒ Object

Performs a lookup with an endless recursion check.

Parameters:

  • key (String)

    The key to lookup

  • lookup_invocation (Puppet::Pops::Lookup::Invocation)

    The current lookup invocation

  • merge (String|Hash<String,Object>|nil)

    Merge strategy or hash with strategy and options

Since:

  • Puppet 4.0.0



10
11
12
# File 'lib/puppet/plugins/data_providers/data_provider.rb', line 10

def lookup(name, lookup_invocation, merge)
  lookup_invocation.check(name) { unchecked_lookup(name, lookup_invocation, merge) }
end

#nameObject

Since:

  • Puppet 4.0.0



89
90
91
92
# File 'lib/puppet/plugins/data_providers/data_provider.rb', line 89

def name
  cname = self.class.name
  cname[cname.rindex(':')+1..-1]
end

#post_process(value, lookup_invocation) ⇒ Object

Perform optional post processing of found value. This hook is used by the hiera style providers to perform interpolation. The default method simply returns the given value.

Parameters:

Returns:

  • (Object)

    The result of post processing the value.

Since:

  • Puppet 4.0.0



42
43
44
# File 'lib/puppet/plugins/data_providers/data_provider.rb', line 42

def post_process(value, lookup_invocation)
  value
end

#unchecked_lookup(key, lookup_invocation, merge) ⇒ Object

Performs a lookup with the assumption that a recursive check has been made.

Parameters:

  • key (String)

    The key to lookup

  • lookup_invocation (Puppet::Pops::Lookup::Invocation)

    The current lookup invocation

  • merge (String|Hash<String,Object>|nil)

    Merge strategy or hash with strategy and options

Since:

  • Puppet 4.0.0



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/puppet/plugins/data_providers/data_provider.rb', line 21

def unchecked_lookup(key, lookup_invocation, merge)
  lookup_invocation.with(:data_provider, self) do
    hash = data(data_key(key, lookup_invocation), lookup_invocation)
    value = hash[key]
    if value || hash.include?(key)
      lookup_invocation.report_found(key, post_process(value, lookup_invocation))
    else
      lookup_invocation.report_not_found(key)
      throw :no_such_key
    end
  end
end