summaryrefslogtreecommitdiffstats
path: root/lib/facter/virtual.rb
diff options
context:
space:
mode:
authorPaul Nasrat <pnasrat@googlemail.com>2009-05-28 08:15:01 +0100
committerPaul Nasrat <pnasrat@googlemail.com>2009-07-16 14:17:18 +0100
commitc02d3b66eb2878968befea64c3a3ab69dc9e5de8 (patch)
tree3127d620164a612a64e754c5a4ce0b0f49733fa1 /lib/facter/virtual.rb
parent545f3c1405451afecb1e79bd34e15640322162e2 (diff)
downloadfacter-c02d3b66eb2878968befea64c3a3ab69dc9e5de8.tar.gz
facter-c02d3b66eb2878968befea64c3a3ab69dc9e5de8.tar.xz
facter-c02d3b66eb2878968befea64c3a3ab69dc9e5de8.zip
Issue #2292 Add tests for virtual facts
Add tests and utility for virtual fact detection
Diffstat (limited to 'lib/facter/virtual.rb')
-rw-r--r--lib/facter/virtual.rb35
1 files changed, 11 insertions, 24 deletions
diff --git a/lib/facter/virtual.rb b/lib/facter/virtual.rb
index 72bfe51..299ebb4 100644
--- a/lib/facter/virtual.rb
+++ b/lib/facter/virtual.rb
@@ -1,32 +1,19 @@
+require 'facter/util/virtual'
+
Facter.add("virtual") do
confine :kernel => %w{Linux FreeBSD OpenBSD SunOS}
result = "physical"
setcode do
- require 'thread'
- if FileTest.exists?("/sbin/zonename")
- z = %x{"/sbin/zonename"}.chomp
- if z != 'global'
- result = 'zone'
- end
- end
+ result = "zone" if Facter::Util::Virtual.zone?
- if FileTest.exists?("/proc/vz/veinfo")
- if FileTest.exists?("/proc/vz/version")
- result = "openvzhn"
- else
- result = "openvzve"
- end
+ if Facter::Util::Virtual.openvz?
+ result = Facter::Util::Virtual.openvz_type()
end
- if FileTest.exists?("/proc/self/status")
- txt = File.read("/proc/self/status")
- if txt =~ /^(s_context|VxID):[[:blank:]]*[1-9]/
- result = "vserver"
- end
- end
+ result = "vserver" if Facter::Util::Virtual.vserver?
if FileTest.exists?("/proc/virtual")
result = "vserver_host"
@@ -34,19 +21,19 @@ Facter.add("virtual") do
# new Xen domains have this in dom0 not domu :(
if FileTest.exists?("/proc/sys/xen/independent_wallclock")
- result = "xenu"
+ result = "xenu"
end
if FileTest.exists?("/sys/bus/xen")
- result = "xenu"
+ result = "xenu"
end
if FileTest.exists?("/proc/xen/capabilities")
txt = File.read("/proc/xen/capabilities")
if txt =~ /control_d/i
- result = "xen0"
+ result = "xen0"
end
end
-
+
if result == "physical"
output = Facter::Util::Resolution.exec('lspci')
if not output.nil?
@@ -86,7 +73,7 @@ Facter.add("is_virtual") do
setcode do
case Facter.value(:virtual)
- when "xenu", "openvzve", "vmware"
+ when "xenu", "openvzve", "vmware"
true
else
false