From 614213a104971ffb89c1728d58081f60d7f65af2 Mon Sep 17 00:00:00 2001 From: Sean Champ Date: Wed, 20 Apr 2022 22:17:28 -0700 Subject: [PATCH] resolvers/networking.rb: avoid calling ipconfig unless Windows The following message was observed when running 'puppet catalog compile' under RUBYOPT="--debug" with Puppet 7 and Facter 4.2.9 on FreeBSD 12.3 ~~~~ Exception `Errno::ENOENT' at /opt/puppet/puppet_wk/puppet_ctl/tools/bundle/ruby/3.0/gems/facter-4.2.9/lib/facter/custom_facts/core/execution/popen3.rb:17 - No such file or directory - ipconfig ~~~~ In order to prevent the call to the Microsoft Windows ipconfig tool, this changeset adds an additional test under the method Facter::Resolvers::Networking.extract_dhcp The patched networking.rb has been tested with Puppet 7 from a local installation under Ruby 3.0 from FreeBSD ports, on FreeBSD 12.3 --- lib/facter/resolvers/networking.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/facter/resolvers/networking.rb b/lib/facter/resolvers/networking.rb index 9ffec26461..9156767a24 100644 --- a/lib/facter/resolvers/networking.rb +++ b/lib/facter/resolvers/networking.rb @@ -71,7 +71,8 @@ def extract_mac(raw_data, parsed_interface_data) end def extract_dhcp(interface_name, raw_data, parsed_interface_data) - return unless raw_data =~ /status:\s+active/ + return unless ((raw_data =~ /status:\s+active/) && + (OsDetector.instance.identifier == :windows)) result = Facter::Core::Execution.execute("ipconfig getoption #{interface_name} " \ 'server_identifier', logger: log)