
    -_g                     0    d dl mZmZmZ  G d dee      Zy)    )PluginIndependentPlugin	PluginOptc                   P    e Zd ZdZdZdZdZdZefZ e	ddd	      gZ
d
 Zd Zd Zy)SHMclia  shmcli pulls hardware information from PowerVault/Dell
    Storage JBOD's attached to server.
    It provides information of the adapters, emms, drives,
    enclosures, fans, power supplies and the sensory data of
    temp, voltage, and current sensors.
    zDell Server Hardware Managershmcli)systemstoragehardwarezC/opt/dell/ServerHardwareManager/ServerHardwareManagerCLI/bin/shmclidebugFzcapture support debug data)defaultdescc                     g d}|D ]'  }| j                  | j                   d| d|        ) | j                          | j                          y )N)zlist adapterszlist physical enclosureszlist failed drives shmcli_suggest_filename)add_cmd_output
shmcli_bincollect_enclosures_listcollect_drivers_list)selfsubcmdssubcmds      ;/usr/lib/python3/dist-packages/sos/report/plugins/shmcli.pysetupzSHMcli.setup    sd    
  	5F??#1VH-#*6(!3   5	5
 	$$&!!#    c           	         g }| j                  d      }|d   dk(  rp|d   j                         D ]Z  j                         }t        |      dkD  s"|d   j	                         dk(  s9|j                  j                         d          \ t        t        |            }g d}| j                  | j                   d	d
      }|d   dk(  r|d   j                         dd D ]  j                         t        fd|D              s(d   }d   }|D ]H  }| j                   d| d| d| }|j                  | j                  d      }	| j                  ||	       J | j                  d      s| j                  d      }
| j                   d| d| }|j                  | j                  d      }d|
 }| j                  ||z   |d        yy)z  Collect info on the enclosures z	lsscsi -gstatusr   output   DELL   )
z	list emmszlist drawerszlist emm slotszlist drive slotsz	list fanszlist temp sensorszlist voltage sensorszlist current sensorszlist power supplieszinfo enclosurez list enclosuresshmcli_list_enclosuresr   c              3   &   K   | ]  }|v  
 y w)N ).0mlines     r   	<genexpr>z1SHMcli.collect_enclosures_list.<locals>.<genexpr>Q   s     1QqDy1s   r   z -a=z -enc=r   r   F)makez getdebugcli -a=z -outputdir=i,  )r   timeoutN)exec_cmd
splitlinessplitlenupperappendlistsetcollect_cmd_outputr   anyreplacer   
get_optionget_cmd_output_path)r   modelsresultwordsr   adapt_index	enc_indexr   _cmd_fnamelogpath_dcmd_dname_odirr*   s                 @r   r   zSHMcli.collect_enclosures_list0   s    {+(q x(335 3

JNuQx~~'76'AMM$**,q/23 c&k"
 ((/05 ) 
 (q x(335a; zz|1&11"&r(K $QI") K#'??"31VHD"(!5!%doox!H++D6+J	K
 w/"&":":":"F$(OO#4 5''2m6)"F!&t!I".wi 8++!EMF$' , ! !r   c                 Z   | j                  | j                   dd      }|d   dk(  r|d   j                         D ]l  }|j                         }t	        |      dkD  s"|d   dvs*| j                   d	|d    }|j                  | j                  d
      }| j                  ||       n yy)z Collect info on the drives z list drivesshmcli_list_drivesr   r   r   r       )WWNz---z info drive -d=r   N)r7   r   r0   r1   r2   r9   r   )r   r=   r*   r>   rA   rB   s         r   r   zSHMcli.collect_drivers_listd   s    ((|,1 ) 
 (q x(335 K

u:>a6"&//!2/%(L!%doox!H++D6+JK !r   N)__name__
__module____qualname____doc__
short_descplugin_nameprofilesr   filesr   option_listr   r   r   r'   r   r   r   r      sM     0JK1H7JME 	'5/KLK$ 2hKr   r   N)sos.report.pluginsr   r   r   r   r'   r   r   <module>rU      s!    D CeKV& eKr   