Class: Oxidized::CSV
Instance Method Summary collapse
-
#initialize ⇒ CSV
constructor
A new instance of CSV.
- #load(_node_want = nil) ⇒ Object
- #setup ⇒ Object
Methods inherited from Source
#map_model, #node_var_interpolate
Constructor Details
#initialize ⇒ CSV
Returns a new instance of CSV.
3 4 5 6 |
# File 'lib/oxidized/source/csv.rb', line 3 def initialize @cfg = Oxidized.config.source.csv super end |
Instance Method Details
#load(_node_want = nil) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/oxidized/source/csv.rb', line 21 def load _node_want = nil nodes = [] file = File.(@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 # 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 |
#setup ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/oxidized/source/csv.rb', line 8 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 require 'gpgme' if @cfg.gpg? end |