summaryrefslogtreecommitdiffstats
path: root/lib/facter/virtual.rb
diff options
context:
space:
mode:
authorJames Turnbull <james@lovedthanlost.net>2009-03-07 02:47:52 +1100
committerJames Turnbull <james@lovedthanlost.net>2009-03-07 02:47:52 +1100
commit9376e5bf883dc9460a4e19c7952c7c996f43e0e3 (patch)
tree3d0b32b3242cacb39d5ccc247d622a6b780782b5 /lib/facter/virtual.rb
parentc754949993e22095912930211d3b5411e34bf1dc (diff)
downloadfacter-9376e5bf883dc9460a4e19c7952c7c996f43e0e3.tar.gz
facter-9376e5bf883dc9460a4e19c7952c7c996f43e0e3.tar.xz
facter-9376e5bf883dc9460a4e19c7952c7c996f43e0e3.zip
Fixed #2044 - virtual fact thread fix
Diffstat (limited to 'lib/facter/virtual.rb')
-rw-r--r--lib/facter/virtual.rb18
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/facter/virtual.rb b/lib/facter/virtual.rb
index 8150718..2c92532 100644
--- a/lib/facter/virtual.rb
+++ b/lib/facter/virtual.rb
@@ -4,6 +4,8 @@ Facter.add("virtual") do
result = "physical"
setcode do
+ require 'thread'
+
if FileTest.exists?("/proc/user_beancounters")
# openvz. can be hardware node or virtual environment
# read the init process' status file, it has laxer permissions
@@ -16,13 +18,15 @@ Facter.add("virtual") do
end
end
- 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
+ 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
end
if result == "physical"