summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Turnbull <james@lovedthanlost.net>2009-01-26 14:39:35 +1100
committerJames Turnbull <james@lovedthanlost.net>2009-01-26 14:39:35 +1100
commitc2de35f1329dbaf6c843ff0a4967955ce989f2f0 (patch)
tree53e947fa5a70e2d6690be2c6a72ed1d213dee135
parent02c2912fb94edd37d6d7001e28714c11d5939f6d (diff)
downloadfacter-c2de35f1329dbaf6c843ff0a4967955ce989f2f0.tar.gz
facter-c2de35f1329dbaf6c843ff0a4967955ce989f2f0.tar.xz
facter-c2de35f1329dbaf6c843ff0a4967955ce989f2f0.zip
Added uptime facts
-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