summaryrefslogtreecommitdiff
path: root/lib/oxidized/source
diff options
context:
space:
mode:
authorSaku Ytti <saku@ytti.fi>2014-04-14 16:28:23 +0300
committerSaku Ytti <saku@ytti.fi>2014-04-14 16:28:23 +0300
commit57a8f4bc04b4f87ad0d7028dcbf29b96d49eaffd (patch)
tree82567c791b0114e62fa3b978eb2bb95733d6488b /lib/oxidized/source
parent1a1794b2b3ac99764852546c550fd7988f84c37b (diff)
Use 'asetus' for configuration files
Main benefits a) we get support for system wide configs b) we don't use symbols in config file, they're confusing to non-rubyist
Diffstat (limited to 'lib/oxidized/source')
-rw-r--r--lib/oxidized/source/csv.rb27
-rw-r--r--lib/oxidized/source/source.rb1
-rw-r--r--lib/oxidized/source/sql.rb29
3 files changed, 26 insertions, 31 deletions
diff --git a/lib/oxidized/source/csv.rb b/lib/oxidized/source/csv.rb
index cf73fc8..9d291c7 100644
--- a/lib/oxidized/source/csv.rb
+++ b/lib/oxidized/source/csv.rb
@@ -1,31 +1,28 @@
module Oxidized
class CSV < Source
def initialize
- @cfg = CFG.source[:csv]
+ @cfg = CFG.source.csv
super
end
def setup
- if not @cfg
- CFG.source[:csv] = {
- :file => File.join(Config::Root, 'router.db'),
- :delimiter => /:/,
- :map => {
- :name => 0,
- :model => 1,
- }
- }
- CFG.save
+ 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
+ raise NoConfig, 'no source csv config, edit ~/.config/oxidized/config'
end
end
def load
nodes = []
- open(@cfg[:file]).each_line do |line|
- data = line.chomp.split @cfg[:delimiter]
+ open(@cfg.file).each_line do |line|
+ data = line.chomp.split @cfg.delimiter
keys = {}
- @cfg[:map].each do |key, position|
- keys[key] = data[position]
+ @cfg.map.each do |key, position|
+ keys[key.to_sym] = data[position]
end
keys[:model] = map_model keys[:model] if keys.key? :model
nodes << keys
diff --git a/lib/oxidized/source/source.rb b/lib/oxidized/source/source.rb
index f5976a0..93c9b6f 100644
--- a/lib/oxidized/source/source.rb
+++ b/lib/oxidized/source/source.rb
@@ -1,5 +1,6 @@
module Oxidized
class Source
+ class NoConfig < OxidizedError; end
class << self
def inherited klass
Oxidized.mgr.loader = { :class => klass }
diff --git a/lib/oxidized/source/sql.rb b/lib/oxidized/source/sql.rb
index 385f632..f84a7a8 100644
--- a/lib/oxidized/source/sql.rb
+++ b/lib/oxidized/source/sql.rb
@@ -4,34 +4,31 @@ class SQL < Source
def initialize
super
- @cfg = CFG.source[:sql]
+ @cfg = CFG.source.sql
end
def setup
- if not @cfg
- CFG.source[:sql] = {
- :adapter => 'sqlite',
- :file => File.join(Config::Root, 'sqlite.db'),
- :table => 'devices',
- :map => {
- :name => 'name',
- :model => 'rancid',
- }
- }
- CFG.save
+ if @cfg.empty?
+ CFGS.user.source.sql.adapter = 'sqlite'
+ CFGS.user.source.sql.file = 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
+ raise NoConfig, 'no source sql config, edit ~/.config/oxidized/config'
end
end
def load
nodes = []
- db = case @cfg[:adapter]
+ db = case @cfg.adapter
when 'sqlite'
require 'sqlite3'
- Sequel.sqlite @cfg[:file]
+ Sequel.sqlite @cfg.file
end
- db[@cfg[:table].to_sym].each do |node|
+ db[@cfg.table.to_sym].each do |node|
keys = {}
- @cfg[:map].each { |key, sql_column| keys[key] = node[sql_column.to_sym] }
+ @cfg.map.each { |key, sql_column| keys[key.to_sym] = node[sql_column.to_sym] }
keys[:model] = map_model keys[:model] if keys.key? :model
nodes << keys
end