summaryrefslogtreecommitdiff
path: root/lib/oxidized/node.rb
diff options
context:
space:
mode:
authorAnton Aksola <anton.aksola@nebula.fi>2014-05-05 09:40:11 +0300
committerAnton Aksola <anton.aksola@nebula.fi>2014-05-05 09:40:11 +0300
commit16795edea8e14230b67b28e7e8503c2daffd69d2 (patch)
tree4005091b6167c400a59b309e28ee280423edce8f /lib/oxidized/node.rb
parent34af261b7928ba7d62496d2d87fbe64b1badc930 (diff)
Introduce node and group level vars
Variables can now be fed to model from multiple locations. In order of preference: 1) node (from source) 2) group 3) global In a model vars should be accessed via 'vars' helper method though it is not required. Helper method ignores nil values so care needs to taken when designing model behaviour. Support for node level vars is currently available on sql source via 'vars_map' configuration. Following example populates node vars 'enable' and 'somevariable' from sql columns 'var_enable' and 'var_somevariable' sql: adapter: sqlite file: /home/aakso/.config/oxidized/sqrouter.db table: nodes map: name: hostname model: model group: node_group username: username password: password vars_map: enable: var_enablepw somevariable: var_somevariable
Diffstat (limited to 'lib/oxidized/node.rb')
-rw-r--r--lib/oxidized/node.rb9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/oxidized/node.rb b/lib/oxidized/node.rb
index fce4c21..0537e45 100644
--- a/lib/oxidized/node.rb
+++ b/lib/oxidized/node.rb
@@ -3,7 +3,7 @@ module Oxidized
class MethodNotFound < OxidizedError; end
class ModelNotFound < OxidizedError; end
class Node
- attr_reader :name, :ip, :model, :input, :output, :group, :auth, :prompt
+ attr_reader :name, :ip, :model, :input, :output, :group, :auth, :prompt, :vars
attr_accessor :last, :running, :user, :msg, :from
alias :running? :running
def initialize opt
@@ -15,6 +15,10 @@ module Oxidized
@model = resolve_model opt
@auth = resolve_auth opt
@prompt = resolve_prompt opt
+ @vars = opt[:vars]
+
+ # model instance needs to access node instance
+ @model.node = self
end
def run
@@ -73,6 +77,7 @@ module Oxidized
:group => @group,
:model => @model.class.to_s,
:last => nil,
+ :vars => @vars,
}
h[:full_name] = [@group, @name].join('/') if @group
if @last
@@ -138,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