summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG2
-rw-r--r--lib/facter/uptime.rb19
-rw-r--r--lib/facter/util/uptime.rb32
3 files changed, 53 insertions, 0 deletions
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