diff options
-rw-r--r-- | lib/oxidized/node.rb | 14 | ||||
-rw-r--r-- | spec/node_spec.rb | 25 |
2 files changed, 38 insertions, 1 deletions
diff --git a/lib/oxidized/node.rb b/lib/oxidized/node.rb index 7a278a9..a1504b9 100644 --- a/lib/oxidized/node.rb +++ b/lib/oxidized/node.rb @@ -24,7 +24,7 @@ module Oxidized @vars = opt[:vars] @stats = Stats.new @retry = 0 - @repo = Oxidized.config.output.git.repo + @repo = resolve_repo # model instance needs to access node instance @model.node = self @@ -170,5 +170,17 @@ module Oxidized Oxidized.mgr.model[model].new end + def resolve_repo + git = Oxidized.config.output.git + cfg_repo = git.repo + + if group && !git.single_repo? + basedir = File.dirname(cfg_repo) + File.join(basedir, "#{group}.git") + else + cfg_repo + end + end + end end diff --git a/spec/node_spec.rb b/spec/node_spec.rb index c568463..f9c912e 100644 --- a/spec/node_spec.rb +++ b/spec/node_spec.rb @@ -3,6 +3,7 @@ require 'spec_helper' describe Oxidized::Node do before(:each) do Oxidized.stubs(:asetus).returns(Asetus.new) + Oxidized.config.output.git.repo = '/tmp/repository.git' Oxidized::Node.any_instance.stubs(:resolve_output) @node = Oxidized::Node.new(name: 'example.com', @@ -41,4 +42,28 @@ describe Oxidized::Node do status.must_equal :success end end + + describe '#repo' do + it 'when there is no groups' do + @node.repo.must_equal '/tmp/repository.git' + end + + describe 'when there are groups' do + let(:node) do + Oxidized::Node.new({ + ip: '127.0.0.1', group: 'ggrroouupp', model: 'junos' + }) + end + + it 'with only one repository' do + Oxidized.config.output.git.single_repo = true + node.repo.must_equal '/tmp/repository.git' + end + + it 'with more than one repository' do + Oxidized.config.output.git.single_repo = false + node.repo.must_equal '/tmp/ggrroouupp.git' + end + end + end end |