Add support of facts gathering WWNs on AIX OS (#51704)
* Extend git commit c65909d6db
"Add network fact to obtain FC WWN initiator ports"
adding support of enumerating AIX device WWN ports
$ lsdev -Cc adapter -l fcs*
fcs0 Defined 00-00 8Gb PCI Express Dual Port FC Adapter (df1000f114108a03)
fcs1 Defined 00-01 8Gb PCI Express Dual Port FC Adapter (df1000f114108a03)
fcs2 Available 04-00 8Gb PCI Express Dual Port FC Adapter (df1000f114108a03)
fcs3 Available 04-01 8Gb PCI Express Dual Port FC Adapter (df1000f114108a03)
$ lscfg -vpl fcs3 | grep 'Network Address'
Network Address.............10000090FA551509
* no self in this code
* Two fixes:
- fix run_command execution, passing 'use_unsafe_shell=True' since we have a pipe in it ( | grep )
if we don't set unsafe shell, it will return error on execution.
- strip new line characters at the end of WWNs.
* fix pep8 , E225 missing whitespace around operator
* use module.get_bin_path() instead of hardcoded values
* move module.get_bin_path() out of for loop
* use python string parsing instead of calling external grep
* use in operator instead of find() for simplicity and readability
* add changelog fragment
This commit is contained in:
parent
7d2e4dd2fd
commit
19f6634353
2 changed files with 23 additions and 0 deletions
3
changelogs/fragments/fibre_channel_wwn_fact_aix.yaml
Normal file
3
changelogs/fragments/fibre_channel_wwn_fact_aix.yaml
Normal file
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
minor_changes:
|
||||
- gather Fibre Channel WWNs fact on AIX (extends https://github.com/ansible/ansible/pull/37043)
|
|
@ -59,4 +59,24 @@ class FcWwnInitiatorFactCollector(BaseFactCollector):
|
|||
for line in fcinfo_out.splitlines():
|
||||
data = line.split(' ')
|
||||
fc_facts['fibre_channel_wwn'].append(data[-1].rstrip())
|
||||
elif sys.platform.startswith('aix'):
|
||||
# get list of available fibre-channel devices (fcs)
|
||||
cmd = module.get_bin_path('lsdev')
|
||||
cmd = cmd + " -Cc adapter -l fcs*"
|
||||
rc, lsdev_out, err = module.run_command(cmd)
|
||||
if lsdev_out:
|
||||
lscfg_cmd = module.get_bin_path('lscfg')
|
||||
for line in lsdev_out.splitlines():
|
||||
# if device is available (not in defined state), get its WWN
|
||||
if 'Available' in line:
|
||||
data = line.split(' ')
|
||||
cmd = lscfg_cmd + " -vl %s" % data[0]
|
||||
rc, lscfg_out, err = module.run_command(cmd)
|
||||
# example output
|
||||
# lscfg -vpl fcs3 | grep "Network Address"
|
||||
# Network Address.............10000090FA551509
|
||||
for line in lscfg_out.splitlines():
|
||||
if 'Network Address' in line:
|
||||
data = line.split('.')
|
||||
fc_facts['fibre_channel_wwn'].append(data[-1].rstrip())
|
||||
return fc_facts
|
||||
|
|
Loading…
Reference in a new issue