o
    O6uf	  ã                   @   s2   d dl m Z  d dlmZmZ G dd„ deeƒZdS )é    )Úglob)ÚPluginÚIndependentPluginc                   @   s$   e Zd ZdZdZdZdZdd„ ZdS )ÚScsiaÙ  
    Collects various information about the SCSI devices install on the host
    system.

    This plugin will capture a large amount of data from the /sys filesystem,
    as well as several different invocations of the `lsscsi` command.

    Additionally, several `sg_persist` commands will be collected for each
    SCSI device identified by sos. Note that in most cases these commands are
    provided by the `sg3_utils` package which may not be present by default.
    zSCSI devicesÚscsi)ÚstorageÚhardwarec                 C   s¶   |   g d¢¡ dg}|  d¡}|d dkr4|d  ¡ D ]}| ¡ d |v r3| ¡ d }|  d	|› �¡ q| jd
ddd� |  g d¢¡ tdƒ}| jd|d� | jg d¢ddgd� d S )N)z
/proc/scsiz/etc/stinit.defz/sys/bus/scsiz/sys/class/scsi_hostz/sys/class/scsi_diskz/sys/class/scsi_devicez/sys/class/scsi_genericÚenclosuz	lsscsi -gÚstatusr   Úoutputé   éÿÿÿÿzsg_ses -p2 -b1 z	lsscsi -iÚlsscsi)Úsuggest_filenameÚtags)z	sg_map -xÚlspathz
lsmap -allÚlsnportsz	lsscsi -Hz	lsscsi -dz	lsscsi -sz	lsscsi -Lz/sys/class/scsi_host/*zudevadm info -a %(dev)s)Údevices)zsg_persist --in -k -d %(dev)szsg_persist --in -r -d %(dev)szsg_persist --in -s -d %(dev)szsg_inq %(dev)sÚblockzsd.*)r   Ú	whitelist)Úadd_copy_specÚcollect_cmd_outputÚ
splitlinesÚsplitÚadd_cmd_outputr   Úadd_device_cmd)ÚselfÚ
scsi_typesÚresultÚlineÚdevsgÚ
scsi_hosts© r"   ú9/usr/lib/python3/dist-packages/sos/report/plugins/scsi.pyÚsetup   s$   

€ÿ

ûz
Scsi.setupN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
short_descÚplugin_nameÚprofilesr$   r"   r"   r"   r#   r      s    r   N)r   Úsos.report.pluginsr   r   r   r"   r"   r"   r#   Ú<module>   s   