summaryrefslogtreecommitdiffstats
path: root/lib/facter/virtual.rb
diff options
context:
space:
mode:
authorJames Turnbull <james@lovedthanlost.net>2009-05-13 11:12:29 +1000
committerJames Turnbull <james@lovedthanlost.net>2009-05-13 11:12:29 +1000
commit831d937a88e6de9e2e4ff8c3bfe025abfd2ac99a (patch)
tree871a3267d2c0445b2ff82024a2a7068ec14a05b7 /lib/facter/virtual.rb
parent7f3d237823a8e6817a770a83848578cc6e6250e6 (diff)
downloadfacter-831d937a88e6de9e2e4ff8c3bfe025abfd2ac99a.tar.gz
facter-831d937a88e6de9e2e4ff8c3bfe025abfd2ac99a.tar.xz
facter-831d937a88e6de9e2e4ff8c3bfe025abfd2ac99a.zip
Refactor #2154 - Modified patch from Benedikt Bohm to simplify openvz and vserver detection
Diffstat (limited to 'lib/facter/virtual.rb')
-rw-r--r--lib/facter/virtual.rb30
1 files changed, 13 insertions, 17 deletions
diff --git a/lib/facter/virtual.rb b/lib/facter/virtual.rb
index 907f9ca..203d306 100644
--- a/lib/facter/virtual.rb
+++ b/lib/facter/virtual.rb
@@ -13,18 +13,25 @@ Facter.add("virtual") do
end
end
- if FileTest.exists?("/proc/user_beancounters")
- # openvz. can be hardware node or virtual environment
- # read the init process' status file, it has laxer permissions
- # than /proc/user_beancounters (so this won't fail as non-root)
- txt = File.read("/proc/1/status")
- if txt =~ /^envID:[[:blank:]]+0$/mi
+ if FileTest.exists?("/proc/vz/veinfo")
+ if FileTest.exists?("/proc/vz/version")
result = "openvzhn"
else
result = "openvzve"
end
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
+
+ if FileTest.exists?("/proc/virtual")
+ result = "vserver_host"
+ end
+
# new Xen domains have this in dom0 not domu :(
if FileTest.exists?("/proc/sys/xen/independent_wallclock")
result = "xenu"
@@ -70,17 +77,6 @@ Facter.add("virtual") do
result = "vmware_server"
end
- output = Facter::Util::Resolution.exec('mount')
- if not output.nil?
- output.each_line do |p|
- result = "vserver" if p =~ /\/dev\/hdv1/
- end
- end
-
- if FileTest.directory?('/proc/virtual') && result=="physical"
- result = "vserver_host"
- end
-
result
end
end