File: //lib/python3.9/site-packages/sos/report/plugins/__pycache__/mellanox_firmware.cpython-39.pyc
a
\��h� � @ s6 d dl Z d dlZd dlmZmZ G dd� dee�ZdS )� N)�Plugin�IndependentPluginc @ s8 e Zd ZdZdZdZdZdZdd� Zdd � Z d
d� Z
dS )
�MellanoxFirmwarez&Nvidia(Mellanox) firmware tools outputZmellanox_firmware)Zhardware�system)ZmstZmstflintzMellanox Technologiesc C s$ | � d�}|d dko"| j|d v S )z�
Checks if this plugin should be executed at all.
We will only enable the plugin if there is a
Mellanox Technologies network adapter
�lspci -D -d 15b3::0200�statusr �output)�exec_cmd�MLNX_STRING)�selfZlspci� r �H/usr/lib/python3.9/site-packages/sos/report/plugins/mellanox_firmware.py�
check_enabled s
zMellanoxFirmware.check_enabledc C s� | � d�s| �d� d S | �d�}|d dkr2d S | �d�}|d dkrLd S | �d� | jdd d
� | jdd d
� t�d�}g }|D ]}d
|v r�|�|� q�|D ]0}| jd|� d�d d
� | jd|� d�d d
� q�| jddd� d S )NZallow_system_changesztSkipping mst/mlx cable commands as system changeswould be made. Use --allow-system-changes toenable this collection.�flint --versionr r z mst startz
mst cable addz
mst status -v�
��timeout� mlxcablesz/dev/mstZcablez
mlxcables -d z --DDMz --dumpzmst stopT)Zchanges)Z
get_optionZ _log_infor �collect_cmd_output�os�listdir�append)r �coutr �deviceZmlxcabler r r
�collect# s2
��zMellanoxFirmware.collectc C s g }| � d�}|d dkrd S |d �� D ]}|�|dd� d � q*t|�}g }| �d�}|d dkr�dd gd
dgd
dgd
dgddgg}n.ddgdd gddgddgddgddgddgg}|D ]\}|D ]*}| j|d � d|� d|d � �dd� q�td�D ]}| �d|� �� t�d� q�q�d S )Nr r r r � z00.0r z
mstconfig -d z -e qzmstflint -d z dcz qz
mstreg -d z --reg_name ROCE_ACCL --getzmstlink -d � zmlxdump -d z pcie_uc --allz flint -d z
mlxreg -d zmlxlink -d zfwtrace -d z -i all --tracer_mode FIFO� � � r � zmstdump ) r �
splitlinesr �setr Zadd_cmd_output�range�time�sleep) r ZdevicesZdevice_list�lineZcommandsr r Zcommand�_r r r
�setupC sD
�� ��zMellanoxFirmware.setupN)�__name__�
__module__�__qualname__Z
short_descZplugin_nameZprofilesZpackagesr
r r r( r r r r
r s r )r r$ Zsos.report.pluginsr r r r r r r
�<module> s