File: //proc/self/root/usr/lib/ruby/site_ruby/1.8/puppet/indirector/hiera.rb
require 'puppet/indirector/terminus'
require 'hiera/scope'
class Puppet::Indirector::Hiera < Puppet::Indirector::Terminus
def initialize(*args)
if ! Puppet.features.hiera?
raise "Hiera terminus not supported without hiera library"
end
super
end
if defined?(::Psych::SyntaxError)
DataBindingExceptions = [::StandardError, ::Psych::SyntaxError]
else
DataBindingExceptions = [::StandardError]
end
def find(request)
hiera.lookup(request.key, nil, Hiera::Scope.new(request.options[:variables]), nil, nil)
rescue *DataBindingExceptions => detail
raise Puppet::DataBinding::LookupError.new(detail.message, detail)
end
private
def self.hiera_config
hiera_config = Puppet.settings[:hiera_config]
config = {}
if Puppet::FileSystem.exist?(hiera_config)
config = Hiera::Config.load(hiera_config)
else
Puppet.warning "Config file #{hiera_config} not found, using Hiera defaults"
end
config[:logger] = 'puppet'
config
end
def self.hiera
@hiera ||= Hiera.new(:config => hiera_config)
end
def hiera
self.class.hiera
end
end