Sha256: 2f8481e7705ca5ad72a79a9f1bb0f3e275cd36469ad550f81907755fde8fdb3e

Contents?: true

Size: 1.02 KB

Versions: 12

Compression:

Stored size: 1.02 KB

Contents

# @api private
module Puppet::DataProviders::DataFunctionSupport
  def initialize_data(data_key, lookup_invocation)
    name = "#{data_key}::data"
    scope = lookup_invocation.scope
    Puppet::Util::Profiler.profile("Called #{name}", [ :functions, name ]) do
      loader = loader(data_key, scope)
      if loader && func = loader.load(:function, name)
        # function found, call without arguments, must return a Hash
        # TODO: Validate the function - to ensure it does not contain unwanted side effects
        #       That can only be done if the function is a puppet function
        #
        result = func.call(scope)
        unless result.is_a?(Hash)
          raise Puppet::Error.new("Expected '#{name}' function to return a Hash, got #{result.class}")
        end
        # validate result if block given
        result = yield(result) if block_given?
      else
        raise Puppet::Error.new("Cannot find the function '#{name}' - required when using 'function' data provider scheme")
      end
      result
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
puppet-4.8.2 lib/puppet/data_providers/data_function_support.rb
puppet-4.8.2-x86-mingw32 lib/puppet/data_providers/data_function_support.rb
puppet-4.8.2-x64-mingw32 lib/puppet/data_providers/data_function_support.rb
puppet-4.8.2-universal-darwin lib/puppet/data_providers/data_function_support.rb
puppet-4.8.1 lib/puppet/data_providers/data_function_support.rb
puppet-4.8.1-x86-mingw32 lib/puppet/data_providers/data_function_support.rb
puppet-4.8.1-x64-mingw32 lib/puppet/data_providers/data_function_support.rb
puppet-4.8.1-universal-darwin lib/puppet/data_providers/data_function_support.rb
puppet-4.8.0 lib/puppet/data_providers/data_function_support.rb
puppet-4.8.0-x86-mingw32 lib/puppet/data_providers/data_function_support.rb
puppet-4.8.0-x64-mingw32 lib/puppet/data_providers/data_function_support.rb
puppet-4.8.0-universal-darwin lib/puppet/data_providers/data_function_support.rb