From c2de35f1329dbaf6c843ff0a4967955ce989f2f0 Mon Sep 17 00:00:00 2001 From: James Turnbull Date: Mon, 26 Jan 2009 14:39:35 +1100 Subject: Added uptime facts --- CHANGELOG | 2 ++ lib/facter/uptime.rb | 19 +++++++++++++++++++ lib/facter/util/uptime.rb | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 lib/facter/uptime.rb create mode 100644 lib/facter/util/uptime.rb diff --git a/CHANGELOG b/CHANGELOG index 91ae3d4..4bd94e9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,6 @@ 1.5.3: + Added uptime facts + Fixed autotest on win32 Fixed #1870 - Added interface support for Darwin diff --git a/lib/facter/uptime.rb b/lib/facter/uptime.rb new file mode 100644 index 0000000..0ccd844 --- /dev/null +++ b/lib/facter/uptime.rb @@ -0,0 +1,19 @@ +require 'facter/util/uptime' + +Facter.add(:uptime) do + confine :operatingsystem => %w{Solaris Linux Fedora RedHat CentOS SuSE SLES Debian Ubuntu Gentoo AIX} + setcode do + Facter::Util::Uptime.get_uptime_simple + end +end + +uptime = Facter::Util::Uptime.get_uptime + +%w{days hours seconds}.each do |label| + Facter.add("uptime_" + label) do + confine :kernel => 'Linux' + setcode do + Facter::Util::Uptime.get_uptime_period(uptime, label) + end + end +end diff --git a/lib/facter/util/uptime.rb b/lib/facter/util/uptime.rb new file mode 100644 index 0000000..7c53b2c --- /dev/null +++ b/lib/facter/util/uptime.rb @@ -0,0 +1,32 @@ +# A module to gather uptime facts +# +module Facter::Util::Uptime + + def self.get_uptime_simple + time = Facter::Util::Resolution.exec('uptime') + if time =~ /up\s*(\d+\s\w+)/ + $1 + else + "unknown" + end + end + + def self.get_uptime + uptime, idletime = File.open("/proc/uptime").gets.split(" ") + uptime_seconds = uptime.to_i + end + + def self.get_uptime_period(seconds, label) + + case label + when 'days' + value = seconds / 86400 + when 'hours' + value = seconds / 3600 + when 'seconds' + seconds + end + + end + +end -- cgit