summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToshio Kuratomi <toshio@fedoraproject.org>2016-03-10 10:38:38 -0800
committerToshio Kuratomi <toshio@fedoraproject.org>2016-03-11 12:03:46 -0800
commit08983990468b603eac5bcab5225783a024972b05 (patch)
tree1beeb0fafb5e44ad04377e3185e5ca10c958262f
parent5128167ee694ae3281f3b3e96ec31c267a55f2cb (diff)
downloadansible-facts-cleanup.tar.gz
Three cleanups to facts.pyfacts-cleanup
* Use a passed in modules parameter rather than global modules. This is needed for ziploader * Remove unneeded __init__() * Remove uneeded multiple inheritance from a base class
-rw-r--r--lib/ansible/module_utils/facts.py283
1 files changed, 113 insertions, 170 deletions
diff --git a/lib/ansible/module_utils/facts.py b/lib/ansible/module_utils/facts.py
index 1aa16c9fee..c59411df67 100644
--- a/lib/ansible/module_utils/facts.py
+++ b/lib/ansible/module_utils/facts.py
@@ -159,8 +159,9 @@ class Facts(object):
{ 'path' : '/usr/local/sbin/pkg', 'name' : 'pkgng' },
]
- def __init__(self, load_on_init=True):
+ def __init__(self, module, load_on_init=True):
+ self.module = module
self.facts = {}
if load_on_init:
@@ -215,14 +216,14 @@ class Facts(object):
elif self.facts['system'] == 'AIX':
# Attempt to use getconf to figure out architecture
# fall back to bootinfo if needed
- if module.get_bin_path('getconf'):
- rc, out, err = module.run_command([module.get_bin_path('getconf'),
- 'MACHINE_ARCHITECTURE'])
+ getconf_bin = self.module.get_bin_path('getconf')
+ if getconf_bin:
+ rc, out, err = self.module.run_command([getconf_bin, 'MACHINE_ARCHITECTURE'])
data = out.split('\n')
self.facts['architecture'] = data[0]
else:
- rc, out, err = module.run_command([module.get_bin_path('bootinfo'),
- '-p'])
+ bootinfo_bin = self.module.get_bin_path('bootinfo')
+ rc, out, err = self.module.run_command([bootinfo_bin, '-p'])
data = out.split('\n')
self.facts['architecture'] = data[0]
elif self.facts['system'] == 'OpenBSD':
@@ -230,7 +231,7 @@ class Facts(object):
def get_local_facts(self):
- fact_path = module.params.get('fact_path', None)
+ fact_path = self.module.params.get('fact_path', None)
if not fact_path or not os.path.exists(fact_path):
return
@@ -243,7 +244,7 @@ class Facts(object):
# try to read it as json first
# if that fails read it with ConfigParser
# if that fails, skip it
- rc, out, err = module.run_command(fn)
+ rc, out, err = self.module.run_command(fn)
else:
out = get_file_content(fn, default='')
@@ -294,20 +295,20 @@ class Facts(object):
# as it's much cleaner than this massive if-else
if self.facts['system'] == 'AIX':
self.facts['distribution'] = 'AIX'
- rc, out, err = module.run_command("/usr/bin/oslevel")
+ rc, out, err = self.module.run_command("/usr/bin/oslevel")
data = out.split('.')
self.facts['distribution_version'] = data[0]
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]+'", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/sbin/swlist |egrep 'HPUX.*OE.*[AB].[0-9]+\.[0-9]+'", use_unsafe_shell=True)
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':
self.facts['distribution'] = 'MacOSX'
- rc, out, err = module.run_command("/usr/bin/sw_vers -productVersion")
+ rc, out, err = self.module.run_command("/usr/bin/sw_vers -productVersion")
data = out.split()[-1]
self.facts['distribution_version'] = data
elif self.facts['system'] == 'FreeBSD':
@@ -321,7 +322,7 @@ class Facts(object):
elif self.facts['system'] == 'OpenBSD':
self.facts['distribution'] = 'OpenBSD'
self.facts['distribution_release'] = platform.release()
- rc, out, err = module.run_command("/sbin/sysctl -n kern.version")
+ rc, out, err = self.module.run_command("/sbin/sysctl -n kern.version")
match = re.match('OpenBSD\s[0-9]+.[0-9]+-(\S+)\s.*', out)
if match:
self.facts['distribution_version'] = match.groups()[0]
@@ -411,7 +412,7 @@ class Facts(object):
self.facts['distribution_release'] = ora_prefix + data
break
- uname_rc, uname_out, uname_err = module.run_command(['uname', '-v'])
+ uname_rc, uname_out, uname_err = self.module.run_command(['uname', '-v'])
distribution_version = None
if 'SmartOS' in data:
self.facts['distribution'] = 'SmartOS'
@@ -577,7 +578,7 @@ class Facts(object):
# try various forms of querying pid 1
proc_1 = get_file_content('/proc/1/comm')
if proc_1 is None:
- rc, proc_1, err = module.run_command("ps -p 1 -o comm|tail -n 1", use_unsafe_shell=True)
+ rc, proc_1, err = self.module.run_command("ps -p 1 -o comm|tail -n 1", use_unsafe_shell=True)
else:
proc_1 = os.path.basename(proc_1)
@@ -610,7 +611,7 @@ class Facts(object):
elif self.facts['system'] == 'Linux':
if self._check_systemd():
self.facts['service_mgr'] = 'systemd'
- elif module.get_bin_path('initctl') and os.path.exists("/etc/init/"):
+ elif self.module.get_bin_path('initctl') and os.path.exists("/etc/init/"):
self.facts['service_mgr'] = 'upstart'
elif os.path.realpath('/sbin/rc') == '/sbin/openrc':
self.facts['service_mgr'] = 'openrc'
@@ -622,9 +623,9 @@ class Facts(object):
self.facts['service_mgr'] = 'service'
def get_lsb_facts(self):
- lsb_path = module.get_bin_path('lsb_release')
+ lsb_path = self.module.get_bin_path('lsb_release')
if lsb_path:
- rc, out, err = module.run_command([lsb_path, "-a"])
+ rc, out, err = self.module.run_command([lsb_path, "-a"])
if rc == 0:
self.facts['lsb'] = {}
for line in out.split('\n'):
@@ -732,7 +733,7 @@ class Facts(object):
def _check_systemd(self):
# tools must be installed
- if module.get_bin_path('systemctl'):
+ if self.module.get_bin_path('systemctl'):
# this should show if systemd is the boot init system, if checking init faild to mark as systemd
# these mirror systemd's own sd_boot test http://www.freedesktop.org/software/systemd/man/sd_booted.html
@@ -842,9 +843,6 @@ class Hardware(Facts):
subclass = sc
return super(cls, subclass).__new__(subclass, *arguments, **keyword)
- def __init__(self):
- Facts.__init__(self)
-
def populate(self):
return self.facts
@@ -869,9 +867,6 @@ class LinuxHardware(Hardware):
# Now we have all of these in a dict structure
MEMORY_FACTS = ORIGINAL_MEMORY_FACTS.union(('Buffers', 'Cached', 'SwapCached'))
- def __init__(self):
- Hardware.__init__(self)
-
def populate(self):
self.get_cpu_facts()
self.get_memory_facts()
@@ -1055,7 +1050,7 @@ class LinuxHardware(Hardware):
else:
# Fall back to using dmidecode, if available
- dmi_bin = module.get_bin_path('dmidecode')
+ dmi_bin = self.module.get_bin_path('dmidecode')
DMI_DICT = {
'bios_date': 'bios-release-date',
'bios_version': 'bios-version',
@@ -1068,7 +1063,7 @@ class LinuxHardware(Hardware):
}
for (k, v) in DMI_DICT.items():
if dmi_bin is not None:
- (rc, out, err) = module.run_command('%s -s %s' % (dmi_bin, v))
+ (rc, out, err) = self.module.run_command('%s -s %s' % (dmi_bin, v))
if rc == 0:
# Strip out commented lines (specific dmidecode output)
thisvalue = ''.join([ line for line in out.split('\n') if not line.startswith('#') ])
@@ -1097,9 +1092,9 @@ class LinuxHardware(Hardware):
uuid = uuids[fields[0]]
else:
uuid = 'NA'
- lsblkPath = module.get_bin_path("lsblk")
+ lsblkPath = self.module.get_bin_path("lsblk")
if lsblkPath:
- rc, out, err = module.run_command("%s -ln --output UUID %s" % (lsblkPath, fields[0]), use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("%s -ln --output UUID %s" % (lsblkPath, fields[0]), use_unsafe_shell=True)
if rc == 0:
uuid = out.strip()
@@ -1118,9 +1113,9 @@ class LinuxHardware(Hardware):
def get_device_facts(self):
self.facts['devices'] = {}
- lspci = module.get_bin_path('lspci')
+ lspci = self.module.get_bin_path('lspci')
if lspci:
- rc, pcidata, err = module.run_command([lspci, '-D'])
+ rc, pcidata, err = self.module.run_command([lspci, '-D'])
else:
pcidata = None
@@ -1173,7 +1168,7 @@ class LinuxHardware(Hardware):
part['sectorsize'] = get_file_content(part_sysdir + "/queue/logical_block_size")
if not part['sectorsize']:
part['sectorsize'] = get_file_content(part_sysdir + "/queue/hw_sector_size",512)
- part['size'] = module.pretty_bytes((float(part['sectors']) * float(part['sectorsize'])))
+ part['size'] = self.module.pretty_bytes((float(part['sectors']) * float(part['sectorsize'])))
d['partitions'][partname] = part
d['rotational'] = get_file_content(sysdir + "/queue/rotational")
@@ -1190,7 +1185,7 @@ class LinuxHardware(Hardware):
d['sectorsize'] = get_file_content(sysdir + "/queue/logical_block_size")
if not d['sectorsize']:
d['sectorsize'] = get_file_content(sysdir + "/queue/hw_sector_size",512)
- d['size'] = module.pretty_bytes(float(d['sectors']) * float(d['sectorsize']))
+ d['size'] = self.module.pretty_bytes(float(d['sectors']) * float(d['sectorsize']))
d['host'] = ""
@@ -1225,14 +1220,14 @@ class LinuxHardware(Hardware):
def get_lvm_facts(self):
""" Get LVM Facts if running as root and lvm utils are available """
- if os.getuid() == 0 and module.get_bin_path('vgs'):
+ if os.getuid() == 0 and self.module.get_bin_path('vgs'):
lvm_util_options = '--noheadings --nosuffix --units g'
- vgs_path = module.get_bin_path('vgs')
+ vgs_path = self.module.get_bin_path('vgs')
#vgs fields: VG #PV #LV #SN Attr VSize VFree
vgs={}
if vgs_path:
- rc, vg_lines, err = module.run_command( '%s %s' % (vgs_path, lvm_util_options))
+ rc, vg_lines, err = self.module.run_command( '%s %s' % (vgs_path, lvm_util_options))
for vg_line in vg_lines.splitlines():
items = vg_line.split()
vgs[items[0]] = {'size_g':items[-2],
@@ -1240,12 +1235,12 @@ class LinuxHardware(Hardware):
'num_lvs': items[2],
'num_pvs': items[1]}
- lvs_path = module.get_bin_path('lvs')
+ lvs_path = self.module.get_bin_path('lvs')
#lvs fields:
#LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
lvs = {}
if lvs_path:
- rc, lv_lines, err = module.run_command( '%s %s' % (lvs_path, lvm_util_options))
+ rc, lv_lines, err = self.module.run_command( '%s %s' % (lvs_path, lvm_util_options))
for lv_line in lv_lines.splitlines():
items = lv_line.split()
lvs[items[0]] = {'size_g': items[3], 'vg': items[1]}
@@ -1260,9 +1255,6 @@ class SunOSHardware(Hardware):
"""
platform = 'SunOS'
- def __init__(self):
- Hardware.__init__(self)
-
def populate(self):
self.get_cpu_facts()
self.get_memory_facts()
@@ -1275,7 +1267,7 @@ class SunOSHardware(Hardware):
def get_cpu_facts(self):
physid = 0
sockets = {}
- rc, out, err = module.run_command("/usr/bin/kstat cpu_info")
+ rc, out, err = self.module.run_command("/usr/bin/kstat cpu_info")
self.facts['processor'] = []
for line in out.split('\n'):
if len(line) < 1:
@@ -1316,11 +1308,11 @@ class SunOSHardware(Hardware):
self.facts['processor_count'] = len(self.facts['processor'])
def get_memory_facts(self):
- rc, out, err = module.run_command(["/usr/sbin/prtconf"])
+ rc, out, err = self.module.run_command(["/usr/sbin/prtconf"])
for line in out.split('\n'):
if 'Memory size' in line:
self.facts['memtotal_mb'] = line.split()[2]
- rc, out, err = module.run_command("/usr/sbin/swap -s")
+ rc, out, err = self.module.run_command("/usr/sbin/swap -s")
allocated = long(out.split()[1][:-1])
reserved = long(out.split()[5][:-1])
used = long(out.split()[8][:-1])
@@ -1359,9 +1351,6 @@ class OpenBSDHardware(Hardware):
platform = 'OpenBSD'
DMESG_BOOT = '/var/run/dmesg.boot'
- def __init__(self):
- Hardware.__init__(self)
-
def populate(self):
self.sysctl = self.get_sysctl()
self.get_memory_facts()
@@ -1371,7 +1360,7 @@ class OpenBSDHardware(Hardware):
return self.facts
def get_sysctl(self):
- rc, out, err = module.run_command(["/sbin/sysctl", "hw"])
+ rc, out, err = self.module.run_command(["/sbin/sysctl", "hw"])
if rc != 0:
return dict()
sysctl = dict()
@@ -1400,7 +1389,7 @@ class OpenBSDHardware(Hardware):
# procs memory page disks traps cpu
# r b w avm fre flt re pi po fr sr wd0 fd0 int sys cs us sy id
# 0 0 0 47512 28160 51 0 0 0 0 0 1 0 116 89 17 0 1 99
- rc, out, err = module.run_command("/usr/bin/vmstat")
+ rc, out, err = self.module.run_command("/usr/bin/vmstat")
if rc == 0:
self.facts['memfree_mb'] = long(out.splitlines()[-1].split()[4]) / 1024
self.facts['memtotal_mb'] = long(self.sysctl['hw.usermem']) / 1024 / 1024
@@ -1409,7 +1398,7 @@ class OpenBSDHardware(Hardware):
# total: 69268 1K-blocks allocated, 0 used, 69268 available
# And for older OpenBSD:
# total: 69268k bytes allocated = 0k used, 69268k available
- rc, out, err = module.run_command("/sbin/swapctl -sk")
+ rc, out, err = self.module.run_command("/sbin/swapctl -sk")
if rc == 0:
swaptrans = maketrans(' ', ' ')
data = out.split()
@@ -1420,7 +1409,7 @@ class OpenBSDHardware(Hardware):
processor = []
dmesg_boot = get_file_content(OpenBSDHardware.DMESG_BOOT)
if not dmesg_boot:
- rc, dmesg_boot, err = module.run_command("/sbin/dmesg")
+ rc, dmesg_boot, err = self.module.run_command("/sbin/dmesg")
i = 0
for line in dmesg_boot.splitlines():
if line.split(' ', 1)[0] == 'cpu%i:' % i:
@@ -1452,9 +1441,6 @@ class FreeBSDHardware(Hardware):
platform = 'FreeBSD'
DMESG_BOOT = '/var/run/dmesg.boot'
- def __init__(self):
- Hardware.__init__(self)
-
def populate(self):
self.get_cpu_facts()
self.get_memory_facts()
@@ -1468,12 +1454,12 @@ class FreeBSDHardware(Hardware):
def get_cpu_facts(self):
self.facts['processor'] = []
- rc, out, err = module.run_command("/sbin/sysctl -n hw.ncpu")
+ rc, out, err = self.module.run_command("/sbin/sysctl -n hw.ncpu")
self.facts['processor_count'] = out.strip()
dmesg_boot = get_file_content(FreeBSDHardware.DMESG_BOOT)
if not dmesg_boot:
- rc, dmesg_boot, err = module.run_command("/sbin/dmesg")
+ rc, dmesg_boot, err = self.module.run_command("/sbin/dmesg")
for line in dmesg_boot.split('\n'):
if 'CPU:' in line:
cpu = re.sub(r'CPU:\s+', r"", line)
@@ -1483,7 +1469,7 @@ class FreeBSDHardware(Hardware):
def get_memory_facts(self):
- rc, out, err = module.run_command("/sbin/sysctl vm.stats")
+ rc, out, err = self.module.run_command("/sbin/sysctl vm.stats")
for line in out.split('\n'):
data = line.split()
if 'vm.stats.vm.v_page_size' in line:
@@ -1498,7 +1484,7 @@ class FreeBSDHardware(Hardware):
# Device 1M-blocks Used Avail Capacity
# /dev/ada0p3 314368 0 314368 0%
#
- rc, out, err = module.run_command("/usr/sbin/swapinfo -k")
+ rc, out, err = self.module.run_command("/usr/sbin/swapinfo -k")
lines = out.split('\n')
if len(lines[-1]) == 0:
lines.pop()
@@ -1522,7 +1508,7 @@ class FreeBSDHardware(Hardware):
def get_device_facts(self):
sysdir = '/dev'
self.facts['devices'] = {}
- drives = re.compile('(ada?\d+|da\d+|a?cd\d+)') #TODO: rc, disks, err = module.run_command("/sbin/sysctl kern.disks")
+ drives = re.compile('(ada?\d+|da\d+|a?cd\d+)') #TODO: rc, disks, err = self.module.run_command("/sbin/sysctl kern.disks")
slices = re.compile('(ada?\d+s\d+\w*|da\d+s\d+\w*)')
if os.path.isdir(sysdir):
dirlist = sorted(os.listdir(sysdir))
@@ -1540,7 +1526,7 @@ class FreeBSDHardware(Hardware):
Use dmidecode executable if available'''
# Fall back to using dmidecode, if available
- dmi_bin = module.get_bin_path('dmidecode')
+ dmi_bin = self.module.get_bin_path('dmidecode')
DMI_DICT = dict(
bios_date='bios-release-date',
bios_version='bios-version',
@@ -1553,7 +1539,7 @@ class FreeBSDHardware(Hardware):
)
for (k, v) in DMI_DICT.items():
if dmi_bin is not None:
- (rc, out, err) = module.run_command('%s -s %s' % (dmi_bin, v))
+ (rc, out, err) = self.module.run_command('%s -s %s' % (dmi_bin, v))
if rc == 0:
# Strip out commented lines (specific dmidecode output)
self.facts[k] = ''.join([ line for line in out.split('\n') if not line.startswith('#') ])
@@ -1584,9 +1570,6 @@ class NetBSDHardware(Hardware):
platform = 'NetBSD'
MEMORY_FACTS = ['MemTotal', 'SwapTotal', 'MemFree', 'SwapFree']
- def __init__(self):
- Hardware.__init__(self)
-
def populate(self):
self.get_cpu_facts()
self.get_memory_facts()
@@ -1662,9 +1645,6 @@ class AIX(Hardware):
"""
platform = 'AIX'
- def __init__(self):
- Hardware.__init__(self)
-
def populate(self):
self.get_cpu_facts()
self.get_memory_facts()
@@ -1675,7 +1655,7 @@ class AIX(Hardware):
self.facts['processor'] = []
- rc, out, err = module.run_command("/usr/sbin/lsdev -Cc processor")
+ rc, out, err = self.module.run_command("/usr/sbin/lsdev -Cc processor")
if out:
i = 0
for line in out.split('\n'):
@@ -1688,19 +1668,19 @@ class AIX(Hardware):
i += 1
self.facts['processor_count'] = int(i)
- rc, out, err = module.run_command("/usr/sbin/lsattr -El " + cpudev + " -a type")
+ rc, out, err = self.module.run_command("/usr/sbin/lsattr -El " + cpudev + " -a type")
data = out.split(' ')
self.facts['processor'] = data[1]
- rc, out, err = module.run_command("/usr/sbin/lsattr -El " + cpudev + " -a smt_threads")
+ rc, out, err = self.module.run_command("/usr/sbin/lsattr -El " + cpudev + " -a smt_threads")
data = out.split(' ')
self.facts['processor_cores'] = int(data[1])
def get_memory_facts(self):
pagesize = 4096
- rc, out, err = module.run_command("/usr/bin/vmstat -v")
+ rc, out, err = self.module.run_command("/usr/bin/vmstat -v")
for line in out.split('\n'):
data = line.split()
if 'memory pages' in line:
@@ -1713,7 +1693,7 @@ class AIX(Hardware):
# Device 1M-blocks Used Avail Capacity
# /dev/ada0p3 314368 0 314368 0%
#
- rc, out, err = module.run_command("/usr/sbin/lsps -s")
+ rc, out, err = self.module.run_command("/usr/sbin/lsps -s")
if out:
lines = out.split('\n')
data = lines[1].split()
@@ -1723,7 +1703,7 @@ class AIX(Hardware):
self.facts['swapfree_mb'] = long(swaptotal_mb * ( 100 - percused ) / 100)
def get_dmi_facts(self):
- rc, out, err = module.run_command("/usr/sbin/lsattr -El sys0 -a fwversion")
+ rc, out, err = self.module.run_command("/usr/sbin/lsattr -El sys0 -a fwversion")
data = out.split()
self.facts['firmware_version'] = data[1].strip('IBM,')
@@ -1743,9 +1723,6 @@ class HPUX(Hardware):
platform = 'HP-UX'
- def __init__(self):
- Hardware.__init__(self)
-
def populate(self):
self.get_cpu_facts()
self.get_memory_facts()
@@ -1754,31 +1731,31 @@ class HPUX(Hardware):
def get_cpu_facts(self):
if self.facts['architecture'] == '9000/800':
- rc, out, err = module.run_command("ioscan -FkCprocessor | wc -l", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("ioscan -FkCprocessor | wc -l", use_unsafe_shell=True)
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'", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/contrib/bin/machinfo | grep 'Number of CPUs'", use_unsafe_shell=True)
self.facts['processor_count'] = int(out.strip().split('=')[1])
- rc, out, err = module.run_command("/usr/contrib/bin/machinfo | grep 'processor family'", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/contrib/bin/machinfo | grep 'processor family'", use_unsafe_shell=True)
self.facts['processor'] = re.search('.*(Intel.*)', out).groups()[0].strip()
- rc, out, err = module.run_command("ioscan -FkCprocessor | wc -l", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("ioscan -FkCprocessor | wc -l", use_unsafe_shell=True)
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", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/contrib/bin/machinfo | grep core | wc -l", use_unsafe_shell=True)
if out.strip()== '0':
- rc, out, err = module.run_command("/usr/contrib/bin/machinfo | grep Intel", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/contrib/bin/machinfo | grep Intel", use_unsafe_shell=True)
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", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/sbin/psrset | grep LCPU", use_unsafe_shell=True)
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", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/contrib/bin/machinfo | grep logical", use_unsafe_shell=True)
data = out.strip().split(" ")
if hyperthreading == 'ON':
self.facts['processor_cores'] = int(data[0])/2
@@ -1787,54 +1764,54 @@ class HPUX(Hardware):
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-", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/contrib/bin/machinfo | grep Intel |cut -d' ' -f4-", use_unsafe_shell=True)
self.facts['processor'] = out.strip()
else:
- rc, out, err = module.run_command("/usr/contrib/bin/machinfo | egrep 'socket[s]?$' | tail -1", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/contrib/bin/machinfo | egrep 'socket[s]?$' | tail -1", use_unsafe_shell=True)
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", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/contrib/bin/machinfo | grep -e '[0-9] core' | tail -1", use_unsafe_shell=True)
self.facts['processor_cores'] = int(out.strip().split(" ")[0])
- rc, out, err = module.run_command("/usr/contrib/bin/machinfo | grep Intel", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/contrib/bin/machinfo | grep Intel", use_unsafe_shell=True)
self.facts['processor'] = out.strip()
def get_memory_facts(self):
pagesize = 4096
- rc, out, err = module.run_command("/usr/bin/vmstat | tail -1", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/bin/vmstat | tail -1", use_unsafe_shell=True)
data = int(re.sub(' +',' ',out).split(' ')[5].strip())
self.facts['memfree_mb'] = pagesize * data / 1024 / 1024
if self.facts['architecture'] == '9000/800':
try:
- rc, out, err = module.run_command("grep Physical /var/adm/syslog/syslog.log")
+ rc, out, err = self.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
except AttributeError:
#For systems where memory details aren't sent to syslog or the log has rotated, use parsed
#adb output. Unfortunately /dev/kmem doesn't have world-read, so this only works as root.
if os.access("/dev/kmem", os.R_OK):
- rc, out, err = module.run_command("echo 'phys_mem_pages/D' | adb -k /stand/vmunix /dev/kmem | tail -1 | awk '{print $2}'", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("echo 'phys_mem_pages/D' | adb -k /stand/vmunix /dev/kmem | tail -1 | awk '{print $2}'", use_unsafe_shell=True)
if not err:
data = out
self.facts['memtotal_mb'] = int(data) / 256
else:
- rc, out, err = module.run_command("/usr/contrib/bin/machinfo | grep Memory", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/contrib/bin/machinfo | grep Memory", use_unsafe_shell=True)
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")
+ rc, out, err = self.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'", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/sbin/swapinfo -m -d -f | egrep '^dev|^fs'", use_unsafe_shell=True)
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")
+ rc, out, err = self.module.run_command("model")
self.facts['model'] = out.strip()
if self.facts['architecture'] == 'ia64':
separator = ':'
if self.facts['distribution_version'] == "B.11.23":
separator = '='
- rc, out, err = module.run_command("/usr/contrib/bin/machinfo |grep -i 'Firmware revision' | grep -v BMC", use_unsafe_shell=True)
+ rc, out, err = self.module.run_command("/usr/contrib/bin/machinfo |grep -i 'Firmware revision' | grep -v BMC", use_unsafe_shell=True)
self.facts['firmware_version'] = out.split(separator)[1].strip()
@@ -1851,9 +1828,6 @@ class Darwin(Hardware):
"""
platform = 'Darwin'
- def __init__(self):
- Hardware.__init__(self)
-
def populate(self):
self.sysctl = self.get_sysctl()
self.get_mac_facts()
@@ -1862,7 +1836,7 @@ class Darwin(Hardware):
return self.facts
def get_sysctl(self):
- rc, out, err = module.run_command(["/usr/sbin/sysctl", "hw", "machdep", "kern"])
+ rc, out, err = self.module.run_command(["/usr/sbin/sysctl", "hw", "machdep", "kern"])
if rc != 0:
return dict()
sysctl = dict()
@@ -1873,7 +1847,7 @@ class Darwin(Hardware):
return sysctl
def get_system_profile(self):
- rc, out, err = module.run_command(["/usr/sbin/system_profiler", "SPHardwareDataType"])
+ rc, out, err = self.module.run_command(["/usr/sbin/system_profiler", "SPHardwareDataType"])
if rc != 0:
return dict()
system_profile = dict()
@@ -1884,7 +1858,7 @@ class Darwin(Hardware):
return system_profile
def get_mac_facts(self):
- rc, out, err = module.run_command("sysctl hw.model")
+ rc, out, err = self.module.run_command("sysctl hw.model")
if rc == 0:
self.facts['model'] = out.splitlines()[-1].split()[1]
self.facts['osversion'] = self.sysctl['kern.osversion']
@@ -1902,7 +1876,7 @@ class Darwin(Hardware):
def get_memory_facts(self):
self.facts['memtotal_mb'] = long(self.sysctl['hw.memsize']) / 1024 / 1024
- rc, out, err = module.run_command("sysctl hw.usermem")
+ rc, out, err = self.module.run_command("sysctl hw.usermem")
if rc == 0:
self.facts['memfree_mb'] = long(out.splitlines()[-1].split()[1]) / 1024 / 1024
@@ -1933,10 +1907,6 @@ class Network(Facts):
subclass = sc
return super(cls, subclass).__new__(subclass, *arguments, **keyword)
- def __init__(self, module):
- self.module = module
- Facts.__init__(self)
-
def populate(self):
return self.facts
@@ -1950,9 +1920,6 @@ class LinuxNetwork(Network):
"""
platform = 'Linux'
- def __init__(self, module):
- Network.__init__(self, module)
-
def populate(self):
ip_path = self.module.get_bin_path('ip')
if ip_path is None:
@@ -1984,7 +1951,7 @@ class LinuxNetwork(Network):
continue
if v == 'v6' and not socket.has_ipv6:
continue
- rc, out, err = module.run_command(command[v])
+ rc, out, err = self.module.run_command(command[v])
if not out:
# v6 routing may result in
# RTNETLINK answers: Invalid argument
@@ -2144,7 +2111,7 @@ class LinuxNetwork(Network):
if not address == '::1':
ips['all_ipv6_addresses'].append(address)
- ip_path = module.get_bin_path("ip")
+ ip_path = self.module.get_bin_path("ip")
args = [ip_path, 'addr', 'show', 'primary', device]
rc, stdout, stderr = self.module.run_command(args)
@@ -2179,16 +2146,13 @@ class GenericBsdIfconfigNetwork(Network):
"""
platform = 'Generic_BSD_Ifconfig'
- def __init__(self, module):
- Network.__init__(self, module)
-
def populate(self):
- ifconfig_path = module.get_bin_path('ifconfig')
+ ifconfig_path = self.module.get_bin_path('ifconfig')
if ifconfig_path is None:
return self.facts
- route_path = module.get_bin_path('route')
+ route_path = self.module.get_bin_path('route')
if route_path is None:
return self.facts
@@ -2227,7 +2191,7 @@ class GenericBsdIfconfigNetwork(Network):
if v == 'v6' and not socket.has_ipv6:
continue
- rc, out, err = module.run_command(command[v])
+ rc, out, err = self.module.run_command(command[v])
if not out:
# v6 routing may result in
# RTNETLINK answers: Invalid argument
@@ -2254,7 +2218,7 @@ class GenericBsdIfconfigNetwork(Network):
# FreeBSD, DragonflyBSD, NetBSD, OpenBSD and OS X all implicitly add '-a'
# when running the command 'ifconfig'.
# Solaris must explicitly run the command 'ifconfig -a'.
- rc, out, err = module.run_command([ifconfig_path, ifconfig_options])
+ rc, out, err = self.module.run_command([ifconfig_path, ifconfig_options])
for line in out.split('\n'):
@@ -2400,9 +2364,6 @@ class HPUXNetwork(Network):
"""
platform = 'HP-UX'
- def __init__(self, module):
- Network.__init__(self, module)
-
def populate(self):
netstat_path = self.module.get_bin_path('netstat')
if netstat_path is None:
@@ -2415,7 +2376,7 @@ class HPUXNetwork(Network):
return self.facts
def get_default_interfaces(self):
- rc, out, err = module.run_command("/usr/bin/netstat -nr")
+ rc, out, err = self.module.run_command("/usr/bin/netstat -nr")
lines = out.split('\n')
for line in lines:
words = line.split()
@@ -2426,7 +2387,7 @@ class HPUXNetwork(Network):
def get_interfaces_info(self):
interfaces = {}
- rc, out, err = module.run_command("/usr/bin/netstat -ni")
+ rc, out, err = self.module.run_command("/usr/bin/netstat -ni")
lines = out.split('\n')
for line in lines:
words = line.split()
@@ -2442,7 +2403,7 @@ class HPUXNetwork(Network):
'address': address }
return interfaces
-class DarwinNetwork(GenericBsdIfconfigNetwork, Network):
+class DarwinNetwork(GenericBsdIfconfigNetwork):
"""
This is the Mac OS X/Darwin Network Class.
It uses the GenericBsdIfconfigNetwork unchanged
@@ -2466,21 +2427,21 @@ class DarwinNetwork(GenericBsdIfconfigNetwork, Network):
current_if['media_options'] = self.get_options(words[3])
-class FreeBSDNetwork(GenericBsdIfconfigNetwork, Network):
+class FreeBSDNetwork(GenericBsdIfconfigNetwork):
"""
This is the FreeBSD Network Class.
It uses the GenericBsdIfconfigNetwork unchanged.
"""
platform = 'FreeBSD'
-class DragonFlyNetwork(GenericBsdIfconfigNetwork, Network):
+class DragonFlyNetwork(GenericBsdIfconfigNetwork):
"""
This is the DragonFly Network Class.
It uses the GenericBsdIfconfigNetwork unchanged.
"""
platform = 'DragonFly'
-class AIXNetwork(GenericBsdIfconfigNetwork, Network):
+class AIXNetwork(GenericBsdIfconfigNetwork):
"""
This is the AIX Network Class.
It uses the GenericBsdIfconfigNetwork unchanged.
@@ -2488,9 +2449,9 @@ class AIXNetwork(GenericBsdIfconfigNetwork, Network):
platform = 'AIX'
def get_default_interfaces(self, route_path):
- netstat_path = module.get_bin_path('netstat')
+ netstat_path = self.module.get_bin_path('netstat')
- rc, out, err = module.run_command([netstat_path, '-nr'])
+ rc, out, err = self.module.run_command([netstat_path, '-nr'])
interface = dict(v4 = {}, v6 = {})
@@ -2515,14 +2476,14 @@ class AIXNetwork(GenericBsdIfconfigNetwork, Network):
all_ipv4_addresses = [],
all_ipv6_addresses = [],
)
- rc, out, err = module.run_command([ifconfig_path, ifconfig_options])
+ rc, out, err = self.module.run_command([ifconfig_path, ifconfig_options])
for line in out.split('\n'):
if line:
words = line.split()
- # only this condition differs from GenericBsdIfconfigNetwork
+ # only this condition differs from GenericBsdIfconfigNetwork
if re.match('^\w*\d*:', line):
current_if = self.parse_interface_line(words)
interfaces[ current_if['device'] ] = current_if
@@ -2544,16 +2505,16 @@ class AIXNetwork(GenericBsdIfconfigNetwork, Network):
self.parse_inet6_line(words, current_if, ips)
else:
self.parse_unknown_line(words, current_if, ips)
- uname_path = module.get_bin_path('uname')
+ uname_path = self.module.get_bin_path('uname')
if uname_path:
- rc, out, err = module.run_command([uname_path, '-W'])
+ rc, out, err = self.module.run_command([uname_path, '-W'])
# don't bother with wpars it does not work
# zero means not in wpar
if not rc and out.split()[0] == '0':
if current_if['macaddress'] == 'unknown' and re.match('^en', current_if['device']):
- entstat_path = module.get_bin_path('entstat')
+ entstat_path = self.module.get_bin_path('entstat')
if entstat_path:
- rc, out, err = module.run_command([entstat_path, current_if['device'] ])
+ rc, out, err = self.module.run_command([entstat_path, current_if['device'] ])
if rc != 0:
break
for line in out.split('\n'):
@@ -2568,9 +2529,9 @@ class AIXNetwork(GenericBsdIfconfigNetwork, Network):
current_if['type'] = 'ether'
# device must have mtu attribute in ODM
if 'mtu' not in current_if:
- lsattr_path = module.get_bin_path('lsattr')
+ lsattr_path = self.module.get_bin_path('lsattr')
if lsattr_path:
- rc, out, err = module.run_command([lsattr_path,'-El', current_if['device'] ])
+ rc, out, err = self.module.run_command([lsattr_path,'-El', current_if['device'] ])
if rc != 0:
break
for line in out.split('\n'):
@@ -2588,7 +2549,7 @@ class AIXNetwork(GenericBsdIfconfigNetwork, Network):
current_if['macaddress'] = 'unknown' # will be overwritten later
return current_if
-class OpenBSDNetwork(GenericBsdIfconfigNetwork, Network):
+class OpenBSDNetwork(GenericBsdIfconfigNetwork):
"""
This is the OpenBSD Network Class.
It uses the GenericBsdIfconfigNetwork.
@@ -2603,7 +2564,7 @@ class OpenBSDNetwork(GenericBsdIfconfigNetwork, Network):
def parse_lladdr_line(self, words, current_if, ips):
current_if['macaddress'] = words[1]
-class SunOSNetwork(GenericBsdIfconfigNetwork, Network):
+class SunOSNetwork(GenericBsdIfconfigNetwork):
"""
This is the SunOS Network Class.
It uses the GenericBsdIfconfigNetwork.
@@ -2624,7 +2585,7 @@ class SunOSNetwork(GenericBsdIfconfigNetwork, Network):
all_ipv4_addresses = [],
all_ipv6_addresses = [],
)
- rc, out, err = module.run_command([ifconfig_path, '-a'])
+ rc, out, err = self.module.run_command([ifconfig_path, '-a'])
for line in out.split('\n'):
@@ -2708,9 +2669,6 @@ class Virtual(Facts):
subclass = sc
return super(cls, subclass).__new__(subclass, *arguments, **keyword)
- def __init__(self):
- Facts.__init__(self)
-
def populate(self):
return self.facts
@@ -2722,9 +2680,6 @@ class LinuxVirtual(Virtual):
"""
platform = 'Linux'
- def __init__(self):
- Virtual.__init__(self)
-
def populate(self):
self.get_virtual_facts()
return self.facts
@@ -2841,9 +2796,9 @@ class LinuxVirtual(Virtual):
self.facts['virtualization_type'] = 'powervm_lx86'
elif re.match('^vendor_id.*IBM/S390', line):
self.facts['virtualization_type'] = 'PR/SM'
- lscpu = module.get_bin_path('lscpu')
+ lscpu = self.module.get_bin_path('lscpu')
if lscpu:
- rc, out, err = module.run_command(["lscpu"])
+ rc, out, err = self.module.run_command(["lscpu"])
if rc == 0:
for line in out.split("\n"):
data = line.split(":", 1)
@@ -2891,9 +2846,6 @@ class FreeBSDVirtual(Virtual):
"""
platform = 'FreeBSD'
- def __init__(self):
- Virtual.__init__(self)
-
def populate(self):
self.get_virtual_facts()
return self.facts
@@ -2913,9 +2865,6 @@ class OpenBSDVirtual(Virtual):
"""
platform = 'OpenBSD'
- def __init__(self):
- Virtual.__init__(self)
-
def populate(self):
self.get_virtual_facts()
return self.facts
@@ -2932,21 +2881,18 @@ class HPUXVirtual(Virtual):
"""
platform = 'HP-UX'
- def __init__(self):
- Virtual.__init__(self)
-
def populate(self):
self.get_virtual_facts()
return self.facts
def get_virtual_facts(self):
if os.path.exists('/usr/sbin/vecheck'):
- rc, out, err = module.run_command("/usr/sbin/vecheck")
+ rc, out, err = self.module.run_command("/usr/sbin/vecheck")
if rc == 0:
self.facts['virtualization_type'] = 'guest'
self.facts['virtualization_role'] = 'HP vPar'
if os.path.exists('/opt/hpvm/bin/hpvminfo'):
- rc, out, err = module.run_command("/opt/hpvm/bin/hpvminfo")
+ rc, out, err = self.module.run_command("/opt/hpvm/bin/hpvminfo")
if rc == 0 and re.match('.*Running.*HPVM vPar.*', out):
self.facts['virtualization_type'] = 'guest'
self.facts['virtualization_role'] = 'HPVM vPar'
@@ -2957,7 +2903,7 @@ class HPUXVirtual(Virtual):
self.facts['virtualization_type'] = 'host'
self.facts['virtualization_role'] = 'HPVM'
if os.path.exists('/usr/sbin/parstatus'):
- rc, out, err = module.run_command("/usr/sbin/parstatus")
+ rc, out, err = self.module.run_command("/usr/sbin/parstatus")
if rc == 0:
self.facts['virtualization_type'] = 'guest'
self.facts['virtualization_role'] = 'HP nPar'
@@ -2972,15 +2918,12 @@ class SunOSVirtual(Virtual):
"""
platform = 'SunOS'
- def __init__(self):
- Virtual.__init__(self)
-
def populate(self):
self.get_virtual_facts()
return self.facts
def get_virtual_facts(self):
- rc, out, err = module.run_command("/usr/sbin/prtdiag")
+ rc, out, err = self.module.run_command("/usr/sbin/prtdiag")
for line in out.split('\n'):
if 'VMware' in line:
self.facts['virtualization_type'] = 'vmware'
@@ -2996,7 +2939,7 @@ class SunOSVirtual(Virtual):
self.facts['virtualization_role'] = 'guest'
# Check if it's a zone
if os.path.exists("/usr/bin/zonename"):
- rc, out, err = module.run_command("/usr/bin/zonename")
+ rc, out, err = self.module.run_command("/usr/bin/zonename")
if out.rstrip() != "global":
self.facts['container'] = 'zone'
# Check if it's a branded zone (i.e. Solaris 8/9 zone)
@@ -3005,7 +2948,7 @@ class SunOSVirtual(Virtual):
# If it's a zone check if we can detect if our global zone is itself virtualized.
# Relies on the "guest tools" (e.g. vmware tools) to be installed
if 'container' in self.facts and self.facts['container'] == 'zone':
- rc, out, err = module.run_command("/usr/sbin/modinfo")
+ rc, out, err = self.module.run_command("/usr/sbin/modinfo")
for line in out.split('\n'):
if 'VMware' in line:
self.facts['virtualization_type'] = 'vmware'
@@ -3017,7 +2960,7 @@ class SunOSVirtual(Virtual):
if os.path.exists("/usr/sbin/virtinfo"):
# The output of virtinfo is different whether we are on a machine with logical
# domains ('LDoms') on a T-series or domains ('Domains') on a M-series. Try LDoms first.
- rc, out, err = module.run_command("/usr/sbin/virtinfo -p")
+ rc, out, err = self.module.run_command("/usr/sbin/virtinfo -p")
# The output contains multiple lines with different keys like this:
# DOMAINROLE|impl=LDoms|control=false|io=false|service=false|root=false
# The output may also be not formatted and the returncode is set to 0 regardless of the error condition:
@@ -3068,10 +3011,10 @@ def get_file_lines(path):
def ansible_facts(module):
facts = {}
- facts.update(Facts().populate())
- facts.update(Hardware().populate())
+ facts.update(Facts(module).populate())
+ facts.update(Hardware(module).populate())
facts.update(Network(module).populate())
- facts.update(Virtual().populate())
+ facts.update(Virtual(module).populate())
return facts
# ===========================================