diff options
author | fallencliff <hzj.zh@foxmail.com> | 2016-09-20 00:20:29 +0800 |
---|---|---|
committer | Brian Coca <bcoca@users.noreply.github.com> | 2016-09-19 12:20:29 -0400 |
commit | 06d46a1ecc7b6726b0e2e7341409a7ab33b549a2 (patch) | |
tree | 19f8de264fee82b611e464e620f5998e41af3a4f | |
parent | a80158847e328e847103dd6da5a8562c249b5351 (diff) | |
download | ansible-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.py | 52 |
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): """ |