class Jerakia

Class Jerakia

Main Jerakia class

Here we take a request object and read in the policy file which is evalulated in this instance

Jerakia::Lookup::PluginConfig

This class is a simple wrapper class to expose configuration options from the global configuration file to lookup plugins. It's exposed to the lookup as the config method. Eg: config

Constants

VERSION

Public API to retrieve the latest released version of the code

This should be updated when a new gem is released and it is read from the gemspec file

Attributes

config[R]
log[R]
launcher[R]
options[R]

Public Class Methods

config=(data) click to toggle source
# File lib/jerakia.rb, line 66
def config=(data)
  @config ||= data
end
fatal(msg, e) click to toggle source
# File lib/jerakia.rb, line 49
def self.fatal(msg, e)
  stacktrace = e.backtrace.join("\n")
  Jerakia.log.fatal msg
  Jerakia.log.fatal "Full stacktrace output:\n#{$!}\n\n#{stacktrace}"
  raise e
end
log=(logger) click to toggle source
# File lib/jerakia.rb, line 70
def log=(logger)
  @log ||= logger
end
new(options = {}) click to toggle source
# File lib/jerakia.rb, line 28
def initialize(options = {})
  @options = options
  @policies = {}

  load_config
  load_log_handler

  if config[:plugindir]
    $LOAD_PATH << config[:plugindir] unless $LOAD_PATH.include?(config[:plugindir])
  end

  log.debug('Jerakia initialized')
  Jerakia.log.verbose("Jerakia started. Version #{Jerakia::VERSION}")
  @launcher = Jerakia::Launcher.new
end

Public Instance Methods

config() click to toggle source
# File lib/jerakia.rb, line 57
def config
  self.class.config
end
log() click to toggle source
# File lib/jerakia.rb, line 61
def log
  self.class.log
end
lookup(request) click to toggle source
# File lib/jerakia.rb, line 44
def lookup(request)
  raise Jerakia::PolicyError, "Policy '#{request.policy}' not defined" unless launcher.policy_exists?(request.policy)
  launcher.policies[request.policy.to_sym].run(request)
end

Private Instance Methods

config_instance() click to toggle source
# File lib/jerakia.rb, line 81
def config_instance
  File.exist?(configfile) ? Jerakia::Config.load_from_file(configfile) : Jerakia::Config.new
end
configfile() click to toggle source
# File lib/jerakia.rb, line 77
def configfile
  options[:config] || ENV['JERAKIA_CONFIG'] || '/etc/jerakia/jerakia.yaml'
end
load_config() click to toggle source
# File lib/jerakia.rb, line 85
def load_config
  self.class.config = config_instance
end
load_log_handler() click to toggle source
# File lib/jerakia.rb, line 97
def load_log_handler
  self.class.log = Jerakia::Log.new(loglevel.to_sym, logfile)
end
logfile() click to toggle source
# File lib/jerakia.rb, line 93
def logfile
  options[:logfile] || config['logfile'] || '/var/log/jerakia.log'
end
loglevel() click to toggle source
# File lib/jerakia.rb, line 89
def loglevel
  options[:loglevel] || config['loglevel'] || 'info'
end