From 80b3fefa356ce790ed4319ff06b5cd7cecffcec2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Romain=20Tarti=C3=A8re?= Date: Tue, 30 Jul 2024 09:22:34 +0200 Subject: [PATCH] Fix 'virtual' fact on FreeBSD We should not call Linux-specific code from a non-Linux system. This cross-platform utility class needs to skip Linux code when running on a non-linux platform. --- lib/facter/util/facts/posix/virtual_detector.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/facter/util/facts/posix/virtual_detector.rb b/lib/facter/util/facts/posix/virtual_detector.rb index 2ffd4c839..7ae0f88f6 100644 --- a/lib/facter/util/facts/posix/virtual_detector.rb +++ b/lib/facter/util/facts/posix/virtual_detector.rb @@ -16,10 +16,14 @@ def platform private def check_docker_lxc + return unless Object.const_defined?('Facter::Resolvers::Linux::Containers') + Facter::Resolvers::Linux::Containers.resolve(:vm) end def check_gce + return unless Object.const_defined?('Facter::Resolvers::Linux::DmiBios') + bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor) 'gce' if bios_vendor&.include?('Google') end @@ -61,6 +65,8 @@ def check_openbsd end def check_other_facts + return unless Object.const_defined?('Facter::Resolvers::Linux::DmiBios') + bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor) return 'kvm' if bios_vendor&.include?('Amazon EC2')