@ -49,35 +49,61 @@ class FcWwnInitiatorFactCollector(BaseFactCollector):
TBD ( not implemented ) : on solaris 9 use ` prtconf - pv `
"""
cmd = module . get_bin_path ( ' fcinfo ' )
cmd = cmd + " hba-port "
rc , fcinfo_out , err = module . run_command ( cmd )
"""
# fcinfo hba-port | grep "Port WWN"
HBA Port WWN : 10000090 fa1658de
"""
if fcinfo_out :
for line in fcinfo_out . splitlines ( ) :
if ' Port WWN ' in line :
data = line . split ( ' ' )
fc_facts [ ' fibre_channel_wwn ' ] . append ( data [ - 1 ] . rstrip ( ) )
if cmd :
cmd = cmd + " hba-port "
rc , fcinfo_out , err = module . run_command ( cmd )
"""
# fcinfo hba-port | grep "Port WWN"
HBA Port WWN : 10000090 fa1658de
"""
if rc == 0 and fcinfo_out :
for line in fcinfo_out . splitlines ( ) :
if ' Port WWN ' in line :
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 ( ) )
lscfg_cmd = module . get_bin_path ( ' lscfg ' )
if cmd and lscfg_cmd :
# get list of available fibre-channel devices (fcs)
cmd = cmd + " -Cc adapter -l fcs* "
rc , lsdev_out , err = module . run_command ( cmd )
if rc == 0 and lsdev_out :
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
if rc == 0 and lscfg_out :
for line in lscfg_out . splitlines ( ) :
if ' Network Address ' in line :
data = line . split ( ' . ' )
fc_facts [ ' fibre_channel_wwn ' ] . append ( data [ - 1 ] . rstrip ( ) )
elif sys . platform . startswith ( ' hp-ux ' ) :
cmd = module . get_bin_path ( ' ioscan ' )
fcmsu_cmd = module . get_bin_path ( ' fcmsutil ' , opt_dirs = [ ' /opt/fcms/bin ' ] )
# go ahead if we have both commands available
if cmd and fcmsu_cmd :
# ioscan / get list of available fibre-channel devices (fcd)
cmd = cmd + " -fnC FC "
rc , ioscan_out , err = module . run_command ( cmd )
if rc == 0 and ioscan_out :
for line in ioscan_out . splitlines ( ) :
line = line . strip ( )
if ' /dev/fcd ' in line :
dev = line . split ( ' ' )
# get device information
cmd = fcmsu_cmd + " %s " % dev [ 0 ]
rc , fcmsutil_out , err = module . run_command ( cmd )
# lookup the following line
# N_Port Port World Wide Name = 0x50060b00006975ec
if rc == 0 and fcmsutil_out :
for line in fcmsutil_out . splitlines ( ) :
if ' N_Port Port World Wide Name ' in line :
data = line . split ( ' = ' )
fc_facts [ ' fibre_channel_wwn ' ] . append ( data [ - 1 ] . strip ( ) )
return fc_facts