diff options
author | James Turnbull <james@lovedthanlost.net> | 2009-03-07 02:47:52 +1100 |
---|---|---|
committer | James Turnbull <james@lovedthanlost.net> | 2009-03-07 02:47:52 +1100 |
commit | 9376e5bf883dc9460a4e19c7952c7c996f43e0e3 (patch) | |
tree | 3d0b32b3242cacb39d5ccc247d622a6b780782b5 /lib/facter/virtual.rb | |
parent | c754949993e22095912930211d3b5411e34bf1dc (diff) | |
download | facter-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.rb | 18 |
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" |