From efa7ee3789ace917a66904252090986af0400c25 Mon Sep 17 00:00:00 2001
From: Anton Aksola <anton.aksola@nebula.fi>
Date: Mon, 5 May 2014 15:48:12 +0300
Subject: missing edits

---
 lib/oxidized/config.rb      | 11 -----------
 lib/oxidized/config/vars.rb |  6 +++---
 lib/oxidized/core.rb        |  1 +
 lib/oxidized/node.rb        |  2 +-
 lib/oxidized/source/csv.rb  |  7 +++++++
 5 files changed, 12 insertions(+), 15 deletions(-)

(limited to 'lib/oxidized')

diff --git a/lib/oxidized/config.rb b/lib/oxidized/config.rb
index fd120b6..97bd164 100644
--- a/lib/oxidized/config.rb
+++ b/lib/oxidized/config.rb
@@ -9,17 +9,6 @@ module Oxidized
     ModelDir  = File.join Directory, %w(lib oxidized model)
     SourceDir = File.join Directory, %w(lib oxidized source)
     Sleep     = 1
-
-    module Vars
-      # convenience method for accessing node, group or global level user variables
-      # nil values will be ignored
-      def vars name
-        r =   @node.vars[name]
-        r ||= CFG.groups[@node.group].vars[name.to_s] if CFG.groups.has_key?(@node.group)
-        r ||= CFG.vars[name.to_s]
-      end
-    end
-
   end
   class << self
     attr_accessor :mgr
diff --git a/lib/oxidized/config/vars.rb b/lib/oxidized/config/vars.rb
index bc94049..0d6aaa7 100644
--- a/lib/oxidized/config/vars.rb
+++ b/lib/oxidized/config/vars.rb
@@ -2,9 +2,9 @@ module Oxidized::Config::Vars
   # convenience method for accessing node, group or global level user variables
   # nil values will be ignored
   def vars name
-    r =   @node.vars[name]
-    r ||= CFG.groups[@node.group].vars[name.to_s] if CFG.groups.has_key?(@node.group)
-    r ||= CFG.vars[name.to_s]
+    r =   @node.vars[name] unless @node.vars.nil?
+    r ||= Oxidized::CFG.groups[@node.group].vars[name.to_s] if Oxidized::CFG.groups.has_key?(@node.group)
+    r ||= Oxidized::CFG.vars[name.to_s]
   end
 end
 
diff --git a/lib/oxidized/core.rb b/lib/oxidized/core.rb
index c826d1e..31e7d49 100644
--- a/lib/oxidized/core.rb
+++ b/lib/oxidized/core.rb
@@ -5,6 +5,7 @@ module Oxidized
   require 'oxidized/worker'
   require 'oxidized/nodes'
   require 'oxidized/manager'
+  require 'oxidized/config/vars'
   class << self
     def new *args
       Core.new args
diff --git a/lib/oxidized/node.rb b/lib/oxidized/node.rb
index 0537e45..65f0c1f 100644
--- a/lib/oxidized/node.rb
+++ b/lib/oxidized/node.rb
@@ -143,7 +143,7 @@ module Oxidized
       if not Oxidized.mgr.model[model]
         Oxidized.mgr.add_model model or raise ModelNotFound, "#{model} not found for node #{ip}"
       end
-      Oxidized.mgr.model[model].new 
+      Oxidized.mgr.model[model].new
     end
 
   end
diff --git a/lib/oxidized/source/csv.rb b/lib/oxidized/source/csv.rb
index 9d291c7..113c272 100644
--- a/lib/oxidized/source/csv.rb
+++ b/lib/oxidized/source/csv.rb
@@ -20,11 +20,18 @@ class CSV < Source
     nodes = []
     open(@cfg.file).each_line do |line|
       data  = line.chomp.split @cfg.delimiter
+      # map node parameters
       keys = {}
       @cfg.map.each do |key, position|
         keys[key.to_sym] = data[position]
       end
       keys[:model] = map_model keys[:model] if keys.key? :model
+      
+      # map node specific vars, empty value is considered as nil
+      vars = {}
+      @cfg.vars_map.each { |key, position| vars[key.to_sym] = data[position].to_s.empty? ? nil : data[position] }
+      keys[:vars] = vars unless vars.empty?
+
       nodes << keys
     end
     nodes
-- 
cgit v1.2.3