Added cross-platform uptime fact
Having an uptime fact allows you to check after a reboot whether the system was effectively rebooted. ```yaml - name: Safeguard - Was system properly rebooted ? action: fail msg="System was not properly rebooted" when: ansible_uptime > 900 ``` This patch has been tested on Linux, Solaris and HP-UX.
This commit is contained in:
parent
11b72df27b
commit
14a9966984
1 changed files with 25 additions and 0 deletions
|
@ -117,6 +117,7 @@ class Facts(object):
|
||||||
self.facts = {}
|
self.facts = {}
|
||||||
self.get_platform_facts()
|
self.get_platform_facts()
|
||||||
self.get_distribution_facts()
|
self.get_distribution_facts()
|
||||||
|
self.get_uptime()
|
||||||
self.get_cmdline()
|
self.get_cmdline()
|
||||||
self.get_public_ssh_host_keys()
|
self.get_public_ssh_host_keys()
|
||||||
self.get_selinux_facts()
|
self.get_selinux_facts()
|
||||||
|
@ -130,6 +131,20 @@ class Facts(object):
|
||||||
def populate(self):
|
def populate(self):
|
||||||
return self.facts
|
return self.facts
|
||||||
|
|
||||||
|
def get_uptime(self):
|
||||||
|
uptime_path = module.get_bin_path('uptime')
|
||||||
|
if uptime_path:
|
||||||
|
rc, out, err = module.run_command(uptime_path)
|
||||||
|
if rc == 0:
|
||||||
|
raw = out.replace(',','')
|
||||||
|
days = int(raw.split()[2])
|
||||||
|
if 'min' in raw:
|
||||||
|
hours = 0
|
||||||
|
minutes = int(raw[4])
|
||||||
|
else:
|
||||||
|
hours, minutes = map(int, raw.split()[4].split(':'))
|
||||||
|
self.facts['uptime'] = days*24*60*60 + hours*60*60 + minutes*60
|
||||||
|
|
||||||
# Platform
|
# Platform
|
||||||
# platform.system() can be Linux, Darwin, Java, or Windows
|
# platform.system() can be Linux, Darwin, Java, or Windows
|
||||||
def get_platform_facts(self):
|
def get_platform_facts(self):
|
||||||
|
@ -537,6 +552,11 @@ class LinuxHardware(Hardware):
|
||||||
pass
|
pass
|
||||||
return self.facts
|
return self.facts
|
||||||
|
|
||||||
|
def get_uptime(self):
|
||||||
|
data = get_file_content('/proc/uptime')
|
||||||
|
if data:
|
||||||
|
self.facts['uptime'] = float(data.split()[0])
|
||||||
|
|
||||||
def get_memory_facts(self):
|
def get_memory_facts(self):
|
||||||
if not os.access("/proc/meminfo", os.R_OK):
|
if not os.access("/proc/meminfo", os.R_OK):
|
||||||
return
|
return
|
||||||
|
@ -798,6 +818,11 @@ class SunOSHardware(Hardware):
|
||||||
self.get_memory_facts()
|
self.get_memory_facts()
|
||||||
return self.facts
|
return self.facts
|
||||||
|
|
||||||
|
def get_uptime(self):
|
||||||
|
rc, out, err = module.run_command("/usr/bin/kstat -p unix:0:system_misc:snaptime")
|
||||||
|
if out:
|
||||||
|
self.facts['uptime'] = float(out.split()[1])
|
||||||
|
|
||||||
def get_cpu_facts(self):
|
def get_cpu_facts(self):
|
||||||
physid = 0
|
physid = 0
|
||||||
sockets = {}
|
sockets = {}
|
||||||
|
|
Loading…
Reference in a new issue