diff options
| author | Saku Ytti <saku@ytti.fi> | 2014-04-14 16:28:23 +0300 | 
|---|---|---|
| committer | Saku Ytti <saku@ytti.fi> | 2014-04-14 16:28:23 +0300 | 
| commit | 57a8f4bc04b4f87ad0d7028dcbf29b96d49eaffd (patch) | |
| tree | 82567c791b0114e62fa3b978eb2bb95733d6488b /lib/oxidized/source | |
| parent | 1a1794b2b3ac99764852546c550fd7988f84c37b (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.rb | 27 | ||||
| -rw-r--r-- | lib/oxidized/source/source.rb | 1 | ||||
| -rw-r--r-- | lib/oxidized/source/sql.rb | 29 | 
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  | 
