|
|
@ -117,6 +117,7 @@ class Facts(object):
|
|
|
|
{ 'path' : '/opt/local/bin/port', 'name' : 'macports' },
|
|
|
|
{ 'path' : '/opt/local/bin/port', 'name' : 'macports' },
|
|
|
|
{ 'path' : '/sbin/apk', 'name' : 'apk' },
|
|
|
|
{ 'path' : '/sbin/apk', 'name' : 'apk' },
|
|
|
|
{ 'path' : '/usr/sbin/pkg', 'name' : 'pkgng' },
|
|
|
|
{ 'path' : '/usr/sbin/pkg', 'name' : 'pkgng' },
|
|
|
|
|
|
|
|
{ 'path' : '/usr/sbin/swlist', 'name' : 'SD-UX' },
|
|
|
|
]
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
def __init__(self):
|
|
|
@ -182,7 +183,7 @@ class Facts(object):
|
|
|
|
Archlinux = 'Archlinux', Mandriva = 'Mandrake', Mandrake = 'Mandrake',
|
|
|
|
Archlinux = 'Archlinux', Mandriva = 'Mandrake', Mandrake = 'Mandrake',
|
|
|
|
Solaris = 'Solaris', Nexenta = 'Solaris', OmniOS = 'Solaris', OpenIndiana = 'Solaris',
|
|
|
|
Solaris = 'Solaris', Nexenta = 'Solaris', OmniOS = 'Solaris', OpenIndiana = 'Solaris',
|
|
|
|
SmartOS = 'Solaris', AIX = 'AIX', Alpine = 'Alpine', MacOSX = 'Darwin',
|
|
|
|
SmartOS = 'Solaris', AIX = 'AIX', Alpine = 'Alpine', MacOSX = 'Darwin',
|
|
|
|
FreeBSD = 'FreeBSD'
|
|
|
|
FreeBSD = 'FreeBSD', HPUX = 'HP-UX'
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
if self.facts['system'] == 'AIX':
|
|
|
|
if self.facts['system'] == 'AIX':
|
|
|
@ -191,6 +192,13 @@ class Facts(object):
|
|
|
|
data = out.split('.')
|
|
|
|
data = out.split('.')
|
|
|
|
self.facts['distribution_version'] = data[0]
|
|
|
|
self.facts['distribution_version'] = data[0]
|
|
|
|
self.facts['distribution_release'] = data[1]
|
|
|
|
self.facts['distribution_release'] = data[1]
|
|
|
|
|
|
|
|
elif self.facts['system'] == 'HP-UX':
|
|
|
|
|
|
|
|
self.facts['distribution'] = 'HP-UX'
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/sbin/swlist |egrep 'HPUX.*OE.*[AB].[0-9]+\.[0-9]+'")
|
|
|
|
|
|
|
|
data = re.search('HPUX.*OE.*([AB].[0-9]+\.[0-9]+)\.([0-9]+).*', out)
|
|
|
|
|
|
|
|
if data:
|
|
|
|
|
|
|
|
self.facts['distribution_version'] = data.groups()[0]
|
|
|
|
|
|
|
|
self.facts['distribution_release'] = data.groups()[1]
|
|
|
|
elif self.facts['system'] == 'Darwin':
|
|
|
|
elif self.facts['system'] == 'Darwin':
|
|
|
|
self.facts['distribution'] = 'MacOSX'
|
|
|
|
self.facts['distribution'] = 'MacOSX'
|
|
|
|
rc, out, err = module.run_command("/usr/bin/sw_vers -productVersion")
|
|
|
|
rc, out, err = module.run_command("/usr/bin/sw_vers -productVersion")
|
|
|
@ -1036,6 +1044,103 @@ class AIX(Hardware):
|
|
|
|
data = out.split()
|
|
|
|
data = out.split()
|
|
|
|
self.facts['firmware_version'] = data[1].strip('IBM,')
|
|
|
|
self.facts['firmware_version'] = data[1].strip('IBM,')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HPUX(Hardware):
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
HP-UX-specifig subclass of Hardware. Defines memory and CPU facts:
|
|
|
|
|
|
|
|
- memfree_mb
|
|
|
|
|
|
|
|
- memtotal_mb
|
|
|
|
|
|
|
|
- swapfree_mb
|
|
|
|
|
|
|
|
- swaptotal_mb
|
|
|
|
|
|
|
|
- processor
|
|
|
|
|
|
|
|
- processor_cores
|
|
|
|
|
|
|
|
- processor_count
|
|
|
|
|
|
|
|
- model
|
|
|
|
|
|
|
|
- firmware
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
platform = 'HP-UX'
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
|
|
|
|
Hardware.__init__(self)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def populate(self):
|
|
|
|
|
|
|
|
self.get_cpu_facts()
|
|
|
|
|
|
|
|
self.get_memory_facts()
|
|
|
|
|
|
|
|
self.get_hw_facts()
|
|
|
|
|
|
|
|
return self.facts
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_cpu_facts(self):
|
|
|
|
|
|
|
|
if self.facts['architecture'] == '9000/800':
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("ioscan -FkCprocessor|wc -l")
|
|
|
|
|
|
|
|
self.facts['processor_count'] = int(out.strip())
|
|
|
|
|
|
|
|
#Working with machinfo mess
|
|
|
|
|
|
|
|
elif self.facts['architecture'] == 'ia64':
|
|
|
|
|
|
|
|
if self.facts['distribution_version'] == "B.11.23":
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/contrib/bin/machinfo |grep 'Number of CPUs'")
|
|
|
|
|
|
|
|
self.facts['processor_count'] = int(out.strip().split('=')[1])
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/contrib/bin/machinfo |grep 'processor family'")
|
|
|
|
|
|
|
|
self.facts['processor'] = re.search('.*(Intel.*)', out).groups()[0].strip()
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("ioscan -FkCprocessor|wc -l")
|
|
|
|
|
|
|
|
self.facts['processor_cores'] = int(out.strip())
|
|
|
|
|
|
|
|
if self.facts['distribution_version'] == "B.11.31":
|
|
|
|
|
|
|
|
#if machinfo return cores strings release B.11.31 > 1204
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/contrib/bin/machinfo |grep core|wc -l")
|
|
|
|
|
|
|
|
if out.strip()== '0':
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/contrib/bin/machinfo |grep Intel")
|
|
|
|
|
|
|
|
self.facts['processor_count'] = int(out.strip().split(" ")[0])
|
|
|
|
|
|
|
|
#If hyperthreading is active divide cores by 2
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/sbin/psrset |grep LCPU")
|
|
|
|
|
|
|
|
data = re.sub(' +',' ',out).strip().split(' ')
|
|
|
|
|
|
|
|
if len(data) == 1:
|
|
|
|
|
|
|
|
hyperthreading = 'OFF'
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
hyperthreading = data[1]
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/contrib/bin/machinfo |grep logical")
|
|
|
|
|
|
|
|
data = out.strip().split(" ")
|
|
|
|
|
|
|
|
if hyperthreading == 'ON':
|
|
|
|
|
|
|
|
self.facts['processor_cores'] = int(data[0])/2
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
if len(data) == 1:
|
|
|
|
|
|
|
|
self.facts['processor_cores'] = self.facts['processor_count']
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
self.facts['processor_cores'] = int(data[0])
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/contrib/bin/machinfo |grep Intel |cut -d' ' -f4-")
|
|
|
|
|
|
|
|
self.facts['processor'] = out.strip()
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/contrib/bin/machinfo |egrep 'socket[s]?$' | tail -1");
|
|
|
|
|
|
|
|
self.facts['processor_count'] = int(out.strip().split(" ")[0])
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/contrib/bin/machinfo |grep -e '[0-9] core' |tail -1")
|
|
|
|
|
|
|
|
self.facts['processor_cores'] = int(out.strip().split(" ")[0])
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/contrib/bin/machinfo |grep Intel")
|
|
|
|
|
|
|
|
self.facts['processor'] = out.strip()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_memory_facts(self):
|
|
|
|
|
|
|
|
pagesize = 4096
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/bin/vmstat|tail -1")
|
|
|
|
|
|
|
|
data = int(re.sub(' +',' ',out).split(' ')[5].strip())
|
|
|
|
|
|
|
|
self.facts['memfree_mb'] = pagesize * data / 1024 / 1024
|
|
|
|
|
|
|
|
if self.facts['architecture'] == '9000/800':
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("grep Physical /var/adm/syslog/syslog.log")
|
|
|
|
|
|
|
|
data = re.search('.*Physical: ([0-9]*) Kbytes.*',out).groups()[0].strip()
|
|
|
|
|
|
|
|
self.facts['memtotal_mb'] = int(data) / 1024
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/contrib/bin/machinfo |grep Memory")
|
|
|
|
|
|
|
|
data = re.search('Memory[\ :=]*([0-9]*).*MB.*',out).groups()[0].strip()
|
|
|
|
|
|
|
|
self.facts['memtotal_mb'] = int(data)
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/sbin/swapinfo -m -d -f -q")
|
|
|
|
|
|
|
|
self.facts['swaptotal_mb'] = int(out.strip())
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/sbin/swapinfo -m -d -f |egrep '^dev|^fs'")
|
|
|
|
|
|
|
|
swap = 0
|
|
|
|
|
|
|
|
for line in out.strip().split('\n'):
|
|
|
|
|
|
|
|
swap += int(re.sub(' +',' ',line).split(' ')[3].strip())
|
|
|
|
|
|
|
|
self.facts['swapfree_mb'] = swap
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_hw_facts(self):
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("model")
|
|
|
|
|
|
|
|
self.facts['model'] = out.strip()
|
|
|
|
|
|
|
|
if self.facts['architecture'] == 'ia64':
|
|
|
|
|
|
|
|
rc, out, err = module.run_command("/usr/contrib/bin/machinfo |grep -i 'Firmware revision' |grep -v BMC")
|
|
|
|
|
|
|
|
self.facts['firmware_version'] = out.split(':')[1].strip()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Darwin(Hardware):
|
|
|
|
class Darwin(Hardware):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Darwin-specific subclass of Hardware. Defines memory and CPU facts:
|
|
|
|
Darwin-specific subclass of Hardware. Defines memory and CPU facts:
|
|
|
|