From cbfa1b0b425fe3ffa8681c3649cfa9e791d88daa Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Thu, 11 Jun 2020 16:08:29 +0300 Subject: [PATCH 01/25] (FACT-2638) Add AIO version to gem if it exists. --- agent/facter-ng.gemspec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/agent/facter-ng.gemspec b/agent/facter-ng.gemspec index f7d8e8d2c..2ed72a1dd 100644 --- a/agent/facter-ng.gemspec +++ b/agent/facter-ng.gemspec @@ -21,6 +21,9 @@ Gem::Specification.new do |spec| Dir.glob('**/*') end + # Add puppet AIO version version file if it exists + spec.files << 'agent/AIO_VERSION' if File.exist?('agent/AIO_VERSION') + spec.required_ruby_version = '~> 2.3' spec.files.reject! do |f| f.match(%r{^(test|spec|features)/}) From 0c7f2e9fc8328fcf3c488ae3ac6fccb3c0da0534 Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Thu, 11 Jun 2020 16:14:56 +0300 Subject: [PATCH 02/25] (FACT-2638) Update AIO version resolver. --- lib/resolvers/agent_resolver.rb | 2 +- spec/facter/resolvers/aio_agent_version_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/resolvers/agent_resolver.rb b/lib/resolvers/agent_resolver.rb index 00166b22e..b84669038 100644 --- a/lib/resolvers/agent_resolver.rb +++ b/lib/resolvers/agent_resolver.rb @@ -14,7 +14,7 @@ def post_resolve(fact_name) end def read_agent_version - version_file = ::File.join(ROOT_DIR, 'lib/puppet/VERSION') + version_file = ::File.join(ROOT_DIR, 'agent/AIO_VERSION') @fact_list[:aio_agent_version] = ::File.read(version_file) end end diff --git a/spec/facter/resolvers/aio_agent_version_spec.rb b/spec/facter/resolvers/aio_agent_version_spec.rb index 7e8c745e5..24194c199 100644 --- a/spec/facter/resolvers/aio_agent_version_spec.rb +++ b/spec/facter/resolvers/aio_agent_version_spec.rb @@ -3,7 +3,7 @@ describe Facter::Resolvers::Agent do describe '#resolve' do it 'detects puppet version' do - allow(File).to receive(:read).with("#{ROOT_DIR}/lib/puppet/VERSION").and_return('7.0.1') + allow(File).to receive(:read).with("#{ROOT_DIR}/agent/AIO_VERSION").and_return('7.0.1') expect(Facter::Resolvers::Agent.resolve(:aio_agent_version)).to eql('7.0.1') end end From 1cccddcaeebb8d02cc1af782b9dd59bdf5c541ee Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Thu, 11 Jun 2020 16:28:48 +0300 Subject: [PATCH 03/25] (FACT-2638) Add aio_agent_version fact for all platforms. --- lib/facts/aix/aio_agent_version.rb | 14 +++++++++++ lib/facts/linux/aio_agent_version.rb | 14 +++++++++++ lib/facts/macosx/aio_agent_version.rb | 14 +++++++++++ lib/facts/solaris/aio_agent_version.rb | 14 +++++++++++ lib/facts/windows/aio_agent_version.rb | 14 +++++++++++ .../facts/aix/aio_agent_version_spec.rb | 23 +++++++++++++++++++ .../facts/linux/aio_agent_version_spec.rb | 23 +++++++++++++++++++ .../facts/macosx/aio_agent_version_spec.rb | 23 +++++++++++++++++++ .../facts/solaris/aio_agent_version_spec.rb | 23 +++++++++++++++++++ 9 files changed, 162 insertions(+) create mode 100644 lib/facts/aix/aio_agent_version.rb create mode 100644 lib/facts/linux/aio_agent_version.rb create mode 100644 lib/facts/macosx/aio_agent_version.rb create mode 100644 lib/facts/solaris/aio_agent_version.rb create mode 100644 lib/facts/windows/aio_agent_version.rb create mode 100644 spec/facter/facts/aix/aio_agent_version_spec.rb create mode 100644 spec/facter/facts/linux/aio_agent_version_spec.rb create mode 100644 spec/facter/facts/macosx/aio_agent_version_spec.rb create mode 100644 spec/facter/facts/solaris/aio_agent_version_spec.rb diff --git a/lib/facts/aix/aio_agent_version.rb b/lib/facts/aix/aio_agent_version.rb new file mode 100644 index 000000000..9bf02b646 --- /dev/null +++ b/lib/facts/aix/aio_agent_version.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module Facts + module Aix + class AioAgentVersion + FACT_NAME = 'aio_agent_version' + + def call_the_resolver + fact_value = Facter::Resolvers::Agent.resolve(:aio_agent_version) + Facter::ResolvedFact.new(FACT_NAME, fact_value) + end + end + end +end diff --git a/lib/facts/linux/aio_agent_version.rb b/lib/facts/linux/aio_agent_version.rb new file mode 100644 index 000000000..a69efbee2 --- /dev/null +++ b/lib/facts/linux/aio_agent_version.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module Facts + module Linux + class AioAgentVersion + FACT_NAME = 'aio_agent_version' + + def call_the_resolver + fact_value = Facter::Resolvers::Agent.resolve(:aio_agent_version) + Facter::ResolvedFact.new(FACT_NAME, fact_value) + end + end + end +end diff --git a/lib/facts/macosx/aio_agent_version.rb b/lib/facts/macosx/aio_agent_version.rb new file mode 100644 index 000000000..7971aecc9 --- /dev/null +++ b/lib/facts/macosx/aio_agent_version.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module Facts + module Macosx + class AioAgentVersion + FACT_NAME = 'aio_agent_version' + + def call_the_resolver + fact_value = Facter::Resolvers::Agent.resolve(:aio_agent_version) + Facter::ResolvedFact.new(FACT_NAME, fact_value) + end + end + end +end diff --git a/lib/facts/solaris/aio_agent_version.rb b/lib/facts/solaris/aio_agent_version.rb new file mode 100644 index 000000000..6177ed049 --- /dev/null +++ b/lib/facts/solaris/aio_agent_version.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module Facts + module Solaris + class AioAgentVersion + FACT_NAME = 'aio_agent_version' + + def call_the_resolver + fact_value = Facter::Resolvers::Agent.resolve(:aio_agent_version) + Facter::ResolvedFact.new(FACT_NAME, fact_value) + end + end + end +end diff --git a/lib/facts/windows/aio_agent_version.rb b/lib/facts/windows/aio_agent_version.rb new file mode 100644 index 000000000..79dc282e6 --- /dev/null +++ b/lib/facts/windows/aio_agent_version.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module Facts + module Windows + class AioAgentVersion + FACT_NAME = 'aio_agent_version' + + def call_the_resolver + fact_value = Facter::Resolvers::Agent.resolve(:aio_agent_version) + Facter::ResolvedFact.new(FACT_NAME, fact_value) + end + end + end +end diff --git a/spec/facter/facts/aix/aio_agent_version_spec.rb b/spec/facter/facts/aix/aio_agent_version_spec.rb new file mode 100644 index 000000000..435d6dba2 --- /dev/null +++ b/spec/facter/facts/aix/aio_agent_version_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +describe Facts::Aix::AioAgentVersion do + describe '#call_the_resolver' do + subject(:fact) { Facts::Aix::AioAgentVersion.new } + + let(:value) { '1.2.3' } + + before do + allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) + end + + it 'calls Facter::Resolvers::Agent' do + fact.call_the_resolver + expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) + end + + it 'returns aio_agent_version fact' do + expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ + have_attributes(name: 'aio_agent_version', value: value) + end + end +end diff --git a/spec/facter/facts/linux/aio_agent_version_spec.rb b/spec/facter/facts/linux/aio_agent_version_spec.rb new file mode 100644 index 000000000..576e5dd15 --- /dev/null +++ b/spec/facter/facts/linux/aio_agent_version_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +describe Facts::Linux::AioAgentVersion do + describe '#call_the_resolver' do + subject(:fact) { Facts::Linux::AioAgentVersion.new } + + let(:value) { '1.2.3' } + + before do + allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) + end + + it 'calls Facter::Resolvers::Agent' do + fact.call_the_resolver + expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) + end + + it 'returns aio_agent_version fact' do + expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ + have_attributes(name: 'aio_agent_version', value: value) + end + end +end diff --git a/spec/facter/facts/macosx/aio_agent_version_spec.rb b/spec/facter/facts/macosx/aio_agent_version_spec.rb new file mode 100644 index 000000000..428960995 --- /dev/null +++ b/spec/facter/facts/macosx/aio_agent_version_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +describe Facts::Macosx::AioAgentVersion do + describe '#call_the_resolver' do + subject(:fact) { Facts::Macosx::AioAgentVersion.new } + + let(:value) { '1.2.3' } + + before do + allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) + end + + it 'calls Facter::Resolvers::Agent' do + fact.call_the_resolver + expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) + end + + it 'returns aio_agent_version fact' do + expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ + have_attributes(name: 'aio_agent_version', value: value) + end + end +end diff --git a/spec/facter/facts/solaris/aio_agent_version_spec.rb b/spec/facter/facts/solaris/aio_agent_version_spec.rb new file mode 100644 index 000000000..511d6c6ae --- /dev/null +++ b/spec/facter/facts/solaris/aio_agent_version_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +describe Facts::Solaris::AioAgentVersion do + describe '#call_the_resolver' do + subject(:fact) { Facts::Solaris::AioAgentVersion.new } + + let(:value) { '1.2.3' } + + before do + allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) + end + + it 'calls Facter::Resolvers::Agent' do + fact.call_the_resolver + expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) + end + + it 'returns aio_agent_version fact' do + expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ + have_attributes(name: 'aio_agent_version', value: value) + end + end +end From cbb420b0c9b10adbf13ddeb8f56d91c6e008c28c Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Fri, 12 Jun 2020 14:08:18 +0300 Subject: [PATCH 04/25] (FACT-2638) Remove AIO_VERSION file from gem, as the AIO version will be determined by other means. --- agent/facter-ng.gemspec | 3 --- 1 file changed, 3 deletions(-) diff --git a/agent/facter-ng.gemspec b/agent/facter-ng.gemspec index 2ed72a1dd..f7d8e8d2c 100644 --- a/agent/facter-ng.gemspec +++ b/agent/facter-ng.gemspec @@ -21,9 +21,6 @@ Gem::Specification.new do |spec| Dir.glob('**/*') end - # Add puppet AIO version version file if it exists - spec.files << 'agent/AIO_VERSION' if File.exist?('agent/AIO_VERSION') - spec.required_ruby_version = '~> 2.3' spec.files.reject! do |f| f.match(%r{^(test|spec|features)/}) From a9078591d7072cbf6ae0ac5459e1e21ea5d6b271 Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Fri, 12 Jun 2020 15:11:41 +0300 Subject: [PATCH 05/25] (FACT-2638) Add resolver that read puppet path from registry --- lib/facts/windows/aio_agent_version.rb | 2 +- lib/resolvers/windows/aio_agent_version.rb | 36 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 lib/resolvers/windows/aio_agent_version.rb diff --git a/lib/facts/windows/aio_agent_version.rb b/lib/facts/windows/aio_agent_version.rb index 79dc282e6..2f6a4ccca 100644 --- a/lib/facts/windows/aio_agent_version.rb +++ b/lib/facts/windows/aio_agent_version.rb @@ -6,7 +6,7 @@ class AioAgentVersion FACT_NAME = 'aio_agent_version' def call_the_resolver - fact_value = Facter::Resolvers::Agent.resolve(:aio_agent_version) + fact_value = Facter::Resolvers::AioAgentVersion.resolve(:path) Facter::ResolvedFact.new(FACT_NAME, fact_value) end end diff --git a/lib/resolvers/windows/aio_agent_version.rb b/lib/resolvers/windows/aio_agent_version.rb new file mode 100644 index 000000000..73c42a5a6 --- /dev/null +++ b/lib/resolvers/windows/aio_agent_version.rb @@ -0,0 +1,36 @@ + +# frozen_string_literal: true + +module Facter + module Resolvers + class AioAgentVersion < BaseResolver + @log = Facter::Log.new(self) + @semaphore = Mutex.new + @fact_list ||= {} + + class << self + private + + def post_resolve(fact_name) + @fact_list.fetch(fact_name) { read_version(fact_name) } + end + + + def read_version(fact_name) + reg = ::Win32::Registry::HKEY_LOCAL_MACHINE.open('SOFTWARE\\Puppet Labs\\Puppet') + build_fact_list(reg) + reg.close + + @fact_list[fact_name] + + end + + def build_fact_list(reg) + # rubocop:disable Performance/InefficientHashSearch + @fact_list[:path] = reg['RememberedInstallDir64'] if reg.keys.include?('RememberedInstallDir64') + # rubocop:enable Performance/InefficientHashSearch + end + end + end + end +end From bf67529d04927b186059909017f42791f67a7ae9 Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Fri, 12 Jun 2020 16:49:51 +0300 Subject: [PATCH 06/25] (FACT-2638) Read Puppet AIO path from registry. --- lib/facts/windows/aio_agent_version.rb | 2 +- lib/resolvers/windows/aio_agent_version.rb | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/facts/windows/aio_agent_version.rb b/lib/facts/windows/aio_agent_version.rb index 2f6a4ccca..10faa9351 100644 --- a/lib/facts/windows/aio_agent_version.rb +++ b/lib/facts/windows/aio_agent_version.rb @@ -6,7 +6,7 @@ class AioAgentVersion FACT_NAME = 'aio_agent_version' def call_the_resolver - fact_value = Facter::Resolvers::AioAgentVersion.resolve(:path) + fact_value = Facter::Resolvers::AioAgentVersion.resolve(:aio_version) Facter::ResolvedFact.new(FACT_NAME, fact_value) end end diff --git a/lib/resolvers/windows/aio_agent_version.rb b/lib/resolvers/windows/aio_agent_version.rb index 73c42a5a6..792fded4a 100644 --- a/lib/resolvers/windows/aio_agent_version.rb +++ b/lib/resolvers/windows/aio_agent_version.rb @@ -4,7 +4,6 @@ module Facter module Resolvers class AioAgentVersion < BaseResolver - @log = Facter::Log.new(self) @semaphore = Mutex.new @fact_list ||= {} @@ -26,9 +25,11 @@ def read_version(fact_name) end def build_fact_list(reg) - # rubocop:disable Performance/InefficientHashSearch - @fact_list[:path] = reg['RememberedInstallDir64'] if reg.keys.include?('RememberedInstallDir64') - # rubocop:enable Performance/InefficientHashSearch + puppet_aio_path = reg.read('RememberedInstallDir64') + aio_version = Util::FileHelper.safe_read(puppet_aio_path, nil) + @fact_list[:aio_version] = aio_version + rescue Exception => e + log.error("Could not read Puppet AIO path from registry") end end end From d3901bb675ad6c5a5bfcc74afb57a7a93a36f926 Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Mon, 15 Jun 2020 10:27:59 +0300 Subject: [PATCH 07/25] (FACT-2638) Append VERSION file to path. --- lib/resolvers/windows/aio_agent_version.rb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/resolvers/windows/aio_agent_version.rb b/lib/resolvers/windows/aio_agent_version.rb index 792fded4a..afdba03d3 100644 --- a/lib/resolvers/windows/aio_agent_version.rb +++ b/lib/resolvers/windows/aio_agent_version.rb @@ -21,16 +21,18 @@ def read_version(fact_name) reg.close @fact_list[fact_name] - end - def build_fact_list(reg) - puppet_aio_path = reg.read('RememberedInstallDir64') - aio_version = Util::FileHelper.safe_read(puppet_aio_path, nil) - @fact_list[:aio_version] = aio_version - rescue Exception => e - log.error("Could not read Puppet AIO path from registry") - end + def build_fact_list(reg) + puppet_aio_path = reg.read('RememberedInstallDir64')[1] + puppet_aio_version_path = File.join(puppet_aio_path, 'VERSION') + + aio_version = Util::FileHelper.safe_read(puppet_aio_version_path, nil) + @fact_list[:aio_version] = aio_version + rescue Win32::Registry::Error => e + log.error("Could not read Puppet AIO path from registry") + @fact_list[:aio_version] = nil + end end end end From 99c977b10cb4ce7a80b75e6edfeb1e850b549b22 Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Mon, 15 Jun 2020 10:46:25 +0300 Subject: [PATCH 08/25] (FACT-2638) Rubocop fixes. --- lib/resolvers/windows/aio_agent_version.rb | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/resolvers/windows/aio_agent_version.rb b/lib/resolvers/windows/aio_agent_version.rb index afdba03d3..1c9be3fe3 100644 --- a/lib/resolvers/windows/aio_agent_version.rb +++ b/lib/resolvers/windows/aio_agent_version.rb @@ -1,4 +1,3 @@ - # frozen_string_literal: true module Facter @@ -14,7 +13,6 @@ def post_resolve(fact_name) @fact_list.fetch(fact_name) { read_version(fact_name) } end - def read_version(fact_name) reg = ::Win32::Registry::HKEY_LOCAL_MACHINE.open('SOFTWARE\\Puppet Labs\\Puppet') build_fact_list(reg) @@ -27,10 +25,10 @@ def build_fact_list(reg) puppet_aio_path = reg.read('RememberedInstallDir64')[1] puppet_aio_version_path = File.join(puppet_aio_path, 'VERSION') - aio_version = Util::FileHelper.safe_read(puppet_aio_version_path, nil) - @fact_list[:aio_version] = aio_version - rescue Win32::Registry::Error => e - log.error("Could not read Puppet AIO path from registry") + @fact_list[:aio_version] = Util::FileHelper.safe_read(puppet_aio_version_path, nil).chomp + rescue Win32::Registry::Error + log.error('Could not read Puppet AIO path from registry') + @fact_list[:aio_version] = nil end end From 499068d86563b41d79c772ab9e9fb272c3437c24 Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Mon, 15 Jun 2020 11:32:48 +0300 Subject: [PATCH 09/25] (FACT-2638) Read from different registry record if os is 32 bit. --- lib/resolvers/windows/aio_agent_version.rb | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/resolvers/windows/aio_agent_version.rb b/lib/resolvers/windows/aio_agent_version.rb index 1c9be3fe3..30ebdea90 100644 --- a/lib/resolvers/windows/aio_agent_version.rb +++ b/lib/resolvers/windows/aio_agent_version.rb @@ -22,14 +22,26 @@ def read_version(fact_name) end def build_fact_list(reg) - puppet_aio_path = reg.read('RememberedInstallDir64')[1] - puppet_aio_version_path = File.join(puppet_aio_path, 'VERSION') + puppet_aio_path = read_for_64_bit(reg) || read_for_32_bit(reg) + + return unless puppet_aio_path + puppet_aio_version_path = File.join(puppet_aio_path, 'VERSION') @fact_list[:aio_version] = Util::FileHelper.safe_read(puppet_aio_version_path, nil).chomp + end + + def read_for_64_bit(reg) + reg.read('RememberedInstallDir64')[1] rescue Win32::Registry::Error - log.error('Could not read Puppet AIO path from registry') + log.debug('Could not read Puppet AIO path from 64 bit registry') + nil + end - @fact_list[:aio_version] = nil + def read_for_32_bit(reg) + reg.read('RememberedInstallDir')[1] + rescue Win32::Registry::Error + log.debug('Could not read Puppet AIO path from 32 bit registry') + nil end end end From 4299f20bf4d879bf46b9e04e0df57a5c0000b039 Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Mon, 15 Jun 2020 12:13:02 +0300 Subject: [PATCH 10/25] (FACT-2638) Remove unused resolver and comment AIO agent facts for platforms that are not yet implemented. --- lib/facts/aix/aio_agent_version.rb | 2 +- lib/facts/linux/aio_agent_version.rb | 2 +- lib/facts/macosx/aio_agent_version.rb | 2 +- lib/facts/solaris/aio_agent_version.rb | 2 +- lib/resolvers/agent_resolver.rb | 23 ---------------- .../facts/aix/aio_agent_version_spec.rb | 26 +++++++++---------- .../facts/linux/aio_agent_version_spec.rb | 26 +++++++++---------- .../facts/macosx/aio_agent_version_spec.rb | 26 +++++++++---------- .../facts/solaris/aio_agent_version_spec.rb | 26 +++++++++---------- .../resolvers/aio_agent_version_spec.rb | 10 +++---- 10 files changed, 61 insertions(+), 84 deletions(-) delete mode 100644 lib/resolvers/agent_resolver.rb diff --git a/lib/facts/aix/aio_agent_version.rb b/lib/facts/aix/aio_agent_version.rb index 9bf02b646..957ca6f14 100644 --- a/lib/facts/aix/aio_agent_version.rb +++ b/lib/facts/aix/aio_agent_version.rb @@ -6,7 +6,7 @@ class AioAgentVersion FACT_NAME = 'aio_agent_version' def call_the_resolver - fact_value = Facter::Resolvers::Agent.resolve(:aio_agent_version) + fact_value = nil #Facter::Resolvers::Agent.resolve(:aio_agent_version) Facter::ResolvedFact.new(FACT_NAME, fact_value) end end diff --git a/lib/facts/linux/aio_agent_version.rb b/lib/facts/linux/aio_agent_version.rb index a69efbee2..cf2206952 100644 --- a/lib/facts/linux/aio_agent_version.rb +++ b/lib/facts/linux/aio_agent_version.rb @@ -6,7 +6,7 @@ class AioAgentVersion FACT_NAME = 'aio_agent_version' def call_the_resolver - fact_value = Facter::Resolvers::Agent.resolve(:aio_agent_version) + fact_value = nil #Facter::Resolvers::Agent.resolve(:aio_agent_version) Facter::ResolvedFact.new(FACT_NAME, fact_value) end end diff --git a/lib/facts/macosx/aio_agent_version.rb b/lib/facts/macosx/aio_agent_version.rb index 7971aecc9..3ca48890b 100644 --- a/lib/facts/macosx/aio_agent_version.rb +++ b/lib/facts/macosx/aio_agent_version.rb @@ -6,7 +6,7 @@ class AioAgentVersion FACT_NAME = 'aio_agent_version' def call_the_resolver - fact_value = Facter::Resolvers::Agent.resolve(:aio_agent_version) + fact_value = nil #Facter::Resolvers::Agent.resolve(:aio_agent_version) Facter::ResolvedFact.new(FACT_NAME, fact_value) end end diff --git a/lib/facts/solaris/aio_agent_version.rb b/lib/facts/solaris/aio_agent_version.rb index 6177ed049..afafa0b82 100644 --- a/lib/facts/solaris/aio_agent_version.rb +++ b/lib/facts/solaris/aio_agent_version.rb @@ -6,7 +6,7 @@ class AioAgentVersion FACT_NAME = 'aio_agent_version' def call_the_resolver - fact_value = Facter::Resolvers::Agent.resolve(:aio_agent_version) + fact_value = nil #Facter::Resolvers::Agent.resolve(:aio_agent_version) Facter::ResolvedFact.new(FACT_NAME, fact_value) end end diff --git a/lib/resolvers/agent_resolver.rb b/lib/resolvers/agent_resolver.rb deleted file mode 100644 index b84669038..000000000 --- a/lib/resolvers/agent_resolver.rb +++ /dev/null @@ -1,23 +0,0 @@ -# frozen_string_literal: true - -module Facter - module Resolvers - class Agent < BaseResolver - @semaphore = Mutex.new - @fact_list ||= {} - - class << self - private - - def post_resolve(fact_name) - @fact_list.fetch(fact_name) { read_agent_version } - end - - def read_agent_version - version_file = ::File.join(ROOT_DIR, 'agent/AIO_VERSION') - @fact_list[:aio_agent_version] = ::File.read(version_file) - end - end - end - end -end diff --git a/spec/facter/facts/aix/aio_agent_version_spec.rb b/spec/facter/facts/aix/aio_agent_version_spec.rb index 435d6dba2..0ad44d5d4 100644 --- a/spec/facter/facts/aix/aio_agent_version_spec.rb +++ b/spec/facter/facts/aix/aio_agent_version_spec.rb @@ -6,18 +6,18 @@ let(:value) { '1.2.3' } - before do - allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) - end - - it 'calls Facter::Resolvers::Agent' do - fact.call_the_resolver - expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) - end - - it 'returns aio_agent_version fact' do - expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ - have_attributes(name: 'aio_agent_version', value: value) - end + # before do + # allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) + # end + # + # it 'calls Facter::Resolvers::Agent' do + # fact.call_the_resolver + # expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) + # end + # + # it 'returns aio_agent_version fact' do + # expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ + # have_attributes(name: 'aio_agent_version', value: value) + # end end end diff --git a/spec/facter/facts/linux/aio_agent_version_spec.rb b/spec/facter/facts/linux/aio_agent_version_spec.rb index 576e5dd15..70f42765b 100644 --- a/spec/facter/facts/linux/aio_agent_version_spec.rb +++ b/spec/facter/facts/linux/aio_agent_version_spec.rb @@ -6,18 +6,18 @@ let(:value) { '1.2.3' } - before do - allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) - end - - it 'calls Facter::Resolvers::Agent' do - fact.call_the_resolver - expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) - end - - it 'returns aio_agent_version fact' do - expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ - have_attributes(name: 'aio_agent_version', value: value) - end + # before do + # allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) + # end + # + # it 'calls Facter::Resolvers::Agent' do + # fact.call_the_resolver + # expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) + # end + # + # it 'returns aio_agent_version fact' do + # expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ + # have_attributes(name: 'aio_agent_version', value: value) + # end end end diff --git a/spec/facter/facts/macosx/aio_agent_version_spec.rb b/spec/facter/facts/macosx/aio_agent_version_spec.rb index 428960995..3b376a461 100644 --- a/spec/facter/facts/macosx/aio_agent_version_spec.rb +++ b/spec/facter/facts/macosx/aio_agent_version_spec.rb @@ -6,18 +6,18 @@ let(:value) { '1.2.3' } - before do - allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) - end - - it 'calls Facter::Resolvers::Agent' do - fact.call_the_resolver - expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) - end - - it 'returns aio_agent_version fact' do - expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ - have_attributes(name: 'aio_agent_version', value: value) - end + # before do + # allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) + # end + # + # it 'calls Facter::Resolvers::Agent' do + # fact.call_the_resolver + # expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) + # end + # + # it 'returns aio_agent_version fact' do + # expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ + # have_attributes(name: 'aio_agent_version', value: value) + # end end end diff --git a/spec/facter/facts/solaris/aio_agent_version_spec.rb b/spec/facter/facts/solaris/aio_agent_version_spec.rb index 511d6c6ae..6d6190dea 100644 --- a/spec/facter/facts/solaris/aio_agent_version_spec.rb +++ b/spec/facter/facts/solaris/aio_agent_version_spec.rb @@ -6,18 +6,18 @@ let(:value) { '1.2.3' } - before do - allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) - end - - it 'calls Facter::Resolvers::Agent' do - fact.call_the_resolver - expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) - end - - it 'returns aio_agent_version fact' do - expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ - have_attributes(name: 'aio_agent_version', value: value) - end + # before do + # allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) + # end + # + # it 'calls Facter::Resolvers::Agent' do + # fact.call_the_resolver + # expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) + # end + # + # it 'returns aio_agent_version fact' do + # expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ + # have_attributes(name: 'aio_agent_version', value: value) + # end end end diff --git a/spec/facter/resolvers/aio_agent_version_spec.rb b/spec/facter/resolvers/aio_agent_version_spec.rb index 24194c199..96a40ab97 100644 --- a/spec/facter/resolvers/aio_agent_version_spec.rb +++ b/spec/facter/resolvers/aio_agent_version_spec.rb @@ -1,10 +1,10 @@ # frozen_string_literal: true -describe Facter::Resolvers::Agent do +describe Facter::Resolvers::AioAgentVersion do describe '#resolve' do - it 'detects puppet version' do - allow(File).to receive(:read).with("#{ROOT_DIR}/agent/AIO_VERSION").and_return('7.0.1') - expect(Facter::Resolvers::Agent.resolve(:aio_agent_version)).to eql('7.0.1') - end + # it 'detects puppet version' do + # allow(File).to receive(:read).with("#{ROOT_DIR}/agent/AIO_VERSION").and_return('7.0.1') + # expect(Facter::Resolvers::Agent.resolve(:aio_agent_version)).to eql('7.0.1') + # end end end From cc77ed4e627a242a7318e43b471ee34acf0080ba Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Mon, 15 Jun 2020 12:36:00 +0300 Subject: [PATCH 11/25] (FACT-2638) Move AioAgentVersion windows resolver to windows module. --- lib/facts/windows/aio_agent_version.rb | 2 +- lib/resolvers/windows/aio_agent_version.rb | 82 ++++++++++--------- .../resolvers/aio_agent_version_spec.rb | 2 +- 3 files changed, 44 insertions(+), 42 deletions(-) diff --git a/lib/facts/windows/aio_agent_version.rb b/lib/facts/windows/aio_agent_version.rb index 10faa9351..9df083861 100644 --- a/lib/facts/windows/aio_agent_version.rb +++ b/lib/facts/windows/aio_agent_version.rb @@ -6,7 +6,7 @@ class AioAgentVersion FACT_NAME = 'aio_agent_version' def call_the_resolver - fact_value = Facter::Resolvers::AioAgentVersion.resolve(:aio_version) + fact_value = Facter::Resolvers::Windows::AioAgentVersion.resolve(:aio_version) Facter::ResolvedFact.new(FACT_NAME, fact_value) end end diff --git a/lib/resolvers/windows/aio_agent_version.rb b/lib/resolvers/windows/aio_agent_version.rb index 30ebdea90..68a152764 100644 --- a/lib/resolvers/windows/aio_agent_version.rb +++ b/lib/resolvers/windows/aio_agent_version.rb @@ -2,46 +2,48 @@ module Facter module Resolvers - class AioAgentVersion < BaseResolver - @semaphore = Mutex.new - @fact_list ||= {} - - class << self - private - - def post_resolve(fact_name) - @fact_list.fetch(fact_name) { read_version(fact_name) } - end - - def read_version(fact_name) - reg = ::Win32::Registry::HKEY_LOCAL_MACHINE.open('SOFTWARE\\Puppet Labs\\Puppet') - build_fact_list(reg) - reg.close - - @fact_list[fact_name] - end - - def build_fact_list(reg) - puppet_aio_path = read_for_64_bit(reg) || read_for_32_bit(reg) - - return unless puppet_aio_path - - puppet_aio_version_path = File.join(puppet_aio_path, 'VERSION') - @fact_list[:aio_version] = Util::FileHelper.safe_read(puppet_aio_version_path, nil).chomp - end - - def read_for_64_bit(reg) - reg.read('RememberedInstallDir64')[1] - rescue Win32::Registry::Error - log.debug('Could not read Puppet AIO path from 64 bit registry') - nil - end - - def read_for_32_bit(reg) - reg.read('RememberedInstallDir')[1] - rescue Win32::Registry::Error - log.debug('Could not read Puppet AIO path from 32 bit registry') - nil + module Windows + class AioAgentVersion < BaseResolver + @semaphore = Mutex.new + @fact_list ||= {} + + class << self + private + + def post_resolve(fact_name) + @fact_list.fetch(fact_name) { read_version(fact_name) } + end + + def read_version(fact_name) + reg = ::Win32::Registry::HKEY_LOCAL_MACHINE.open('SOFTWARE\\Puppet Labs\\Puppet') + build_fact_list(reg) + reg.close + + @fact_list[fact_name] + end + + def build_fact_list(reg) + puppet_aio_path = read_for_64_bit(reg) || read_for_32_bit(reg) + + return unless puppet_aio_path + + puppet_aio_version_path = File.join(puppet_aio_path, 'VERSION') + @fact_list[:aio_version] = Util::FileHelper.safe_read(puppet_aio_version_path, nil).chomp + end + + def read_for_64_bit(reg) + reg.read('RememberedInstallDir64')[1] + rescue Win32::Registry::Error + log.debug('Could not read Puppet AIO path from 64 bit registry') + nil + end + + def read_for_32_bit(reg) + reg.read('RememberedInstallDir')[1] + rescue Win32::Registry::Error + log.debug('Could not read Puppet AIO path from 32 bit registry') + nil + end end end end diff --git a/spec/facter/resolvers/aio_agent_version_spec.rb b/spec/facter/resolvers/aio_agent_version_spec.rb index 96a40ab97..b6a0f0ea3 100644 --- a/spec/facter/resolvers/aio_agent_version_spec.rb +++ b/spec/facter/resolvers/aio_agent_version_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -describe Facter::Resolvers::AioAgentVersion do +describe Facter::Resolvers::Windows::AioAgentVersion do describe '#resolve' do # it 'detects puppet version' do # allow(File).to receive(:read).with("#{ROOT_DIR}/agent/AIO_VERSION").and_return('7.0.1') From 26778d58d84fb0eb366a1172df83eb217a9e1b5a Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Mon, 15 Jun 2020 12:43:06 +0300 Subject: [PATCH 12/25] (FACT-2638) Add puppet aio version resolver for unix like systems. --- .github/workflows/checks.yaml | 2 +- lib/facts/macosx/aio_agent_version.rb | 2 +- lib/resolvers/aio_agent_version.rb | 23 +++++++++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 lib/resolvers/aio_agent_version.rb diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml index d3e6a06a7..9b6e656bb 100644 --- a/.github/workflows/checks.yaml +++ b/.github/workflows/checks.yaml @@ -29,7 +29,7 @@ jobs: name: RuboCop TODO steps: - uses: actions/checkout@v1 - - uses: gimmyxd/rtc-action@0.2.0 + - uses: gimmyxd/rtc-action@0.2.1 env: RTC_TOKEN: ${{ secrets.RTC_TOKEN }} UPDATE_PR: false diff --git a/lib/facts/macosx/aio_agent_version.rb b/lib/facts/macosx/aio_agent_version.rb index 3ca48890b..2ca884ae8 100644 --- a/lib/facts/macosx/aio_agent_version.rb +++ b/lib/facts/macosx/aio_agent_version.rb @@ -6,7 +6,7 @@ class AioAgentVersion FACT_NAME = 'aio_agent_version' def call_the_resolver - fact_value = nil #Facter::Resolvers::Agent.resolve(:aio_agent_version) + fact_value = Facter::Resolvers::AioAgentVersion.resolve(:aio_agent_version) Facter::ResolvedFact.new(FACT_NAME, fact_value) end end diff --git a/lib/resolvers/aio_agent_version.rb b/lib/resolvers/aio_agent_version.rb new file mode 100644 index 000000000..d139458b5 --- /dev/null +++ b/lib/resolvers/aio_agent_version.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Facter + module Resolvers + class AioAgentVersion < BaseResolver + @semaphore = Mutex.new + @fact_list ||= {} + + class << self + private + + def post_resolve(fact_name) + @fact_list.fetch(fact_name) { read_agent_version } + end + + def read_agent_version + aio_agent_version = Util::FileHelper.safe_read('/opt/puppetlabs/puppet/VERSION', nil).chomp + @fact_list[:aio_agent_version] = aio_agent_version + end + end + end + end +end From 36387a0f33547010b44f4f32f594de38fcfd8cec Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Mon, 15 Jun 2020 12:49:13 +0300 Subject: [PATCH 13/25] (FACT-2638) Add test for mscos. --- .../facts/macosx/aio_agent_version_spec.rb | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/spec/facter/facts/macosx/aio_agent_version_spec.rb b/spec/facter/facts/macosx/aio_agent_version_spec.rb index 3b376a461..798fff8ad 100644 --- a/spec/facter/facts/macosx/aio_agent_version_spec.rb +++ b/spec/facter/facts/macosx/aio_agent_version_spec.rb @@ -6,18 +6,18 @@ let(:value) { '1.2.3' } - # before do - # allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) - # end - # - # it 'calls Facter::Resolvers::Agent' do - # fact.call_the_resolver - # expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) - # end - # - # it 'returns aio_agent_version fact' do - # expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ - # have_attributes(name: 'aio_agent_version', value: value) - # end + before do + allow(Facter::Resolvers::AioAgentVersion).to receive(:resolve).with(:aio_agent_version).and_return(value) + end + + it 'calls Facter::Resolvers::Agent' do + fact.call_the_resolver + expect(Facter::Resolvers::AioAgentVersion).to have_received(:resolve).with(:aio_agent_version) + end + + it 'returns aio_agent_version fact' do + expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ + have_attributes(name: 'aio_agent_version', value: value) + end end end From 015a3aec07581baaa5bce5de16bc63206a3d47ec Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Mon, 15 Jun 2020 13:54:00 +0300 Subject: [PATCH 14/25] (FACT-2638) Add agent aio resolver for linux. --- lib/facts/linux/aio_agent_version.rb | 2 +- .../facts/linux/aio_agent_version_spec.rb | 26 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/facts/linux/aio_agent_version.rb b/lib/facts/linux/aio_agent_version.rb index cf2206952..cd9000a99 100644 --- a/lib/facts/linux/aio_agent_version.rb +++ b/lib/facts/linux/aio_agent_version.rb @@ -6,7 +6,7 @@ class AioAgentVersion FACT_NAME = 'aio_agent_version' def call_the_resolver - fact_value = nil #Facter::Resolvers::Agent.resolve(:aio_agent_version) + fact_value = Facter::Resolvers::AioAgentVersion.resolve(:aio_agent_version) Facter::ResolvedFact.new(FACT_NAME, fact_value) end end diff --git a/spec/facter/facts/linux/aio_agent_version_spec.rb b/spec/facter/facts/linux/aio_agent_version_spec.rb index 70f42765b..07ddbe58d 100644 --- a/spec/facter/facts/linux/aio_agent_version_spec.rb +++ b/spec/facter/facts/linux/aio_agent_version_spec.rb @@ -6,18 +6,18 @@ let(:value) { '1.2.3' } - # before do - # allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) - # end - # - # it 'calls Facter::Resolvers::Agent' do - # fact.call_the_resolver - # expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) - # end - # - # it 'returns aio_agent_version fact' do - # expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ - # have_attributes(name: 'aio_agent_version', value: value) - # end + before do + allow(Facter::Resolvers::AioAgentVersion).to receive(:resolve).with(:aio_agent_version).and_return(value) + end + + it 'calls Facter::Resolvers::Agent' do + fact.call_the_resolver + expect(Facter::Resolvers::AioAgentVersion).to have_received(:resolve).with(:aio_agent_version) + end + + it 'returns aio_agent_version fact' do + expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ + have_attributes(name: 'aio_agent_version', value: value) + end end end From 552aa467c3edf58430423334715eb9e59a0aa4d0 Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Mon, 15 Jun 2020 13:55:18 +0300 Subject: [PATCH 15/25] (FACT-2638) Add logic to agent aio version resolver for AIX. --- lib/facts/aix/aio_agent_version.rb | 2 +- .../facts/aix/aio_agent_version_spec.rb | 26 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/facts/aix/aio_agent_version.rb b/lib/facts/aix/aio_agent_version.rb index 957ca6f14..48a98a366 100644 --- a/lib/facts/aix/aio_agent_version.rb +++ b/lib/facts/aix/aio_agent_version.rb @@ -6,7 +6,7 @@ class AioAgentVersion FACT_NAME = 'aio_agent_version' def call_the_resolver - fact_value = nil #Facter::Resolvers::Agent.resolve(:aio_agent_version) + fact_value = Facter::Resolvers::AioAgentVersion.resolve(:aio_agent_version) Facter::ResolvedFact.new(FACT_NAME, fact_value) end end diff --git a/spec/facter/facts/aix/aio_agent_version_spec.rb b/spec/facter/facts/aix/aio_agent_version_spec.rb index 0ad44d5d4..705185df4 100644 --- a/spec/facter/facts/aix/aio_agent_version_spec.rb +++ b/spec/facter/facts/aix/aio_agent_version_spec.rb @@ -6,18 +6,18 @@ let(:value) { '1.2.3' } - # before do - # allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) - # end - # - # it 'calls Facter::Resolvers::Agent' do - # fact.call_the_resolver - # expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) - # end - # - # it 'returns aio_agent_version fact' do - # expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ - # have_attributes(name: 'aio_agent_version', value: value) - # end + before do + allow(Facter::Resolvers::AioAgentVersion).to receive(:resolve).with(:aio_agent_version).and_return(value) + end + + it 'calls Facter::Resolvers::Agent' do + fact.call_the_resolver + expect(Facter::Resolvers::AioAgentVersion).to have_received(:resolve).with(:aio_agent_version) + end + + it 'returns aio_agent_version fact' do + expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ + have_attributes(name: 'aio_agent_version', value: value) + end end end From 04d946cbf7be1223cefe657815b45063c4d8cc1b Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Mon, 15 Jun 2020 13:57:26 +0300 Subject: [PATCH 16/25] (FACT-2638) Add logic to aio_agent_version fact for Solaris. --- lib/facts/solaris/aio_agent_version.rb | 2 +- .../facts/solaris/aio_agent_version_spec.rb | 26 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/facts/solaris/aio_agent_version.rb b/lib/facts/solaris/aio_agent_version.rb index afafa0b82..b595f792c 100644 --- a/lib/facts/solaris/aio_agent_version.rb +++ b/lib/facts/solaris/aio_agent_version.rb @@ -6,7 +6,7 @@ class AioAgentVersion FACT_NAME = 'aio_agent_version' def call_the_resolver - fact_value = nil #Facter::Resolvers::Agent.resolve(:aio_agent_version) + fact_value = Facter::Resolvers::AioAgentVersion.resolve(:aio_agent_version) Facter::ResolvedFact.new(FACT_NAME, fact_value) end end diff --git a/spec/facter/facts/solaris/aio_agent_version_spec.rb b/spec/facter/facts/solaris/aio_agent_version_spec.rb index 6d6190dea..d5cb46c71 100644 --- a/spec/facter/facts/solaris/aio_agent_version_spec.rb +++ b/spec/facter/facts/solaris/aio_agent_version_spec.rb @@ -6,18 +6,18 @@ let(:value) { '1.2.3' } - # before do - # allow(Facter::Resolvers::Agent).to receive(:resolve).with(:aio_agent_version).and_return(value) - # end - # - # it 'calls Facter::Resolvers::Agent' do - # fact.call_the_resolver - # expect(Facter::Resolvers::Agent).to have_received(:resolve).with(:aio_agent_version) - # end - # - # it 'returns aio_agent_version fact' do - # expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ - # have_attributes(name: 'aio_agent_version', value: value) - # end + before do + allow(Facter::Resolvers::AioAgentVersion).to receive(:resolve).with(:aio_agent_version).and_return(value) + end + + it 'calls Facter::Resolvers::Agent' do + fact.call_the_resolver + expect(Facter::Resolvers::AioAgentVersion).to have_received(:resolve).with(:aio_agent_version) + end + + it 'returns aio_agent_version fact' do + expect(fact.call_the_resolver).to be_an_instance_of(Facter::ResolvedFact).and \ + have_attributes(name: 'aio_agent_version', value: value) + end end end From 3fbb486c7276308d10578a899b5a8b3f1e4faf8a Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Mon, 15 Jun 2020 14:02:25 +0300 Subject: [PATCH 17/25] (FACT-2638) Add test fro aio_agent_version resolver. --- spec/facter/resolvers/aio_agent_version_spec.rb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/spec/facter/resolvers/aio_agent_version_spec.rb b/spec/facter/resolvers/aio_agent_version_spec.rb index b6a0f0ea3..6ac972f85 100644 --- a/spec/facter/resolvers/aio_agent_version_spec.rb +++ b/spec/facter/resolvers/aio_agent_version_spec.rb @@ -1,10 +1,14 @@ # frozen_string_literal: true -describe Facter::Resolvers::Windows::AioAgentVersion do +describe Facter::Resolvers::AioAgentVersion do describe '#resolve' do - # it 'detects puppet version' do - # allow(File).to receive(:read).with("#{ROOT_DIR}/agent/AIO_VERSION").and_return('7.0.1') - # expect(Facter::Resolvers::Agent.resolve(:aio_agent_version)).to eql('7.0.1') - # end + it 'detects puppet version' do + allow(Facter::Util::FileHelper) + .to receive(:safe_read) + .with('/opt/puppetlabs/puppet/VERSION', nil) + .and_return('7.0.1') + + expect(Facter::Resolvers::AioAgentVersion.resolve(:aio_agent_version)).to eql('7.0.1') + end end end From 1acfed9b2bd7915664a5cad8a166f728be9433e9 Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Mon, 15 Jun 2020 16:06:37 +0300 Subject: [PATCH 18/25] (FACT-2638) Add test for aio_agent_version windows resolver. --- .../resolvers/aio_agent_version_spec.rb | 10 ++- .../windows/aio_agent_version_spec.rb | 63 +++++++++++++++++++ spec/mocks/win32_mock.rb | 2 + spec/mocks/win32_registry_error_mock.rb | 8 +++ 4 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 spec/facter/resolvers/windows/aio_agent_version_spec.rb create mode 100644 spec/mocks/win32_registry_error_mock.rb diff --git a/spec/facter/resolvers/aio_agent_version_spec.rb b/spec/facter/resolvers/aio_agent_version_spec.rb index 6ac972f85..24a4f7916 100644 --- a/spec/facter/resolvers/aio_agent_version_spec.rb +++ b/spec/facter/resolvers/aio_agent_version_spec.rb @@ -2,12 +2,20 @@ describe Facter::Resolvers::AioAgentVersion do describe '#resolve' do - it 'detects puppet version' do + before do allow(Facter::Util::FileHelper) .to receive(:safe_read) .with('/opt/puppetlabs/puppet/VERSION', nil) .and_return('7.0.1') + end + + it 'calls FileHelper.safe_read' do + Facter::Resolvers::AioAgentVersion.resolve(:aio_agent_version) + expect(Facter::Util::FileHelper).to have_received(:safe_read).with('/opt/puppetlabs/puppet/VERSION', nil) + end + + it 'detects puppet version' do expect(Facter::Resolvers::AioAgentVersion.resolve(:aio_agent_version)).to eql('7.0.1') end end diff --git a/spec/facter/resolvers/windows/aio_agent_version_spec.rb b/spec/facter/resolvers/windows/aio_agent_version_spec.rb new file mode 100644 index 000000000..d3ee6764b --- /dev/null +++ b/spec/facter/resolvers/windows/aio_agent_version_spec.rb @@ -0,0 +1,63 @@ +# frozen_string_literal: true + +describe Facter::Resolvers::Windows::AioAgentVersion do + describe '#resolve' do + subject(:aio_agent_resolver) { Facter::Resolvers::Windows::AioAgentVersion } + + let(:puppet_version) { '7.0.1' } + let(:reg) { instance_spy(Win32::Registry::HKEY_LOCAL_MACHINE) } + let(:log) { instance_spy(Facter::Log) } + + before do + allow(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open).with('SOFTWARE\\Puppet Labs\\Puppet').and_return(reg) + allow(reg).to receive(:close) + allow(Facter::Util::FileHelper) + .to receive(:safe_read).with('path_to_puppet/VERSION', nil) + .and_return(puppet_version) + end + + after do + Facter::Resolvers::Windows::AioAgentVersion.invalidate_cache + end + + context 'when windows is 64 bit edition' do + before do + allow(reg).to receive(:read).with('RememberedInstallDir64').and_return([1, 'path_to_puppet']) + end + + it 'returns path from registry specific to 64 bit windows' do + expect(aio_agent_resolver.resolve(:aio_version)).to eq(puppet_version) + end + end + + context 'when windows is 32 bit edition' do + before do + allow(reg).to receive(:read).with('RememberedInstallDir64').and_raise(Win32::Registry::Error) + allow(reg).to receive(:read).with('RememberedInstallDir').and_return([1, 'path_to_puppet']) + allow(Facter::Resolvers::BaseResolver).to receive(:log).and_return(log) + end + + it 'logs debug message for 64 bit register' do + aio_agent_resolver.resolve(:aio_version) + + expect(log).to have_received(:debug).with('Could not read Puppet AIO path from 64 bit registry') + end + + it 'returns path from registry specific to 32 bit windows' do + expect(aio_agent_resolver.resolve(:aio_version)).to eq(puppet_version) + end + + context 'when there is no registry entry for 32 bit version' do + before do + allow(reg).to receive(:read).with('RememberedInstallDir').and_raise(Win32::Registry::Error) + end + + it 'logs debug error for 32 bit registry' do + aio_agent_resolver.resolve(:aio_version) + + expect(log).to have_received(:debug).with('Could not read Puppet AIO path from 32 bit registry') + end + end + end + end +end diff --git a/spec/mocks/win32_mock.rb b/spec/mocks/win32_mock.rb index cd003658c..b5df44d3d 100644 --- a/spec/mocks/win32_mock.rb +++ b/spec/mocks/win32_mock.rb @@ -14,6 +14,8 @@ def each; end def [](*); end def keys; end + + def read(*); end end end end diff --git a/spec/mocks/win32_registry_error_mock.rb b/spec/mocks/win32_registry_error_mock.rb new file mode 100644 index 000000000..a26caec87 --- /dev/null +++ b/spec/mocks/win32_registry_error_mock.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +module Win32 + module Registry + class Error < RuntimeError + end + end +end From f9485a544782a59969ff137c58db712a76260a99 Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Tue, 16 Jun 2020 11:55:06 +0300 Subject: [PATCH 19/25] (FACT-2638) Use open block to avoid closing the register. --- lib/resolvers/windows/aio_agent_version.rb | 6 +++--- spec/facter/resolvers/windows/aio_agent_version_spec.rb | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/resolvers/windows/aio_agent_version.rb b/lib/resolvers/windows/aio_agent_version.rb index 68a152764..6ecc52113 100644 --- a/lib/resolvers/windows/aio_agent_version.rb +++ b/lib/resolvers/windows/aio_agent_version.rb @@ -15,9 +15,9 @@ def post_resolve(fact_name) end def read_version(fact_name) - reg = ::Win32::Registry::HKEY_LOCAL_MACHINE.open('SOFTWARE\\Puppet Labs\\Puppet') - build_fact_list(reg) - reg.close + ::Win32::Registry::HKEY_LOCAL_MACHINE.open('SOFTWARE\\Puppet Labs\\Puppet') do |reg| + build_fact_list(reg) + end @fact_list[fact_name] end diff --git a/spec/facter/resolvers/windows/aio_agent_version_spec.rb b/spec/facter/resolvers/windows/aio_agent_version_spec.rb index d3ee6764b..cafbbb2eb 100644 --- a/spec/facter/resolvers/windows/aio_agent_version_spec.rb +++ b/spec/facter/resolvers/windows/aio_agent_version_spec.rb @@ -9,7 +9,7 @@ let(:log) { instance_spy(Facter::Log) } before do - allow(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open).with('SOFTWARE\\Puppet Labs\\Puppet').and_return(reg) + allow(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open).with('SOFTWARE\\Puppet Labs\\Puppet').and_yield(reg) allow(reg).to receive(:close) allow(Facter::Util::FileHelper) .to receive(:safe_read).with('path_to_puppet/VERSION', nil) From 5bdfaf5b17339732a5d5f9efde56cdf0bac4a0e3 Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Tue, 16 Jun 2020 12:12:14 +0300 Subject: [PATCH 20/25] (FACT-2638) Catch exception for incorrect registry path. --- lib/resolvers/windows/aio_agent_version.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/resolvers/windows/aio_agent_version.rb b/lib/resolvers/windows/aio_agent_version.rb index 6ecc52113..de45eec78 100644 --- a/lib/resolvers/windows/aio_agent_version.rb +++ b/lib/resolvers/windows/aio_agent_version.rb @@ -4,6 +4,7 @@ module Facter module Resolvers module Windows class AioAgentVersion < BaseResolver + REGISTRY_PATH = 'SOFTWARE\\Puppet Labs\\Puppet' @semaphore = Mutex.new @fact_list ||= {} @@ -15,11 +16,13 @@ def post_resolve(fact_name) end def read_version(fact_name) - ::Win32::Registry::HKEY_LOCAL_MACHINE.open('SOFTWARE\\Puppet Labs\\Puppet') do |reg| + ::Win32::Registry::HKEY_LOCAL_MACHINE.open(REGISTRY_PATH) do |reg| build_fact_list(reg) end @fact_list[fact_name] + rescue Win32::Registry::Error + log.debug("The registry path #{REGISTRY_PATH} does not exist") end def build_fact_list(reg) From 83660cebfbbdbc96cb2d3eb19e88e5e2d76b7b28 Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Tue, 16 Jun 2020 12:24:46 +0300 Subject: [PATCH 21/25] (FACT-2638) Add test for incorrect registry path. --- .../windows/aio_agent_version_spec.rb | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/spec/facter/resolvers/windows/aio_agent_version_spec.rb b/spec/facter/resolvers/windows/aio_agent_version_spec.rb index cafbbb2eb..e51e4848c 100644 --- a/spec/facter/resolvers/windows/aio_agent_version_spec.rb +++ b/spec/facter/resolvers/windows/aio_agent_version_spec.rb @@ -12,14 +12,31 @@ allow(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open).with('SOFTWARE\\Puppet Labs\\Puppet').and_yield(reg) allow(reg).to receive(:close) allow(Facter::Util::FileHelper) - .to receive(:safe_read).with('path_to_puppet/VERSION', nil) - .and_return(puppet_version) + .to receive(:safe_read) + .with('path_to_puppet/VERSION', nil) + .and_return(puppet_version) + allow(Facter::Resolvers::BaseResolver).to receive(:log).and_return(log) end after do Facter::Resolvers::Windows::AioAgentVersion.invalidate_cache end + context 'when the registry path is incorrect' do + before do + allow(Win32::Registry::HKEY_LOCAL_MACHINE) + .to receive(:open) + .with('SOFTWARE\\Puppet Labs\\Puppet') + .and_raise(Win32::Registry::Error) + end + + it 'logs debug message specific to none existent path' do + aio_agent_resolver.resolve(:aio_version) + + expect(log).to have_received(:debug).with('The registry path SOFTWARE\Puppet Labs\Puppet does not exist') + end + end + context 'when windows is 64 bit edition' do before do allow(reg).to receive(:read).with('RememberedInstallDir64').and_return([1, 'path_to_puppet']) @@ -34,7 +51,6 @@ before do allow(reg).to receive(:read).with('RememberedInstallDir64').and_raise(Win32::Registry::Error) allow(reg).to receive(:read).with('RememberedInstallDir').and_return([1, 'path_to_puppet']) - allow(Facter::Resolvers::BaseResolver).to receive(:log).and_return(log) end it 'logs debug message for 64 bit register' do From 5564e16d7b535078b7eef6dfc10d4f1d32828efd Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Tue, 16 Jun 2020 12:42:03 +0300 Subject: [PATCH 22/25] (FACT-2638) Add nil check before chomp. --- lib/resolvers/windows/aio_agent_version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/resolvers/windows/aio_agent_version.rb b/lib/resolvers/windows/aio_agent_version.rb index de45eec78..659975509 100644 --- a/lib/resolvers/windows/aio_agent_version.rb +++ b/lib/resolvers/windows/aio_agent_version.rb @@ -31,7 +31,7 @@ def build_fact_list(reg) return unless puppet_aio_path puppet_aio_version_path = File.join(puppet_aio_path, 'VERSION') - @fact_list[:aio_version] = Util::FileHelper.safe_read(puppet_aio_version_path, nil).chomp + @fact_list[:aio_version] = Util::FileHelper.safe_read(puppet_aio_version_path, nil)&.chomp end def read_for_64_bit(reg) From d775e63db4025732e60151735825762960f2ff0f Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Tue, 16 Jun 2020 12:57:10 +0300 Subject: [PATCH 23/25] (FACT-2638) Improve return condition when there is no path or an empty one detected in registry. Added tests for this case. --- lib/resolvers/windows/aio_agent_version.rb | 2 +- .../resolvers/windows/aio_agent_version_spec.rb | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/resolvers/windows/aio_agent_version.rb b/lib/resolvers/windows/aio_agent_version.rb index 659975509..904f5f418 100644 --- a/lib/resolvers/windows/aio_agent_version.rb +++ b/lib/resolvers/windows/aio_agent_version.rb @@ -28,7 +28,7 @@ def read_version(fact_name) def build_fact_list(reg) puppet_aio_path = read_for_64_bit(reg) || read_for_32_bit(reg) - return unless puppet_aio_path + return if puppet_aio_path.nil? || puppet_aio_path.empty? puppet_aio_version_path = File.join(puppet_aio_path, 'VERSION') @fact_list[:aio_version] = Util::FileHelper.safe_read(puppet_aio_version_path, nil)&.chomp diff --git a/spec/facter/resolvers/windows/aio_agent_version_spec.rb b/spec/facter/resolvers/windows/aio_agent_version_spec.rb index e51e4848c..bd790082a 100644 --- a/spec/facter/resolvers/windows/aio_agent_version_spec.rb +++ b/spec/facter/resolvers/windows/aio_agent_version_spec.rb @@ -10,7 +10,6 @@ before do allow(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open).with('SOFTWARE\\Puppet Labs\\Puppet').and_yield(reg) - allow(reg).to receive(:close) allow(Facter::Util::FileHelper) .to receive(:safe_read) .with('path_to_puppet/VERSION', nil) @@ -45,6 +44,16 @@ it 'returns path from registry specific to 64 bit windows' do expect(aio_agent_resolver.resolve(:aio_version)).to eq(puppet_version) end + + context 'when RememberedInstallDir64 does not contain a value' do + before do + allow(reg).to receive(:read).with('RememberedInstallDir64').and_return([1, '']) + end + + it 'calls file helper with empty path' do + expect(aio_agent_resolver.resolve(:aio_version)).to be(nil) + end + end end context 'when windows is 32 bit edition' do From a8b70d920e6d67699aff8ffbf423a5ff88ea52c0 Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Tue, 16 Jun 2020 15:01:59 +0300 Subject: [PATCH 24/25] (FACT-2638) Only consider the first 4 groups of digits. --- lib/resolvers/aio_agent_version.rb | 1 + lib/resolvers/windows/aio_agent_version.rb | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/resolvers/aio_agent_version.rb b/lib/resolvers/aio_agent_version.rb index d139458b5..5cc1aedd1 100644 --- a/lib/resolvers/aio_agent_version.rb +++ b/lib/resolvers/aio_agent_version.rb @@ -15,6 +15,7 @@ def post_resolve(fact_name) def read_agent_version aio_agent_version = Util::FileHelper.safe_read('/opt/puppetlabs/puppet/VERSION', nil).chomp + aio_agent_version = aio_agent_version&.match(/^\d+\.\d+\.\d+(\.\d+){0,2}/)&.to_s @fact_list[:aio_agent_version] = aio_agent_version end end diff --git a/lib/resolvers/windows/aio_agent_version.rb b/lib/resolvers/windows/aio_agent_version.rb index 904f5f418..1c08885b1 100644 --- a/lib/resolvers/windows/aio_agent_version.rb +++ b/lib/resolvers/windows/aio_agent_version.rb @@ -31,7 +31,9 @@ def build_fact_list(reg) return if puppet_aio_path.nil? || puppet_aio_path.empty? puppet_aio_version_path = File.join(puppet_aio_path, 'VERSION') - @fact_list[:aio_version] = Util::FileHelper.safe_read(puppet_aio_version_path, nil)&.chomp + aio_agent_version = Util::FileHelper.safe_read(puppet_aio_version_path, nil)&.chomp + + @fact_list[:aio_version] = aio_agent_version&.match(/^\d+\.\d+\.\d+(\.\d+){0,2}/)&.to_s end def read_for_64_bit(reg) From 2cfd75850feca4978de870d9c64203210657ef3b Mon Sep 17 00:00:00 2001 From: BogdanIrimie Date: Tue, 16 Jun 2020 15:54:21 +0300 Subject: [PATCH 25/25] (FACT-2638) Add test for AIO dev builds. --- lib/facts/windows/aio_agent_version.rb | 2 +- lib/resolvers/windows/aio_agent_version.rb | 2 +- .../resolvers/aio_agent_version_spec.rb | 17 +++++++++++++ .../windows/aio_agent_version_spec.rb | 25 ++++++++++++++----- 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/lib/facts/windows/aio_agent_version.rb b/lib/facts/windows/aio_agent_version.rb index 9df083861..dbb954efb 100644 --- a/lib/facts/windows/aio_agent_version.rb +++ b/lib/facts/windows/aio_agent_version.rb @@ -6,7 +6,7 @@ class AioAgentVersion FACT_NAME = 'aio_agent_version' def call_the_resolver - fact_value = Facter::Resolvers::Windows::AioAgentVersion.resolve(:aio_version) + fact_value = Facter::Resolvers::Windows::AioAgentVersion.resolve(:aio_agent_version) Facter::ResolvedFact.new(FACT_NAME, fact_value) end end diff --git a/lib/resolvers/windows/aio_agent_version.rb b/lib/resolvers/windows/aio_agent_version.rb index 1c08885b1..d4ffe2474 100644 --- a/lib/resolvers/windows/aio_agent_version.rb +++ b/lib/resolvers/windows/aio_agent_version.rb @@ -33,7 +33,7 @@ def build_fact_list(reg) puppet_aio_version_path = File.join(puppet_aio_path, 'VERSION') aio_agent_version = Util::FileHelper.safe_read(puppet_aio_version_path, nil)&.chomp - @fact_list[:aio_version] = aio_agent_version&.match(/^\d+\.\d+\.\d+(\.\d+){0,2}/)&.to_s + @fact_list[:aio_agent_version] = aio_agent_version&.match(/^\d+\.\d+\.\d+(\.\d+){0,2}/)&.to_s end def read_for_64_bit(reg) diff --git a/spec/facter/resolvers/aio_agent_version_spec.rb b/spec/facter/resolvers/aio_agent_version_spec.rb index 24a4f7916..c382435d8 100644 --- a/spec/facter/resolvers/aio_agent_version_spec.rb +++ b/spec/facter/resolvers/aio_agent_version_spec.rb @@ -9,6 +9,10 @@ .and_return('7.0.1') end + after do + Facter::Resolvers::AioAgentVersion.invalidate_cache + end + it 'calls FileHelper.safe_read' do Facter::Resolvers::AioAgentVersion.resolve(:aio_agent_version) @@ -18,5 +22,18 @@ it 'detects puppet version' do expect(Facter::Resolvers::AioAgentVersion.resolve(:aio_agent_version)).to eql('7.0.1') end + + context 'when AIO puppet agent is a dev build' do + before do + allow(Facter::Util::FileHelper) + .to receive(:safe_read) + .with('/opt/puppetlabs/puppet/VERSION', nil) + .and_return('7.0.1.8.g12345678') + end + + it 'only shows the first 4 groups of digits' do + expect(Facter::Resolvers::AioAgentVersion.resolve(:aio_agent_version)).to eql('7.0.1.8') + end + end end end diff --git a/spec/facter/resolvers/windows/aio_agent_version_spec.rb b/spec/facter/resolvers/windows/aio_agent_version_spec.rb index bd790082a..8d416c84b 100644 --- a/spec/facter/resolvers/windows/aio_agent_version_spec.rb +++ b/spec/facter/resolvers/windows/aio_agent_version_spec.rb @@ -30,7 +30,7 @@ end it 'logs debug message specific to none existent path' do - aio_agent_resolver.resolve(:aio_version) + aio_agent_resolver.resolve(:aio_agent_version) expect(log).to have_received(:debug).with('The registry path SOFTWARE\Puppet Labs\Puppet does not exist') end @@ -42,7 +42,7 @@ end it 'returns path from registry specific to 64 bit windows' do - expect(aio_agent_resolver.resolve(:aio_version)).to eq(puppet_version) + expect(aio_agent_resolver.resolve(:aio_agent_version)).to eq(puppet_version) end context 'when RememberedInstallDir64 does not contain a value' do @@ -51,7 +51,20 @@ end it 'calls file helper with empty path' do - expect(aio_agent_resolver.resolve(:aio_version)).to be(nil) + expect(aio_agent_resolver.resolve(:aio_agent_version)).to be(nil) + end + end + + context 'when AIO puppet agent is a dev build' do + before do + allow(Facter::Util::FileHelper) + .to receive(:safe_read) + .with('path_to_puppet/VERSION', nil) + .and_return('7.0.1.8.g12345678') + end + + it 'only shows the first 4 groups of digits' do + expect(aio_agent_resolver.resolve(:aio_agent_version)).to eql('7.0.1.8') end end end @@ -63,13 +76,13 @@ end it 'logs debug message for 64 bit register' do - aio_agent_resolver.resolve(:aio_version) + aio_agent_resolver.resolve(:aio_agent_version) expect(log).to have_received(:debug).with('Could not read Puppet AIO path from 64 bit registry') end it 'returns path from registry specific to 32 bit windows' do - expect(aio_agent_resolver.resolve(:aio_version)).to eq(puppet_version) + expect(aio_agent_resolver.resolve(:aio_agent_version)).to eq(puppet_version) end context 'when there is no registry entry for 32 bit version' do @@ -78,7 +91,7 @@ end it 'logs debug error for 32 bit registry' do - aio_agent_resolver.resolve(:aio_version) + aio_agent_resolver.resolve(:aio_agent_version) expect(log).to have_received(:debug).with('Could not read Puppet AIO path from 32 bit registry') end