summaryrefslogtreecommitdiff
path: root/lib/oxidized/source/sql.rb
diff options
context:
space:
mode:
authorNeil Lathwood <neil@lathwood.co.uk>2018-04-27 10:51:39 +0100
committerNeil Lathwood <neil@lathwood.co.uk>2018-04-27 10:51:39 +0100
commit6574f129bca9633d728c178b12e49a2e9be89cdd (patch)
treea2d630fca3156658aea07469b9a5c3fdf00f6846 /lib/oxidized/source/sql.rb
parentd96cfac1f09ff4055f54ab604358290865d41f62 (diff)
parent34fd5369feee94ab45c5a81d7769b1df717e4c8c (diff)
Rebased from master
Diffstat (limited to 'lib/oxidized/source/sql.rb')
-rw-r--r--lib/oxidized/source/sql.rb107
1 files changed, 53 insertions, 54 deletions
diff --git a/lib/oxidized/source/sql.rb b/lib/oxidized/source/sql.rb
index 97064fa..dfcd7b4 100644
--- a/lib/oxidized/source/sql.rb
+++ b/lib/oxidized/source/sql.rb
@@ -1,68 +1,67 @@
module Oxidized
-class SQL < Source
- begin
- require 'sequel'
- rescue LoadError
- raise OxidizedError, 'sequel not found: sudo gem install sequel'
- end
-
- def setup
- if @cfg.empty?
- 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'
+ class SQL < Source
+ begin
+ require 'sequel'
+ rescue LoadError
+ raise OxidizedError, 'sequel not found: sudo gem install sequel'
end
- end
-
- def load node_want=nil
- nodes = []
- db = connect
- query = db[@cfg.table.to_sym]
- query = query.with_sql(@cfg.query) if @cfg.query?
- if node_want
- query = query.where(@cfg.map.name.to_sym=>node_want)
+ def setup
+ if @cfg.empty?
+ 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
- query.each do |node|
- # map node parameters
- keys = {}
- @cfg.map.each { |key, sql_column| keys[key.to_sym] = node_var_interpolate node[sql_column.to_sym] }
- keys[:model] = map_model keys[:model] if keys.key? :model
+ def load node_want=nill
+ nodes = []
+ db = connect
+ query = db[@cfg.table.to_sym]
+ query = query.with_sql(@cfg.query) if @cfg.query?
- # map node specific vars
- vars = {}
- @cfg.vars_map.each do |key, sql_column|
- vars[key.to_sym] = node_var_interpolate node[sql_column.to_sym]
+ if node_want
+ query = query.where(@cfg.map.name.to_sym=>node_want)
end
- keys[:vars] = vars unless vars.empty?
- nodes << keys
+ query.each do |node|
+ # map node parameters
+ keys = {}
+ @cfg.map.each { |key, sql_column| keys[key.to_sym] = node_var_interpolate node[sql_column.to_sym] }
+ keys[:model] = map_model keys[:model] if keys.has_key? :model
+
+ # map node specific vars
+ vars = {}
+ @cfg.vars_map.each do |key, sql_column|
+ vars[key.to_sym] = node_var_interpolate node[sql_column.to_sym]
+ end
+ keys[:vars] = vars unless vars.empty?
+
+ nodes << keys
+ end
+ db.disconnect
+ nodes
end
- db.disconnect
- nodes
- end
- private
+ private
- def initialize
- super
- @cfg = Oxidized.config.source.sql
- end
+ def initialize
+ super
+ @cfg = Oxidized.config.source.sql
+ end
- def connect
- Sequel.connect(:adapter => @cfg.adapter,
- :host => @cfg.host?,
- :user => @cfg.user?,
- :password => @cfg.password?,
- :database => @cfg.database)
- rescue Sequel::AdapterNotFound => error
- raise OxidizedError, "SQL adapter gem not installed: " + error.message
+ def connect
+ Sequel.connect(:adapter => @cfg.adapter,
+ :host => @cfg.host?,
+ :user => @cfg.user?,
+ :password => @cfg.password?,
+ :database => @cfg.database)
+ rescue Sequel::AdapterNotFound => error
+ raise OxidizedError, "SQL adapter gem not installed: " + error.message
+ end
end
-
-end
end