summaryrefslogtreecommitdiffstats
path: root/lib/facter/virtual.rb
diff options
context:
space:
mode:
authorJames Turnbull <james@lovedthanlost.net>2009-05-02 21:40:22 +1000
committerJames Turnbull <james@lovedthanlost.net>2009-05-10 21:50:54 +1000
commit8e4a68983ca7605f7fdf9ea441c26eef9ff6b42e (patch)
tree9da4215877b1463ff7c69d8c7e7b26a9b95ad433 /lib/facter/virtual.rb
parent636a91de9304caf32d179b7de5ca6dca296a7f2c (diff)
downloadfacter-8e4a68983ca7605f7fdf9ea441c26eef9ff6b42e.tar.gz
facter-8e4a68983ca7605f7fdf9ea441c26eef9ff6b42e.tar.xz
facter-8e4a68983ca7605f7fdf9ea441c26eef9ff6b42e.zip
Fixes #2169 Correctly recognises dom0 and domUs
Diffstat (limited to 'lib/facter/virtual.rb')
-rw-r--r--lib/facter/virtual.rb24
1 files changed, 14 insertions, 10 deletions
diff --git a/lib/facter/virtual.rb b/lib/facter/virtual.rb
index 3ad6f8a..78e5485 100644
--- a/lib/facter/virtual.rb
+++ b/lib/facter/virtual.rb
@@ -18,17 +18,21 @@ Facter.add("virtual") do
end
end
- Thread::exclusive do
- if FileTest.exists?("/proc/xen/capabilities") && FileTest.readable?("/proc/xen/capabilities")
- txt = File.read("/proc/xen/capabilities")
- if txt =~ /control_d/i
- result = "xen0"
- else
- result = "xenu"
- end
- end
+ # new Xen domains have this in dom0 not domu :(
+ if FileTest.exists?("/proc/sys/xen/independent_wallclock")
+ result = "xenu"
end
-
+ if FileTest.exists?("/sys/bus/xen")
+ result = "xenu"
+ end
+
+ if FileTest.exists?("/proc/xen/capabilities")
+ txt = File.read("/proc/xen/capabilities")
+ if txt =~ /control_d/i
+ result = "xen0"
+ end
+ end
+
if result == "physical"
output = Facter::Util::Resolution.exec('lspci')
if not output.nil?