diff options
author | James Turnbull <james@lovedthanlost.net> | 2009-05-13 11:12:29 +1000 |
---|---|---|
committer | James Turnbull <james@lovedthanlost.net> | 2009-05-13 11:12:29 +1000 |
commit | 831d937a88e6de9e2e4ff8c3bfe025abfd2ac99a (patch) | |
tree | 871a3267d2c0445b2ff82024a2a7068ec14a05b7 /lib/facter/virtual.rb | |
parent | 7f3d237823a8e6817a770a83848578cc6e6250e6 (diff) | |
download | facter-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.rb | 30 |
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 |