From d7975462da90ffdb19f24800b7eb92107bde7ba5 Mon Sep 17 00:00:00 2001 From: Simon Dodsley Date: Thu, 8 Nov 2018 21:24:51 -0500 Subject: [PATCH] Update and correct iSCSI facts collection (#44644) Co-authored-by: Simon Dodsley --- .../fragments/iscsi_facts_hp-ux_aix.yaml | 4 ++ .../module_utils/facts/network/iscsi.py | 45 ++++++++++++++++--- 2 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 changelogs/fragments/iscsi_facts_hp-ux_aix.yaml diff --git a/changelogs/fragments/iscsi_facts_hp-ux_aix.yaml b/changelogs/fragments/iscsi_facts_hp-ux_aix.yaml new file mode 100644 index 0000000000..15d9580bb0 --- /dev/null +++ b/changelogs/fragments/iscsi_facts_hp-ux_aix.yaml @@ -0,0 +1,4 @@ +minor_changes: + - setup - gather iSCSI facts for HP-UX (https://github.com/ansible/ansible/pull/44644) +bugfixes: + - setup - properly gather iSCSI information for AIX (https://github.com/ansible/ansible/pull/44644) diff --git a/lib/ansible/module_utils/facts/network/iscsi.py b/lib/ansible/module_utils/facts/network/iscsi.py index ab26f898fb..3db94d2d7b 100644 --- a/lib/ansible/module_utils/facts/network/iscsi.py +++ b/lib/ansible/module_utils/facts/network/iscsi.py @@ -18,8 +18,8 @@ from __future__ import (absolute_import, division, print_function) __metaclass__ = type -import subprocess import sys +import subprocess from ansible.module_utils.facts.utils import get_file_content from ansible.module_utils.facts.network.base import NetworkCollector @@ -45,11 +45,28 @@ class IscsiInitiatorNetworkCollector(NetworkCollector): # lsattr -E -l iscsi0 disc_filename /etc/iscsi/targets Configuration file False disc_policy file Discovery Policy True - initiator_name iqn.localhost.hostid.7f000001 iSCSI Initiator Name True + initiator_name iqn.localhost.hostid.7f000002 iSCSI Initiator Name True isns_srvnames auto iSNS Servers IP Addresses True isns_srvports iSNS Servers Port Numbers True max_targets 16 Maximum Targets Allowed True num_cmd_elems 200 Maximum number of commands to queue to driver True + + Example of output from the HP-UX iscsiutil command: + + #iscsiutil -l + Initiator Name : iqn.1986-03.com.hp:mcel_VMhost3.1f355cf6-e2db-11e0-a999-b44c0aef5537 + Initiator Alias : + + Authentication Method : None + CHAP Method : CHAP_UNI + Initiator CHAP Name : + CHAP Secret : + NAS Hostname : + NAS Secret : + Radius Server Hostname : + Header Digest : None, CRC32C (default) + Data Digest : None, CRC32C (default) + SLP Scope list for iSLPD : """ iscsi_facts = {} @@ -62,8 +79,24 @@ class IscsiInitiatorNetworkCollector(NetworkCollector): iscsi_facts['iscsi_iqn'] = line.split('=', 1)[1] break elif sys.platform.startswith('aix'): - aixcmd = '/usr/sbin/lsattr -E -l iscsi0 | grep initiator_name' - aixret = subprocess.check_output(aixcmd, shell=True) - if aixret[0].isalpha(): - iscsi_facts['iscsi_iqn'] = aixret.split()[1].rstrip() + if module is not None: + rc, out, err = module.run_command('/usr/sbin/lsattr -E -l iscsi0 | grep initiator_name') + if out: + iscsi_facts['iscsi_iqn'] = out.split()[1].rstrip() + else: + aixcmd = '/usr/sbin/lsattr -E -l iscsi0 | grep initiator_name' + aixret = subprocess.check_output(aixcmd, shell=True) + if aixret[0].isalpha(): + iscsi_facts['iscsi_iqn'] = aixret.split()[1].rstrip() + elif sys.platform.startswith('hp-ux'): + if module is not None: + rc, out, err = module.run_command("/opt/iscsi/bin/iscsiutil -l | grep 'Initiator Name'", + use_unsafe_shell=True) + if out: + iscsi_facts['iscsi_iqn'] = out.split(":", 1)[1].rstrip() + else: + hpuxcmd = "/opt/iscsi/bin/iscsiutil -l | grep 'Initiator Name'" + hpuxret = subprocess.check_output(hpuxcmd, shell=True) + if hpuxret[0].isalpha(): + iscsi_facts['iscsi_iqn'] = hpuxret.split(":", 1)[1].rstrip() return iscsi_facts