Class: Puppet::Plugins::DataProviders::ModuleDataProvider Private

Inherits:
Object
  • Object
show all
Includes:
DataProvider
Defined in:
lib/puppet/plugins/data_providers/data_provider.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Since:

  • Puppet 4.0.0

Constant Summary collapse

LOOKUP_OPTIONS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Since:

  • Puppet 4.0.0

Puppet::Pops::Lookup::LOOKUP_OPTIONS

Instance Method Summary collapse

Methods included from DataProvider

#lookup, #name, #post_process, #unchecked_lookup

Methods included from Puppet::Pops::Lookup::Interpolation

#interpolate

Methods included from Puppet::Pops::Lookup::SubLookup

#split_key, #sub_lookup

Instance Method Details

#data_key(key, lookup_invocation) ⇒ String

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Retrieve the first segment of the qualified name key. This method will throw :no_such_key unless the segment can be extracted.

Parameters:

  • key (String)

    The key

Returns:

  • (String)

    The first segment of the given key

Since:

  • Puppet 4.0.0



104
105
106
107
108
109
# File 'lib/puppet/plugins/data_providers/data_provider.rb', line 104

def data_key(key, lookup_invocation)
  return lookup_invocation.module_name if key == LOOKUP_OPTIONS
  qual_index = key.index('::')
  throw :no_such_key if qual_index.nil?
  key[0..qual_index-1]
end

#validate_data(data, module_name) ⇒ Hash

Asserts that all keys in the given data are prefixed with the given module_name. Remove entries that does not follow the convention and log a warning.

Parameters:

  • data (Hash)

    The data hash

  • module_name (String)

    The name of the module where the data was found

Returns:

  • (Hash)

    The possibly pruned hash

Since:

  • Puppet 4.0.0



118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/puppet/plugins/data_providers/data_provider.rb', line 118

def validate_data(data, module_name)
  module_prefix = "#{module_name}::"
  data.each_key.reduce(data) do |memo, k|
    if k.is_a?(String)
      next memo if k == LOOKUP_OPTIONS || k.start_with?(module_prefix)
      msg = 'must use keys qualified with the name of the module'
    else
      msg = "must use keys of type String, got #{k.class.name}"
    end
    memo = memo.clone if memo.equal?(data)
    memo.delete(k)
    Puppet.warning("Module data for module '#{module_name}' #{msg}")
    memo
  end
end