Sindbad~EG File Manager
3
�f� � @ s6 d dl Z d dlZd dlmZmZ G dd� dee�ZdS )� N)�Plugin�IndependentPluginc @ s8 e Zd ZdZdZdZdZdZdd � Zd
d� Z dd
� Z
dS )�MellanoxFirmwarez&Nvidia(Mellanox) firmware tools outputZmellanox_firmware�hardware�system�mst�mstflintzMellanox Technologiesc C s$ | j d�}|d dko"| j|d kS )z�
Checks if this plugin should be executed at all.
We will only enable the plugin if there is a
Mellanox Technologies network adapter
zlspci -D -d 15b3::0200�statusr �output)�exec_cmd�MLNX_STRING)�selfZlspci� r �'/usr/lib/python3.6/mellanox_firmware.py�
check_enabled s
zMellanoxFirmware.check_enabledc C s� | j d�s| jd� d S | jd�}|d dkr2d S | jd�}|d dkrLd S | jd� | jdd d
� | jdd d
� tjd�}g }x|D ]}d
|kr�|j|� q�W x8|D ]0}| jd|� d�d d
� | jd|� d�d d
� q�W | jddd� d S )NZallow_system_changesztSkipping mst/mlx cable commands as system changeswould be made. Use --allow-system-changes toenable this collection.zflint --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# s.
zMellanoxFirmware.collectc C s2 g }| j d�}|d dkrd S x*|d j� D ]}|j|dd� d � q,W t|�}g }| jd�}|d dkr�dd gd
dgd
dgd
dgddgg}n.ddgdd gddgddgddgddgddgg}xn|D ]f}x2|D ]*}| j|d � d|� d|d � �dd� q�W x,td�D ] }| jd|� �� tjd� �qW q�W d S )Nzlspci -D -d 15b3::0200r r r
� z00.0zflint --versionz
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�timeZsleep) r
ZdevicesZdevice_list�lineZcommandsr r Zcommand�_r r r �setupC s:
zMellanoxFirmware.setupN)r r )r r )�__name__�
__module__�__qualname__Z
short_descZplugin_nameZprofilesZpackagesr r r r'