summaryrefslogtreecommitdiff
path: root/lib/oxidized/source/sql.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/oxidized/source/sql.rb')
-rw-r--r--lib/oxidized/source/sql.rb29
1 files changed, 13 insertions, 16 deletions
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