diff options
author | Anton Aksola <anton.aksola@nebula.fi> | 2014-05-05 09:40:11 +0300 |
---|---|---|
committer | Anton Aksola <anton.aksola@nebula.fi> | 2014-05-05 09:40:11 +0300 |
commit | 16795edea8e14230b67b28e7e8503c2daffd69d2 (patch) | |
tree | 4005091b6167c400a59b309e28ee280423edce8f /lib/oxidized/node.rb | |
parent | 34af261b7928ba7d62496d2d87fbe64b1badc930 (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.rb | 9 |
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 |