From e7a73ad32b2f195c48b7ec95648a35d3021b98f8 Mon Sep 17 00:00:00 2001 From: Trey Dockendorf Date: Mon, 29 Oct 2018 14:17:23 -0400 Subject: [PATCH] Add splunk_version fact --- lib/facter/splunk_version.rb | 17 ++++++++++++++++ spec/unit/facter/splunk_version_spec.rb | 26 +++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100755 lib/facter/splunk_version.rb create mode 100644 spec/unit/facter/splunk_version_spec.rb diff --git a/lib/facter/splunk_version.rb b/lib/facter/splunk_version.rb new file mode 100755 index 00000000..515d344c --- /dev/null +++ b/lib/facter/splunk_version.rb @@ -0,0 +1,17 @@ +Facter.add(:splunk_version) do + setcode do + value = nil + cmd = if File.exist?('C:/Program Files/Splunk/bin/splunk.exe') + '"C:/Program Files/Splunk/bin/splunk.exe" --version' + elsif File.exist?('/opt/splunk/bin/splunk') + '/opt/splunk/bin/splunk --version' + end + if cmd + output = Facter::Util::Resolution.exec(cmd) + if output =~ %r{^Splunk ([0-9\.]+) \(} # rubocop:disable Style/IfUnlessModifier + value = Regexp.last_match(1) + end + end + value + end +end diff --git a/spec/unit/facter/splunk_version_spec.rb b/spec/unit/facter/splunk_version_spec.rb new file mode 100644 index 00000000..aabd8a69 --- /dev/null +++ b/spec/unit/facter/splunk_version_spec.rb @@ -0,0 +1,26 @@ +require 'spec_helper' + +describe 'splunk_version Fact' do + before do + Facter.clear + end + + it 'returns version for Windows' do + allow(File).to receive(:exist?).with('C:/Program Files/Splunk/bin/splunk.exe').and_return(true) + allow(Facter::Util::Resolution).to receive(:exec).with('"C:/Program Files/Splunk/bin/splunk.exe" --version').and_return('Splunk 6.6.8 (build 6c27a8439c1e)') + expect(Facter.fact(:splunk_version).value).to eq('6.6.8') + end + + it 'returns version for Linux' do + allow(File).to receive(:exist?).with('C:/Program Files/Splunk/bin/splunk.exe').and_return(false) + allow(File).to receive(:exist?).with('/opt/splunk/bin/splunk').and_return(true) + allow(Facter::Util::Resolution).to receive(:exec).with('/opt/splunk/bin/splunk --version').and_return('Splunk 6.6.8 (build 6c27a8439c1e)') + expect(Facter.fact(:splunk_version).value).to eq('6.6.8') + end + + it 'returns nil' do + allow(File).to receive(:exist?).with('C:/Program Files/Splunk/bin/splunk.exe').and_return(false) + allow(File).to receive(:exist?).with('/opt/splunk/bin/splunk').and_return(false) + expect(Facter.fact(:splunk_version).value).to be_nil + end +end