Class: Qurd::Configuration

Inherits:
Object
  • Object
show all
Includes:
Mixins::ConfigurationHelpers, Singleton
Defined in:
lib/qurd/configuration.rb

Overview

Parse a configuration file, create a logger and various data structures

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#configHashie::Mash (readonly)

Configuration options, ie aws_credentials, auto_scaling_queues, actions, daemonize, dry_run, listen_timeout, log_file, log_level, pid_file, save_failures, stats_interval, sqs_set_attributes_timeout, visibility_timeout, wait_time. Additional configuration keys include listeners.



18
19
20
# File 'lib/qurd/configuration.rb', line 18

def config
  @config
end

#loggerObject (readonly)

Returns the value of attribute logger.



18
# File 'lib/qurd/configuration.rb', line 18

attr_reader :config, :logger

Instance Method Details

#configure(config_path) ⇒ Object

Configure Qurd



53
54
55
56
57
58
59
60
# File 'lib/qurd/configuration.rb', line 53

def configure(config_path)
  init(config_path)
  mkdir_p_file!(@config.pid_file)

  configure_credentials
  configure_auto_scaling_queues
  configure_actions
end

#debug?Boolean

Determine if the daemon is running in debug mode



64
65
66
# File 'lib/qurd/configuration.rb', line 64

def debug?
  config.log_level == 'debug'
end

#get_context(attrs = {}) ⇒ Cabin::Context

Get a logging context and optionally initialize it



79
80
81
82
83
84
85
# File 'lib/qurd/configuration.rb', line 79

def get_context(attrs = {})
  ctx = logger.context
  attrs.each do |k, v|
    ctx[k] = v
  end
  ctx
end

#init(config_path) ⇒ Object

Initialize Qurd



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/qurd/configuration.rb', line 23

def init(config_path)
  config_path ||= '/etc/qurd/config.yml'
  @config = Hashie::Mash.new YAML.load(File.read(config_path))
  @sqs_queues = {}
  @config.daemonize = false if @config.daemonize.nil?
  @config.dry_run = get_or_default(@config, :dry_run, false)
  @config.pid_file ||= '/var/run/qurd/qurd.pid'
  @config.save_failures = get_or_default(@config, :save_failures, true)
  @queues = []
  @aws_credentials = []
  st = get_or_default(@config, :sqs_set_attributes_timeout, 10, :to_f)
  si = get_or_default(@config, :stats_interval, 600, :to_i)
  vt = get_or_default(@config, :visibility_timeout, 300, :to_s)
  wt = get_or_default(@config, :wait_time, 20, :to_s)
  lt = get_or_default(@config, :listen_timeout, vt, :to_f)
  @config.stats_interval = si
  @config.visibility_timeout = vt
  @config.wait_time = wt
  @config.sqs_set_attributes_timeout = st
  @config.listen_timeout = lt
  %w[launch launch_error terminate terminate_error test].each do |action|
    @config.actions[action] ||= []
  end

  configure_logger
end

#logger!(msg, e = RuntimeError) ⇒ Object

Log an error and raise an exception



71
72
73
74
# File 'lib/qurd/configuration.rb', line 71

def logger!(msg, e = RuntimeError)
  logger.error msg
  fail e, msg
end