summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfallencliff <hzj.zh@foxmail.com>2016-09-20 00:20:29 +0800
committerBrian Coca <bcoca@users.noreply.github.com>2016-09-19 12:20:29 -0400
commit06d46a1ecc7b6726b0e2e7341409a7ab33b549a2 (patch)
tree19f8de264fee82b611e464e620f5998e41af3a4f
parenta80158847e328e847103dd6da5a8562c249b5351 (diff)
downloadansible-06d46a1ecc7b6726b0e2e7341409a7ab33b549a2.tar.gz
update facts.py for aix (#17539)
* update facts.py for aix add product_serial ,lpar_info,product_name and pv/vg info into facts 10.223.219.10 | SUCCESS => { "ansible_facts": { "ansible_all_ipv4_addresses": [ "77.77.77.1", "10.223.219.10" ], "ansible_all_ipv6_addresses": [ "::1%1/0" ], "ansible_architecture": "chrp", "ansible_date_time": { "date": "2016-09-13", "day": "13", "epoch": "1473760269", "hour": "17", "iso8601": "2016-09-13T09:51:09Z", "iso8601_basic": "20160913T175109568670", "iso8601_basic_short": "20160913T175109", "iso8601_micro": "2016-09-13T09:51:09.569251Z", "minute": "51", "month": "09", "second": "09", "time": "17:51:09", "tz": "BEIST", "tz_offset": "BEIST", "weekday": "Tuesday", "weekday_number": "2", "weeknumber": "37", "year": "2016" }, "ansible_default_ipv4": { "address": "10.223.219.10", "broadcast": "10.223.219.127", "device": "en3", "flags": [ "UP", "BROADCAST", "NOTRAILERS", "RUNNING", "SIMPLEX", "MULTICAST", "GROUPRT", "64BIT", "CHECKSUM_OFFLOAD(ACTIVE)", "LARGESEND", "CHAIN" ], "gateway": "10.223.219.1", "interface": "en3", "macaddress": "00:11:25:be:4b:75", "mtu": "1400", "netmask": "255.255.255.128", "network": "10.223.219.0", "type": "unknown" }, "ansible_default_ipv6": {}, "ansible_distribution": "AIX", "ansible_distribution_release": "1", "ansible_distribution_version": "6", "ansible_dns": {}, "ansible_domain": "", "ansible_en0": { "device": "en0", "flags": [ "UP", "BROADCAST", "NOTRAILERS", "RUNNING", "SIMPLEX", "MULTICAST", "GROUPRT", "64BIT", "CHECKSUM_OFFLOAD(ACTIVE)", "LARGESEND", "CHAIN" ], "ipv4": [ { "address": "77.77.77.1", "broadcast": "77.77.77.127", "netmask": "255.255.255.128", "network": "77.77.77.0" } ], "ipv6": [], "macaddress": "00:14:5e:b8:cd:a6", "mtu": "1500", "type": "unknown" }, "ansible_en3": { "device": "en3", "flags": [ "UP", "BROADCAST", "NOTRAILERS", "RUNNING", "SIMPLEX", "MULTICAST", "GROUPRT", "64BIT", "CHECKSUM_OFFLOAD(ACTIVE)", "LARGESEND", "CHAIN" ], "ipv4": [ { "address": "10.223.219.10", "broadcast": "10.223.219.127", "netmask": "255.255.255.128", "network": "10.223.219.0" } ], "ipv6": [], "macaddress": "00:11:25:be:4b:75", "mtu": "1400", "type": "unknown" }, "ansible_env": { "AUTHSTATE": "compat", "CLCMD_PASSTHRU": "1", "HOME": "/home/yd_hzj", "LANG": "C", "LC_ALL": "C", "LC_MESSAGES": "C", "LC__FASTMSG": "true", "LOCPATH": "/usr/lib/nls/loc", "LOGIN": "yd_hzj", "LOGNAME": "yd_hzj", "MAIL": "/var/spool/mail/yd_hzj", "NLSPATH": "/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/%L/%N.cat", "ODMDIR": "/etc/objrepos", "PATH": "/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java14/jre/bin:/usr/java14/bin", "PWD": "/home/yd_hzj", "PYTHONPATH": "", "SHELL": "/usr/bin/ksh", "SSH_CLIENT": "10.223.172.41 33369 22", "SSH_CONNECTION": "10.223.172.41 33369 10.223.219.10 22", "SSH_TTY": "/dev/pts/12", "TERM": "vt100", "TZ": "BEIST-8", "USER": "yd_hzj", "_": "/usr/bin/python" }, "ansible_fips": false, "ansible_firmware_version": "SF240_358", "ansible_fqdn": "test1", "ansible_gather_subset": [ "hardware", "network", "virtual" ], "ansible_hostname": "test1", "ansible_interfaces": [ "en0", "lo0", "en3" ], "ansible_kernel": "1", "ansible_lo0": { "device": "lo0", "flags": [ "UP", "BROADCAST", "LOOPBACK", "RUNNING", "SIMPLEX", "MULTICAST", "GROUPRT", "64BIT", "LARGESEND", "CHAIN" ], "ipv4": [ { "address": "127.0.0.1", "broadcast": "127.255.255.255", "netmask": "255.0.0.0", "network": "127.0.0.0" } ], "ipv6": [ { "address": "::1%1/0" } ], "macaddress": "unknown", "mtu": "16896", "type": "unknown" }, "ansible_lpar_info": "1 test1", "ansible_machine": "00CE5FA34C00", "ansible_memfree_mb": 9992, "ansible_memtotal_mb": 98304, "ansible_nodename": "test1", "ansible_os_family": "AIX", "ansible_pkg_mgr": "svr4pkg", "ansible_processor": "PowerPC_POWER5", "ansible_processor_cores": 2, "ansible_processor_count": 12, "ansible_product_name": "IBM,9119-595", "ansible_product_serial": "02E5FA3", "ansible_python": { "executable": "/usr/bin/python", "has_sslcontext": false, "type": "CPython", "version": { "major": 2, "micro": 5, "minor": 7, "releaselevel": "final", "serial": 0 }, "version_info": [ 2, 7, 5, "final", 0 ] }, "ansible_python_version": "2.7.5", "ansible_selinux": false, "ansible_service_mgr": "src", "ansible_ssh_host_key_dsa_public": "AAAAE23Nzav1hVVTNNoYvp7eokKbwY", "ansible_ssh_host_key_ecdsa_public": "AAAAE2VjZHNhLXNoYvp7eokKbwY=", "ansible_ssh_host_key_rsa_public": "AAAAB3Nzav1hVVTNfKiM4W1j9mcw==", "ansible_swapfree_mb": 16558, "ansible_swaptotal_mb": 16896, "ansible_system": "AIX", "ansible_user_dir": "/home/yd_hzj", "ansible_user_gecos": "", "ansible_user_gid": 7, "ansible_user_id": "yd_hzj", "ansible_user_shell": "/usr/bin/ksh", "ansible_user_uid": 263, "ansible_userspace_bits": "32", "ansible_vgs": { "realsyncvg": [ { "free_pps": "6", "pp_size": "128 megabyte(s)", "pv_name": "hdisk74", "pv_state": "active", "total_pps": "1999" } ], "rootvg": [ { "free_pps": "0", "pp_size": "256 megabyte(s)", "pv_name": "hdisk0", "pv_state": "active", "total_pps": "546" }, { "free_pps": "113", "pp_size": "256 megabyte(s)", "pv_name": "hdisk1", "pv_state": "active", "total_pps": "546" } ], "testvg": [ { "free_pps": "838", "pp_size": "256 megabyte(s)", "pv_name": "hdisk105", "pv_state": "active", "total_pps": "999" }, { "free_pps": "599", "pp_size": "256 megabyte(s)", "pv_name": "hdisk106", "pv_state": "active", "total_pps": "999" } ] }, "module_setup": true }, "changed": false } * Update facts.py * Update facts.py
-rw-r--r--lib/ansible/module_utils/facts.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/ansible/module_utils/facts.py b/lib/ansible/module_utils/facts.py
index 2e7ecacb9f..74426b52d6 100644
--- a/lib/ansible/module_utils/facts.py
+++ b/lib/ansible/module_utils/facts.py
@@ -1891,6 +1891,7 @@ class AIX(Hardware):
self.get_cpu_facts()
self.get_memory_facts()
self.get_dmi_facts()
+ self.get_vgs_facts()
return self.facts
def get_cpu_facts(self):
@@ -1948,6 +1949,57 @@ class AIX(Hardware):
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,')
+ lsconf_path = self.module.get_bin_path("lsconf")
+ if lsconf_path:
+ rc, out, err = self.module.run_command(lsconf_path)
+ if rc == 0 and out:
+ for line in out.splitlines():
+ data = line.split(':')
+ if 'Machine Serial Number' in line:
+ self.facts['product_serial'] = data[1].strip()
+ if 'LPAR Info' in line:
+ self.facts['lpar_info'] = data[1].strip()
+ if 'System Model' in line:
+ self.facts['product_name'] = data[1].strip()
+ def get_vgs_facts(self):
+ """
+ Get vg and pv Facts
+ rootvg:
+ PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION
+ hdisk0 active 546 0 00..00..00..00..00
+ hdisk1 active 546 113 00..00..00..21..92
+ realsyncvg:
+ PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION
+ hdisk74 active 1999 6 00..00..00..00..06
+ testvg:
+ PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION
+ hdisk105 active 999 838 200..39..199..200..200
+ hdisk106 active 999 599 200..00..00..199..200
+ """
+
+ lsvg_path = self.module.get_bin_path("lsvg")
+ xargs_path = self.module.get_bin_path("xargs")
+ cmd = "%s | %s %s -p" % (lsvg_path ,xargs_path,lsvg_path)
+ if lsvg_path and xargs_path:
+ rc, out, err = self.module.run_command(cmd,use_unsafe_shell=True)
+ if rc == 0 and out:
+ self.facts['vgs']= {}
+ for m in re.finditer(r'(\S+):\n.*FREE DISTRIBUTION(\n(\S+)\s+(\w+)\s+(\d+)\s+(\d+).*)+', out):
+ self.facts['vgs'][m.group(1)] = []
+ pp_size = 0
+ cmd = "%s %s" % (lsvg_path,m.group(1))
+ rc, out, err = self.module.run_command(cmd)
+ if rc == 0 and out:
+ pp_size = re.search(r'PP SIZE:\s+(\d+\s+\S+)',out).group(1)
+ for n in re.finditer(r'(\S+)\s+(\w+)\s+(\d+)\s+(\d+).*',m.group(0)):
+ pv_info = { 'pv_name': n.group(1),
+ 'pv_state': n.group(2),
+ 'total_pps': n.group(3),
+ 'free_pps': n.group(4),
+ 'pp_size': pp_size
+ }
+ self.facts['vgs'][m.group(1)].append(pv_info)
+
class HPUX(Hardware):
"""