summaryrefslogtreecommitdiff
path: root/lib/oxidized
diff options
context:
space:
mode:
authorElvin Efendi <elvin.efendiev@shopify.com>2015-10-27 14:49:52 -0400
committerElvin Efendi <elvin.efendiev@shopify.com>2015-11-13 11:12:31 -0500
commitf2da63369fcb754e3715091cc4fd2f93db42106e (patch)
tree0e985374cc7b4bd8111c012072c39218335881ef /lib/oxidized
parent1400b842f6dc61e662ce15f72f578a55126ffc06 (diff)
better test framework, more specs and Travis CI
Diffstat (limited to 'lib/oxidized')
-rw-r--r--lib/oxidized/cli.rb2
-rw-r--r--lib/oxidized/config.rb83
-rw-r--r--lib/oxidized/config/vars.rb4
-rw-r--r--lib/oxidized/core.rb7
-rw-r--r--lib/oxidized/hook.rb2
-rw-r--r--lib/oxidized/input/cli.rb3
-rw-r--r--lib/oxidized/input/ftp.rb4
-rw-r--r--lib/oxidized/input/ssh.rb18
-rw-r--r--lib/oxidized/input/telnet.rb4
-rw-r--r--lib/oxidized/job.rb6
-rw-r--r--lib/oxidized/model/junos.rb14
-rw-r--r--lib/oxidized/model/model.rb3
-rw-r--r--lib/oxidized/node.rb22
-rw-r--r--lib/oxidized/nodes.rb2
-rw-r--r--lib/oxidized/output/file.rb6
-rw-r--r--lib/oxidized/output/git.rb10
-rw-r--r--lib/oxidized/source/csv.rb14
-rw-r--r--lib/oxidized/source/http.rb2
-rw-r--r--lib/oxidized/source/source.rb2
-rw-r--r--lib/oxidized/source/sql.rb14
-rw-r--r--lib/oxidized/string.rb2
-rw-r--r--lib/oxidized/version.rb3
-rw-r--r--lib/oxidized/worker.rb6
23 files changed, 120 insertions, 113 deletions
diff --git a/lib/oxidized/cli.rb b/lib/oxidized/cli.rb
index c66ec8d..00ea4b6 100644
--- a/lib/oxidized/cli.rb
+++ b/lib/oxidized/cli.rb
@@ -18,7 +18,7 @@ module Oxidized
def initialize
Log.info "Oxidized starting, running as pid #{$$}"
_args, @opts = parse_opts
- CFG.debug = true if @opts[:debug]
+ Oxidized.config.debug = true if @opts[:debug]
end
def crash error
diff --git a/lib/oxidized/config.rb b/lib/oxidized/config.rb
index f45004a..36c1a8f 100644
--- a/lib/oxidized/config.rb
+++ b/lib/oxidized/config.rb
@@ -11,47 +11,52 @@ module Oxidized
SourceDir = File.join Directory, %w(lib oxidized source)
HookDir = File.join Directory, %w(lib oxidized hook)
Sleep = 1
+
+ def self.load
+ asetus = Asetus.new(name: 'oxidized', load: false, key_to_s: true)
+ Oxidized.asetus = asetus
+
+ asetus.default.username = 'username'
+ asetus.default.password = 'password'
+ asetus.default.model = 'junos'
+ asetus.default.interval = 3600
+ asetus.default.log = File.join Config::Root, 'log'
+ asetus.default.debug = false
+ asetus.default.threads = 30
+ asetus.default.timeout = 20
+ asetus.default.retries = 3
+ asetus.default.prompt = /^([\w.@-]+[#>]\s?)$/
+ asetus.default.rest = '127.0.0.1:8888' # or false to disable
+ asetus.default.vars = {} # could be 'enable'=>'enablePW'
+ asetus.default.groups = {} # group level configuration
+
+ asetus.default.input.default = 'ssh, telnet'
+ asetus.default.input.debug = false # or String for session log file
+ asetus.default.input.ssh.secure = false # complain about changed certs
+
+ asetus.default.output.default = 'file' # file, git
+ asetus.default.source.default = 'csv' # csv, sql
+
+ asetus.default.model_map = {
+ 'cisco' => 'ios',
+ 'juniper' => 'junos',
+ }
+
+ begin
+ asetus.load # load system+user configs, merge to Config.cfg
+ rescue => error
+ raise InvalidConfig, "Error loading config: #{error.message}"
+ end
+
+ Log.level = Logger::INFO unless asetus.cfg.debug
+ raise NoConfig, 'edit ~/.config/oxidized/config' if asetus.create
+ Log.file = asetus.cfg.log if asetus.cfg.log
+
+ asetus
+ end
end
+
class << self
attr_accessor :mgr, :Hooks
end
- CFGS = Asetus.new :name=>'oxidized', :load=>false, :key_to_s=>true
- CFGS.default.username = 'username'
- CFGS.default.password = 'password'
- CFGS.default.model = 'junos'
- CFGS.default.interval = 3600
- CFGS.default.log = File.join Config::Root, 'log'
- CFGS.default.debug = false
- CFGS.default.threads = 30
- CFGS.default.timeout = 20
- CFGS.default.retries = 3
- CFGS.default.prompt = /^([\w.@-]+[#>]\s?)$/
- CFGS.default.rest = '127.0.0.1:8888' # or false to disable
- CFGS.default.vars = {} # could be 'enable'=>'enablePW'
- CFGS.default.groups = {} # group level configuration
-
- CFGS.default.input.default = 'ssh, telnet'
- CFGS.default.input.debug = false # or String for session log file
- CFGS.default.input.ssh.secure = false # complain about changed certs
-
- CFGS.default.output.default = 'file' # file, git
- CFGS.default.source.default = 'csv' # csv, sql
-
- CFGS.default.model_map = {
- 'cisco' => 'ios',
- 'juniper' => 'junos',
- }
-
- begin
- CFGS.load # load system+user configs, merge to Config.cfg
- rescue => error
- raise InvalidConfig, "Error loading config: #{error.message}"
- ensure
- CFG = CFGS.cfg # convenienence, instead of Config.cfg.password, CFG.password
- end
-
- Log.level = Logger::INFO unless CFG.debug
- raise NoConfig, 'edit ~/.config/oxidized/config' if CFGS.create
- Log.file = CFG.log if CFG.log
-
end
diff --git a/lib/oxidized/config/vars.rb b/lib/oxidized/config/vars.rb
index b39e7fe..10f39c3 100644
--- a/lib/oxidized/config/vars.rb
+++ b/lib/oxidized/config/vars.rb
@@ -3,8 +3,8 @@ module Oxidized::Config::Vars
# nil values will be ignored
def vars name
r = @node.vars[name] unless @node.vars.nil?
- r ||= Oxidized::CFG.groups[@node.group].vars[name.to_s] if Oxidized::CFG.groups.has_key?(@node.group)
- r ||= Oxidized::CFG.vars[name.to_s] if Oxidized::CFG.vars.has_key?(name.to_s)
+ r ||= Oxidized.config.groups[@node.group].vars[name.to_s] if Oxidized.config.groups.has_key?(@node.group)
+ r ||= Oxidized.config.vars[name.to_s] if Oxidized.config.vars.has_key?(name.to_s)
r
end
end
diff --git a/lib/oxidized/core.rb b/lib/oxidized/core.rb
index 6e7a352..1b918d1 100644
--- a/lib/oxidized/core.rb
+++ b/lib/oxidized/core.rb
@@ -17,19 +17,20 @@ module Oxidized
class NoNodesFound < OxidizedError; end
def initialize args
+ Config.load
Oxidized.mgr = Manager.new
- Oxidized.Hooks = HookManager.from_config CFG
+ Oxidized.Hooks = HookManager.from_config(Oxidized.config)
nodes = Nodes.new
raise NoNodesFound, 'source returns no usable nodes' if nodes.size == 0
@worker = Worker.new nodes
trap('HUP') { nodes.load }
- if CFG.rest?
+ if Oxidized.config.rest?
begin
require 'oxidized/web'
rescue LoadError
raise OxidizedError, 'oxidized-web not found: sudo gem install oxidized-web - or disable web support by setting "rest: false" in your configuration'
end
- @rest = API::Web.new nodes, CFG.rest
+ @rest = API::Web.new nodes, Oxidized.config.rest
@rest.run
end
run
diff --git a/lib/oxidized/hook.rb b/lib/oxidized/hook.rb
index 7f1942b..d774653 100644
--- a/lib/oxidized/hook.rb
+++ b/lib/oxidized/hook.rb
@@ -66,7 +66,7 @@ end
# Hook abstract base class
class Hook
- attr_accessor :cfg
+ attr_reader :cfg
def initialize
end
diff --git a/lib/oxidized/input/cli.rb b/lib/oxidized/input/cli.rb
index 22d188c..731b459 100644
--- a/lib/oxidized/input/cli.rb
+++ b/lib/oxidized/input/cli.rb
@@ -1,6 +1,7 @@
module Oxidized
class Input
module CLI
+ attr_reader :node
def initialize
@post_login = []
@@ -10,7 +11,7 @@ module Oxidized
def get
connect_cli
- d = @node.model.get
+ d = node.model.get
disconnect
d
end
diff --git a/lib/oxidized/input/ftp.rb b/lib/oxidized/input/ftp.rb
index 70db60c..a3d7ac8 100644
--- a/lib/oxidized/input/ftp.rb
+++ b/lib/oxidized/input/ftp.rb
@@ -18,7 +18,7 @@ module Oxidized
def connect node
@node = node
@node.model.cfg['ftp'].each { |cb| instance_exec(&cb) }
- @log = File.open(Oxidized::Config::Crash + "-#{@node.ip}-ftp", 'w') if CFG.input.debug?
+ @log = File.open(Oxidized::Config::Crash + "-#{@node.ip}-ftp", 'w') if Oxidized.config.input.debug?
@ftp = Net::FTP.new @node.ip, @node.auth[:username], @node.auth[:password]
connected?
end
@@ -47,7 +47,7 @@ module Oxidized
@ftp.close
#rescue Errno::ECONNRESET, IOError
ensure
- @log.close if CFG.input.debug?
+ @log.close if Oxidized.config.input.debug?
end
end
diff --git a/lib/oxidized/input/ssh.rb b/lib/oxidized/input/ssh.rb
index 21fb02c..e45adb6 100644
--- a/lib/oxidized/input/ssh.rb
+++ b/lib/oxidized/input/ssh.rb
@@ -19,11 +19,11 @@ module Oxidized
@node = node
@output = ''
@node.model.cfg['ssh'].each { |cb| instance_exec(&cb) }
- secure = CFG.input.ssh.secure
- @log = File.open(Oxidized::Config::Crash + "-#{@node.ip}-ssh", 'w') if CFG.input.debug?
+ secure = Oxidized.config.input.ssh.secure
+ @log = File.open(Oxidized::Config::Crash + "-#{@node.ip}-ssh", 'w') if Oxidized.config.input.debug?
port = vars(:ssh_port) || 22
@ssh = Net::SSH.start @node.ip, @node.auth[:username], :port => port.to_i,
- :password => @node.auth[:password], :timeout => CFG.timeout,
+ :password => @node.auth[:password], :timeout => Oxidized.config.timeout,
:paranoid => secure,
:auth_methods => %w(none publickey password keyboard-interactive),
:number_of_password_prompts => 0
@@ -42,8 +42,8 @@ module Oxidized
@ssh and not @ssh.closed?
end
- def cmd cmd, expect=@node.prompt
- Log.debug "SSH: #{cmd} @ #{@node.name}"
+ def cmd cmd, expect=node.prompt
+ Log.debug "SSH: #{cmd} @ #{node.name}"
if @exec
@ssh.exec! cmd
else
@@ -64,17 +64,17 @@ module Oxidized
def disconnect
disconnect_cli
# if disconnect does not disconnect us, give up after timeout
- Timeout::timeout(CFG.timeout) { @ssh.loop }
+ Timeout::timeout(Oxidized.config.timeout) { @ssh.loop }
rescue Errno::ECONNRESET, Net::SSH::Disconnect, IOError
ensure
- @log.close if CFG.input.debug?
+ @log.close if Oxidized.config.input.debug?
(@ssh.close rescue true) unless @ssh.closed?
end
def shell_open ssh
@ses = ssh.open_channel do |ch|
ch.on_data do |_ch, data|
- @log.print data if CFG.input.debug?
+ @log.print data if Oxidized.config.input.debug?
@output << data
@output = @node.model.expects @output
end
@@ -109,7 +109,7 @@ module Oxidized
end
def expect regexp
- Timeout::timeout(CFG.timeout) do
+ Timeout::timeout(Oxidized.config.timeout) do
@ssh.loop(0.1) do
sleep 0.1
not @output.match regexp
diff --git a/lib/oxidized/input/telnet.rb b/lib/oxidized/input/telnet.rb
index bf0140c..b92d703 100644
--- a/lib/oxidized/input/telnet.rb
+++ b/lib/oxidized/input/telnet.rb
@@ -8,7 +8,7 @@ module Oxidized
def connect node
@node = node
- @timeout = CFG.timeout
+ @timeout = Oxidized.config.timeout
@node.model.cfg['telnet'].each { |cb| instance_exec(&cb) }
port = vars(:telnet_port) || 23
@@ -16,7 +16,7 @@ module Oxidized
'Port' => port.to_i,
'Timeout' => @timeout,
'Model' => @node.model }
- opt['Output_log'] = Oxidized::Config::Crash + "-#{@node.ip}-telnet" if CFG.input.debug?
+ opt['Output_log'] = Oxidized::Config::Crash + "-#{@node.ip}-telnet" if Oxidized.config.input.debug?
@telnet = Net::Telnet.new opt
if @node.auth[:username] and @node.auth[:username].length > 0
diff --git a/lib/oxidized/job.rb b/lib/oxidized/job.rb
index 6fb60a8..0a4a24b 100644
--- a/lib/oxidized/job.rb
+++ b/lib/oxidized/job.rb
@@ -1,11 +1,11 @@
module Oxidized
class Job < Thread
attr_reader :start, :end, :status, :time, :node, :config
- def initialize node
+ def initialize(node)
@node = node
@start = Time.now.utc
- super do |node|
- @status, @config = node.run
+ super do
+ @status, @config = @node.run
@end = Time.now.utc
@time = @end - @start
end
diff --git a/lib/oxidized/model/junos.rb b/lib/oxidized/model/junos.rb
index 0e921d2..da3af72 100644
--- a/lib/oxidized/model/junos.rb
+++ b/lib/oxidized/model/junos.rb
@@ -3,7 +3,7 @@ class JunOS < Oxidized::Model
comment '# '
def telnet
- @input.class.to_s.match /Telnet/
+ @input.class.to_s.match(/Telnet/)
end
cmd :all do |cfg|
@@ -12,16 +12,16 @@ class JunOS < Oxidized::Model
cfg.lines.map { |line| line.rstrip }.join("\n") + "\n"
end
- cmd :secret do |cfg|
- cfg.gsub! /encrypted-password (\S+).*/, '<secret removed>'
- cfg.gsub! /community (\S+) {/, 'community <hidden> {'
+ cmd :secret do |cfg|
+ cfg.gsub!(/encrypted-password (\S+).*/, '<secret removed>')
+ cfg.gsub!(/community (\S+) {/, 'community <hidden> {')
cfg
end
cmd 'show configuration | display omit'
cmd 'show version' do |cfg|
- @model = $1 if cfg.match /^Model: (\S+)/
+ @model = $1 if cfg.match(/^Model: (\S+)/)
comment cfg
end
@@ -39,8 +39,8 @@ class JunOS < Oxidized::Model
end
cfg :telnet do
- username /^login:/
- password /^Password:/
+ username(/^login:/)
+ password(/^Password:/)
end
cfg :ssh do
diff --git a/lib/oxidized/model/model.rb b/lib/oxidized/model/model.rb
index e0e3941..c95cc67 100644
--- a/lib/oxidized/model/model.rb
+++ b/lib/oxidized/model/model.rb
@@ -11,7 +11,8 @@ module Oxidized
klass.instance_variable_set '@cfg', Hash.new { |h,k| h[k] = [] }
klass.instance_variable_set '@procs', Hash.new { |h,k| h[k] = [] }
klass.instance_variable_set '@expect', []
- klass.const_set :CFG, CFG
+ klass.instance_variable_set '@comment', nil
+ klass.instance_variable_set '@prompt', nil
end
def comment _comment='# '
return @comment if @comment
diff --git a/lib/oxidized/node.rb b/lib/oxidized/node.rb
index d50317f..1bbf6dc 100644
--- a/lib/oxidized/node.rb
+++ b/lib/oxidized/node.rb
@@ -54,9 +54,7 @@ module Oxidized
end
end
begin
- if input.connect self
- input.get
- end
+ input.connect(self) and input.get
rescue *rescue_fail.keys => err
resc = ''
if not level = rescue_fail[err.class]
@@ -122,19 +120,17 @@ module Oxidized
private
def resolve_prompt opt
- prompt = opt[:prompt]
- prompt ||= @model.prompt
- prompt ||= CFG.prompt
+ opt[:prompt] || @model.prompt || Oxidized.config.prompt
end
def resolve_auth opt
# Resolve configured username/password, give priority to group level configuration
# TODO: refactor to use revised behaviour of Asetus
cfg_username, cfg_password =
- if CFG.groups.has_key?(@group) and ['username', 'password'].all? {|e| CFG.groups[@group].has_key?(e)}
- [CFG.groups[@group].username, CFG.groups[@group].password]
- elsif ['username', 'password'].all? {|e| CFG.has_key?(e)}
- [CFG.username, CFG.password]
+ if Oxidized.config.groups.has_key?(@group) and ['username', 'password'].all? {|e| Oxidized.config.groups[@group].has_key?(e)}
+ [Oxidized.config.groups[@group].username, Oxidized.config.groups[@group].password]
+ elsif ['username', 'password'].all? {|e| Oxidized.config.has_key?(e)}
+ [Oxidized.config.username, Oxidized.config.password]
else
[nil, nil]
end
@@ -145,7 +141,7 @@ module Oxidized
end
def resolve_input opt
- inputs = (opt[:input] or CFG.input.default)
+ inputs = (opt[:input] or Oxidized.config.input.default)
inputs.split(/\s*,\s*/).map do |input|
if not Oxidized.mgr.input[input]
Oxidized.mgr.add_input input or raise MethodNotFound, "#{input} not found for node #{ip}"
@@ -155,7 +151,7 @@ module Oxidized
end
def resolve_output opt
- output = (opt[:output] or CFG.output.default)
+ output = (opt[:output] or Oxidized.config.output.default)
if not Oxidized.mgr.output[output]
Oxidized.mgr.add_output output or raise MethodNotFound, "#{output} not found for node #{ip}"
end
@@ -163,7 +159,7 @@ module Oxidized
end
def resolve_model opt
- model = (opt[:model] or CFG.model)
+ model = (opt[:model] or Oxidized.config.model)
if not Oxidized.mgr.model[model]
Oxidized.mgr.add_model model or raise ModelNotFound, "#{model} not found for node #{ip}"
end
diff --git a/lib/oxidized/nodes.rb b/lib/oxidized/nodes.rb
index cb2ce7b..f0c5d56 100644
--- a/lib/oxidized/nodes.rb
+++ b/lib/oxidized/nodes.rb
@@ -9,7 +9,7 @@ module Oxidized
def load node_want=nil
with_lock do
new = []
- @source = CFG.source.default
+ @source = Oxidized.config.source.default
Oxidized.mgr.add_source @source
Oxidized.mgr.source[@source].new.load.each do |node|
# we want to load specific node(s), not all of them
diff --git a/lib/oxidized/output/file.rb b/lib/oxidized/output/file.rb
index 38c9917..ba08683 100644
--- a/lib/oxidized/output/file.rb
+++ b/lib/oxidized/output/file.rb
@@ -3,13 +3,13 @@ class OxidizedFile < Output
require 'fileutils'
def initialize
- @cfg = CFG.output.file
+ @cfg = Oxidized.config.output.file
end
def setup
if @cfg.empty?
- CFGS.user.output.file.directory = File.join(Config::Root, 'configs')
- CFGS.save :user
+ Oxidized.asetus.user.output.file.directory = File.join(Config::Root, 'configs')
+ Oxidized.asetus.save :user
raise NoConfig, 'no output file config, edit ~/.config/oxidized/config'
end
end
diff --git a/lib/oxidized/output/git.rb b/lib/oxidized/output/git.rb
index 3757cfc..eedf51d 100644
--- a/lib/oxidized/output/git.rb
+++ b/lib/oxidized/output/git.rb
@@ -8,15 +8,15 @@ class Git < Output
end
def initialize
- @cfg = CFG.output.git
+ @cfg = Oxidized.config.output.git
end
def setup
if @cfg.empty?
- CFGS.user.output.git.user = 'Oxidized'
- CFGS.user.output.git.email = 'o@example.com'
- CFGS.user.output.git.repo = File.join(Config::Root, 'oxidized.git')
- CFGS.save :user
+ Oxidized.asetus.user.output.git.user = 'Oxidized'
+ Oxidized.asetus.user.output.git.email = 'o@example.com'
+ Oxidized.asetus.user.output.git.repo = File.join(Config::Root, 'oxidized.git')
+ Oxidized.asetus.save :user
raise NoConfig, 'no output git config, edit ~/.config/oxidized/config'
end
@cfg.repo = File.expand_path @cfg.repo
diff --git a/lib/oxidized/source/csv.rb b/lib/oxidized/source/csv.rb
index 5064e5e..a0ce848 100644
--- a/lib/oxidized/source/csv.rb
+++ b/lib/oxidized/source/csv.rb
@@ -1,17 +1,17 @@
module Oxidized
class CSV < Source
def initialize
- @cfg = CFG.source.csv
+ @cfg = Oxidized.config.source.csv
super
end
def setup
if @cfg.empty?
- CFGS.user.source.csv.file = File.join(Config::Root, 'router.db')
- CFGS.user.source.csv.delimiter = /:/
- CFGS.user.source.csv.map.name = 0
- CFGS.user.source.csv.map.model = 1
- CFGS.save :user
+ Oxidized.asetus.user.source.csv.file = File.join(Config::Root, 'router.db')
+ Oxidized.asetus.user.source.csv.delimiter = /:/
+ Oxidized.asetus.user.source.csv.map.name = 0
+ Oxidized.asetus.user.source.csv.map.model = 1
+ Oxidized.asetus.save :user
raise NoConfig, 'no source csv config, edit ~/.config/oxidized/config'
end
end
@@ -19,7 +19,7 @@ class CSV < Source
def load
nodes = []
open(File.expand_path @cfg.file).each_line do |line|
- next if line.match /^\s*#/
+ next if line.match(/^\s*#/)
data = line.chomp.split @cfg.delimiter
next if data.empty?
# map node parameters
diff --git a/lib/oxidized/source/http.rb b/lib/oxidized/source/http.rb
index d2e3ea6..6e765cf 100644
--- a/lib/oxidized/source/http.rb
+++ b/lib/oxidized/source/http.rb
@@ -1,7 +1,7 @@
module Oxidized
class HTTP < Source
def initialize
- @cfg = CFG.source.http
+ @cfg = Oxidized.config.source.http
super
end
diff --git a/lib/oxidized/source/source.rb b/lib/oxidized/source/source.rb
index 3c1f255..7862dd1 100644
--- a/lib/oxidized/source/source.rb
+++ b/lib/oxidized/source/source.rb
@@ -2,7 +2,7 @@ module Oxidized
class Source
class NoConfig < OxidizedError; end
def initialize
- @map = (CFG.model_map or {})
+ @map = (Oxidized.config.model_map or {})
end
def map_model model
@map.has_key?(model) ? @map[model] : model
diff --git a/lib/oxidized/source/sql.rb b/lib/oxidized/source/sql.rb
index cd9ef4a..fc1caa8 100644
--- a/lib/oxidized/source/sql.rb
+++ b/lib/oxidized/source/sql.rb
@@ -8,12 +8,12 @@ class SQL < Source
def setup
if @cfg.empty?
- CFGS.user.source.sql.adapter = 'sqlite'
- CFGS.user.source.sql.database = File.join(Config::Root, 'sqlite.db')
- CFGS.user.source.sql.table = 'devices'
- CFGS.user.source.sql.map.name = 'name'
- CFGS.user.source.sql.map.model = 'rancid'
- CFGS.save :user
+ Oxidized.asetus.user.source.sql.adapter = 'sqlite'
+ Oxidized.asetus.user.source.sql.database = File.join(Config::Root, 'sqlite.db')
+ Oxidized.asetus.user.source.sql.table = 'devices'
+ Oxidized.asetus.user.source.sql.map.name = 'name'
+ Oxidized.asetus.user.source.sql.map.model = 'rancid'
+ Oxidized.asetus.save :user
raise NoConfig, 'no source sql config, edit ~/.config/oxidized/config'
end
end
@@ -44,7 +44,7 @@ class SQL < Source
def initialize
super
- @cfg = CFG.source.sql
+ @cfg = Oxidized.config.source.sql
end
def connect
diff --git a/lib/oxidized/string.rb b/lib/oxidized/string.rb
index 4bdfbf2..8bcb082 100644
--- a/lib/oxidized/string.rb
+++ b/lib/oxidized/string.rb
@@ -16,7 +16,7 @@ module Oxidized
# sets @cmd and @name unless @name is already set
def set_cmd command
@cmd = command
- @name = @cmd.strip.gsub(/\s+/, '_') if @name == nil
+ @name ||= @cmd.strip.gsub(/\s+/, '_')
end
def initialize str=''
diff --git a/lib/oxidized/version.rb b/lib/oxidized/version.rb
new file mode 100644
index 0000000..c2a0c0e
--- /dev/null
+++ b/lib/oxidized/version.rb
@@ -0,0 +1,3 @@
+module Oxidized
+ VERSION = '0.8.1'
+end
diff --git a/lib/oxidized/worker.rb b/lib/oxidized/worker.rb
index eea747e..b36929f 100644
--- a/lib/oxidized/worker.rb
+++ b/lib/oxidized/worker.rb
@@ -4,7 +4,7 @@ module Oxidized
class Worker
def initialize nodes
@nodes = nodes
- @jobs = Jobs.new CFG.threads, CFG.interval, @nodes
+ @jobs = Jobs.new(Oxidized.config.threads, Oxidized.config.interval, @nodes)
Thread.abort_on_exception = true
end
@@ -18,7 +18,7 @@ module Oxidized
# ask for next node in queue non destructive way
nextnode = @nodes.first
unless nextnode.last.nil?
- break if nextnode.last.end + CFG.interval > Time.now.utc
+ break if nextnode.last.end + Oxidized.config.interval > Time.now.utc
end
# shift nodes and get the next node
node = @nodes.get
@@ -48,7 +48,7 @@ module Oxidized
node.reset
else
msg = "#{node.name} status #{job.status}"
- if node.retry < CFG.retries
+ if node.retry < Oxidized.config.retries
node.retry += 1
msg += ", retry attempt #{node.retry}"
@nodes.next node.name