summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Van Hevelingen <wvan13@gmail.com>2010-08-19 01:41:13 -0700
committerRein Henrichs <rein@puppetlabs.com>2010-10-04 14:20:58 -0700
commit244d2f13d0c911081d1e99365a1770f2022b839f (patch)
tree37a38420d4b9dbf6043826e3b4280a07a5def572
parent11544c16e514353f5fde5361a55cf04feb91fc64 (diff)
downloadfacter-244d2f13d0c911081d1e99365a1770f2022b839f.tar.gz
facter-244d2f13d0c911081d1e99365a1770f2022b839f.tar.xz
facter-244d2f13d0c911081d1e99365a1770f2022b839f.zip
Better fix for Bug 4569: Uptime Fact is incorrect on Windows
Patch removes reliance on clock ticks and instead queries for last boot time and subtracts from Time.now Signed-off-by: William Van Hevelingen <wvan13@gmail.com>
-rw-r--r--lib/facter/util/uptime.rb9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/facter/util/uptime.rb b/lib/facter/util/uptime.rb
index b62d7e9..6c60ace 100644
--- a/lib/facter/util/uptime.rb
+++ b/lib/facter/util/uptime.rb
@@ -8,9 +8,12 @@ module Facter::Util::Uptime
end
def self.get_uptime_seconds_win
- require 'Win32API'
- getTickCount = Win32API.new("kernel32", "GetTickCount", nil, 'L')
- (getTickCount.call() / 1000.0).to_i
+ require 'win32ole'
+ wmi = WIN32OLE.connect("winmgmts://")
+ query = wmi.ExecQuery("select * from Win32_OperatingSystem")
+ last_boot = ""
+ query.each { |x| last_boot = x.LastBootupTime}
+ self.compute_uptime(Time.parse(last_boot.split('.').first))
end
private