From 82286e44cf91e2e8305ba03e7e183ff98593099f Mon Sep 17 00:00:00 2001 From: Jiri Kubicek Date: Sun, 25 Jul 2010 03:44:41 +0200 Subject: Fix #4352 - Support for detecting virtuals (jails) on FreeBSD There was no support for detecting FreeBSD jails as a virtual in facter. This patch detects jail by getting "security.jail.jailed" kernel state via sysctl. Signed-off-by: Jiri Kubicek --- lib/facter/util/virtual.rb | 3 +++ lib/facter/virtual.rb | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/facter/util/virtual.rb b/lib/facter/util/virtual.rb index 80f4e2c..900375f 100644 --- a/lib/facter/util/virtual.rb +++ b/lib/facter/util/virtual.rb @@ -57,5 +57,8 @@ module Facter::Util::Virtual "kvm" end + def self.jail? + Facter::Util::Resolution.exec("/sbin/sysctl -n security.jail.jailed") == "1" + end end diff --git a/lib/facter/virtual.rb b/lib/facter/virtual.rb index c6d0f22..c14a715 100644 --- a/lib/facter/virtual.rb +++ b/lib/facter/virtual.rb @@ -38,6 +38,10 @@ Facter.add("virtual") do result = Facter::Util::Virtual.kvm_type() end + if Facter.value(:kernel)=="FreeBSD" + result = "jail" if Facter::Util::Virtual.jail? + end + if result == "physical" output = Facter::Util::Resolution.exec('lspci') if not output.nil? @@ -76,7 +80,7 @@ Facter.add("is_virtual") do setcode do case Facter.value(:virtual) - when "xenu", "openvzve", "vmware", "kvm", "vserver" + when "xenu", "openvzve", "vmware", "kvm", "vserver", "jail" true else false -- cgit From faaa169d73e5132b7f2ea491461690324c1133ab Mon Sep 17 00:00:00 2001 From: Jiri Kubicek Date: Mon, 26 Jul 2010 00:08:16 +0200 Subject: Fix #4352 - Support for detecting KVM virtuals on FreeBSD There was no support for detecting FreeBSD running in KVM as a virtual in facter. This patch detects KVM by getting "hw.model" kernel state via sysctl. Jails running in KVM are also correctly detected as "jail" not "kvm". Signed-off-by: Jiri Kubicek --- lib/facter/util/virtual.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/facter/util/virtual.rb b/lib/facter/util/virtual.rb index 900375f..2d18c33 100644 --- a/lib/facter/util/virtual.rb +++ b/lib/facter/util/virtual.rb @@ -43,11 +43,12 @@ module Facter::Util::Virtual end def self.kvm? - if FileTest.exists?("/proc/cpuinfo") - txt = File.read("/proc/cpuinfo") - return true if txt =~ /QEMU Virtual CPU/ + txt = if FileTest.exists?("/proc/cpuinfo") + File.read("/proc/cpuinfo") + elsif Facter.value(:kernel)=="FreeBSD" + Facter::Util::Resolution.exec("/sbin/sysctl -n hw.model") end - return false + (txt =~ /QEMU Virtual CPU/) ? true : false end def self.kvm_type -- cgit