Class: Jerakia

Inherits:
Object
  • Object
show all
Defined in:
lib/jerakia.rb,
lib/jerakia/cli.rb,
lib/jerakia/util.rb,
lib/jerakia/error.rb,
lib/jerakia/request.rb,
lib/jerakia/version.rb,
lib/jerakia/dsl/lookup.rb,
lib/jerakia/dsl/policy.rb

Direct Known Subclasses

Log, Response

Defined Under Namespace

Modules: Dsl, Util Classes: Answer, CLI, Cache, Config, Datasource, Error, FileParseError, Launcher, Log, Lookup, Policy, PolicyError, Request, Response, Schema, SchemaError, Scope

Constant Summary collapse

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

"1.1.1"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Jerakia

Returns a new instance of Jerakia.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/jerakia.rb', line 15

def initialize(options={})

  configfile = options[:config] || ENV['JERAKIA_CONFIG'] || '/etc/jerakia/jerakia.yaml'
  @@config = File.exist?(configfile) ? Jerakia::Config.load_from_file(configfile) : Jerakia::Config.new


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

  @@filecache = {}
  loglevel = options[:loglevel] || @@config["loglevel"] || "info"
  logfile = options[:logfile] || @@config["logfile"] || "/var/log/jerakia.log"

  @@log = Jerakia::Log.new(loglevel.to_sym, logfile)
  @@log.debug("Jerakia initialized")

  Jerakia.log.verbose("Jerakia started. Version #{Jerakia::VERSION}")
end

Class Method Details

.configObject



70
71
72
# File 'lib/jerakia.rb', line 70

def self.config
  @@config
end

.fatal(msg, e) ⇒ Object



50
51
52
53
54
55
# File 'lib/jerakia.rb', line 50

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

.filecache(name) ⇒ Object



57
58
59
60
61
62
63
64
# File 'lib/jerakia.rb', line 57

def self.filecache(name)
  begin
    @@filecache[name] ||= File.read(name)
  rescue Errno::ENOENT => e
    raise Jerakia::Error, "Could not read file #{name}, #{e.message}"
  end
  return @@filecache[name]
end

.logObject



78
79
80
# File 'lib/jerakia.rb', line 78

def self.log
  @@log
end

Instance Method Details

#add_to_filecache(name, data) ⇒ Object



66
67
68
# File 'lib/jerakia.rb', line 66

def add_to_filecache(name,data)
  @@filecache[name] = data
end

#configObject



46
47
48
# File 'lib/jerakia.rb', line 46

def config
  @@config
end

#logObject



74
75
76
# File 'lib/jerakia.rb', line 74

def log
  @@log
end

#lookup(request) ⇒ Object



35
36
37
38
39
40
41
42
43
44
# File 'lib/jerakia.rb', line 35

def lookup(request)
  begin
    lookup_instance = Jerakia::Launcher.new(request)
    lookup_instance.invoke_from_file
    lookup_instance.answer
  rescue Jerakia::Error => e
    Jerakia.fatal(e.message, e)
  end

end