diff options
author | KodApa85 <parsons151185@gmail.com> | 2018-04-27 13:48:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-27 13:48:47 +0100 |
commit | a40bb72e78755891ec84f5a4378c30114dae8316 (patch) | |
tree | 5e057527f163fa1bea10cbdc7318b035ff939200 /lib/oxidized/source/csv.rb | |
parent | dbbe6af563072b62e373a9824c6a23482d20896e (diff) | |
parent | f530a50a949310aa9996d764eeaaba7458b7d6b6 (diff) |
Merge branch 'master' into xgs4600-cli
Diffstat (limited to 'lib/oxidized/source/csv.rb')
-rw-r--r-- | lib/oxidized/source/csv.rb | 89 |
1 files changed, 44 insertions, 45 deletions
diff --git a/lib/oxidized/source/csv.rb b/lib/oxidized/source/csv.rb index 4814bd7..ae1c0a9 100644 --- a/lib/oxidized/source/csv.rb +++ b/lib/oxidized/source/csv.rb @@ -1,54 +1,53 @@ module Oxidized -class CSV < Source - def initialize - @cfg = Oxidized.config.source.csv - super - end - - def setup - if @cfg.empty? - 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.user.source.csv.gpg = false - Oxidized.asetus.save :user - raise NoConfig, 'no source csv config, edit ~/.config/oxidized/config' + class CSV < Source + def initialize + @cfg = Oxidized.config.source.csv + super end - require 'gpgme' if @cfg.gpg? - end - def load - nodes = [] - file = File.expand_path(@cfg.file) - file = if @cfg.gpg? - crypto = GPGME::Crypto.new password: @cfg.gpg_password - file = crypto.decrypt(File.open(file)).to_s - else - open(file) - end - file.each_line do |line| - next if line.match(/^\s*#/) - data = line.chomp.split(@cfg.delimiter, -1) - next if data.empty? - # map node parameters - keys = {} - @cfg.map.each do |key, position| - keys[key.to_sym] = node_var_interpolate data[position] + def setup + if @cfg.empty? + 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.user.source.csv.gpg = false + Oxidized.asetus.save :user + raise NoConfig, 'no source csv config, edit ~/.config/oxidized/config' end - keys[:model] = map_model keys[:model] if keys.key? :model + require 'gpgme' if @cfg.gpg? + end - # map node specific vars - vars = {} - @cfg.vars_map.each do |key, position| - vars[key.to_sym] = node_var_interpolate data[position] - end - keys[:vars] = vars unless vars.empty? + def load + nodes = [] + file = File.expand_path(@cfg.file) + file = if @cfg.gpg? + crypto = GPGME::Crypto.new password: @cfg.gpg_password + file = crypto.decrypt(File.open(file)).to_s + else + open(file) + end + file.each_line do |line| + next if line.match(/^\s*#/) + data = line.chomp.split(@cfg.delimiter, -1) + next if data.empty? + # map node parameters + keys = {} + @cfg.map.each do |key, position| + keys[key.to_sym] = node_var_interpolate data[position] + end + keys[:model] = map_model keys[:model] if keys.has_key? :model - nodes << keys + # map node specific vars + vars = {} + @cfg.vars_map.each do |key, position| + vars[key.to_sym] = node_var_interpolate data[position] + end + keys[:vars] = vars unless vars.empty? + + nodes << keys + end + nodes end - nodes end - -end end |