def lookup(key, scope, order_override, resolution_type)
answer = Backend.empty_answer(resolution_type)
Hiera.debug("Looking up #{key} in Puppet backend")
include_class = Puppet::Parser::Functions.function(:include)
loaded_classes = scope.catalog.classes
hierarchy(scope, order_override).each do |klass|
Hiera.debug("Looking for data in #{klass}")
varname = [klass, key].join("::")
temp_answer = nil
unless loaded_classes.include?(klass)
begin
if scope.respond_to?(:function_include)
scope.function_include(klass)
else
scope.real.function_include(klass)
end
temp_answer = scope[varname]
Hiera.debug("Found data in class #{klass}")
rescue
end
else
temp_answer = scope[varname]
end
next if temp_answer == :undefined
if temp_answer
case resolution_type
when :array
answer << Backend.parse_answer(temp_answer, scope)
else
answer = Backend.parse_answer(temp_answer, scope)
break
end
end
end
answer = nil if answer == :undefined
answer
end