diff options
author | William Van Hevelingen <wvan13@gmail.com> | 2010-08-19 01:41:13 -0700 |
---|---|---|
committer | Rein Henrichs <rein@puppetlabs.com> | 2010-10-04 14:20:58 -0700 |
commit | 244d2f13d0c911081d1e99365a1770f2022b839f (patch) | |
tree | 37a38420d4b9dbf6043826e3b4280a07a5def572 | |
parent | 11544c16e514353f5fde5361a55cf04feb91fc64 (diff) | |
download | facter-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.rb | 9 |
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 |