class Kafo::Validator
Public Class Methods
new(params)
click to toggle source
# File lib/kafo/validator.rb, line 10 def initialize(params) self.class.prepare_functions definitions = KafoConfigure.module_dirs.map do |dir| validate_files = dir + '/*/lib/puppet/parser/functions/validate_*.rb' is_function_files = dir + '/*/lib/puppet/parser/functions/is_*.rb' Dir.glob(validate_files) + Dir.glob(is_function_files) end.flatten definitions.each do |file| require File.expand_path(file) end @params = params @logger = KafoConfigure.logger @cache ||= Hash.new do |hash, key| @logger.debug "Looked for #{key}" param = @params.select { |p| p.name == key.to_s }.first hash[key] = param.nil? ? nil : param.value end end
prepare_functions()
click to toggle source
# File lib/kafo/validator.rb, line 4 def self.prepare_functions return true if @reset || !Puppet::Parser::Functions.respond_to?(:reset) Puppet::Parser::Functions.reset @reset = true end
Public Instance Methods
[](value, *args)
click to toggle source
for puppet >= 3
# File lib/kafo/validator.rb, line 42 def [](value, *args) lookupvar(value) end
include?(value)
click to toggle source
for puppet >= 3
# File lib/kafo/validator.rb, line 37 def include?(value) true end
lookupvar(name, options = {})
click to toggle source
# File lib/kafo/validator.rb, line 32 def lookupvar(name, options = {}) @cache[name] end
method_missing(method, *args, &block)
click to toggle source
Calls superclass method
# File lib/kafo/validator.rb, line 46 def method_missing(method, *args, &block) method.to_s =~ /^function_(.*)$/ super unless $1 super unless Puppet::Parser::Functions.function($1) # In odd circumstances, this might not end up defined by the previous # method, so we might as well be certain. if engine.respond_to? method @logger.debug "calling #{method.inspect} with #{args.inspect}" engine.send(method, *args) true else raise Puppet::DevError, "Function #{$1} not defined despite being loaded!" end rescue Puppet::ParseError => e @logger.error e.message return false end
Private Instance Methods
engine()
click to toggle source
# File lib/kafo/validator.rb, line 66 def engine @engine ||= begin klass = Class.new env = Puppet::PUPPETVERSION.start_with?('2.') ? nil : lookup_current_environment klass.send :include, Puppet::Parser::Functions.environment_module(env) klass.new end end
lookup_current_environment()
click to toggle source
# File lib/kafo/validator.rb, line 75 def lookup_current_environment @current_environment ||= Puppet.respond_to?(:lookup) ? Puppet.lookup(:current_environment) : Puppet::Node::Environment.current end