o
    O6uf   ã                   @   s:   d dl mZmZmZmZmZmZ G dd„ deeeeƒZdS )é    )ÚPluginÚRedHatPluginÚUbuntuPluginÚSoSPredicateÚ	PluginOptÚ	CosPluginc                   @   sT   e Zd ZdZdZdZdZdZedddd	�ed
ddd	�gZ	dd„ Z
dd„ Zdd„ ZdS )ÚCRIOzCRI-O containersÚcrio)Ú	container)zcri-oú	cri-tools)r	   ÚallFz0collect for all containers, even terminated ones)ÚdefaultÚdescÚlogsz)collect stdout/stderr logs for containersc                 C   s   |   g d¢¡ |  g d¢¡ |  ddg¡ |  t| dgd�¡ g d¢}|  dd	„ |D ƒ¡ d
}|  d¡r9|› d�}d}d}|  |¡}|  |¡}|  |¡}|  ¡  |D ]}| jd|› �dd� |  d¡ro| jd|› �dddd� qR|D ]}	| jd|	› �dd� qr|D ]}
| jd|
› �dd� q�d S )N)z/etc/containersz/etc/crictl.yamlz/etc/crio/crio.confz/etc/crio/seccomp.jsonz/etc/crio/crio.conf.d/z!/etc/systemd/system/cri-o.servicez/etc/sysconfig/crio-*)Ú
HTTP_PROXYÚHTTPS_PROXYÚNO_PROXYÚ	ALL_PROXYzls -alhR /etc/cnizcrio configr   )Úpackages)ÚinfoÚimagesÚpodsÚpszps -azps -vÚstatsÚversionc                 S   s   g | ]}d |› �‘qS )zcrictl © )Ú.0Úsr   r   ú9/usr/lib/python3/dist-packages/sos/report/plugins/crio.pyÚ
<listcomp>D   s    zCRIO.setup.<locals>.<listcomp>zcrictl ps --quietr   z -azcrictl images --quietzcrictl pods --quietzcrictl inspect Ú
containers)Úsubdirr   zcrictl logs -t zcontainers/logséd   Úcrictl_logs)r!   ÚpriorityÚtagszcrictl inspecti r   zcrictl inspectp r   )Úadd_copy_specÚadd_env_varÚadd_cmd_outputÚset_cmd_predicater   Ú
get_optionÚ_get_crio_listÚ_get_crio_goroutine_stacks)ÚselfÚsubcmdsÚps_cmdÚimg_cmdÚpod_cmdr    r   r   r
   ÚimageÚpodr   r   r   Úsetup   sB   
þ




ÿ
þ€ÿz
CRIO.setupc                 C   sT   g }|   |¡}|d dkr(|d  ¡ D ]}| |¡ q|r(d|d v r(| d¡ |S )NÚstatusr   ÚoutputÚ
deprecated)Úexec_cmdÚ
splitlinesÚappendÚpop)r-   ÚcmdÚretÚresultÚentr   r   r   r+   a   s   

zCRIO._get_crio_listc                 C   sR   |   d¡}|d dkrd S |d  ¡ }|   d| ¡}|d dkr'|  d¡ d S d S )Nz
pidof crior5   r   r6   zkill -USR1 z/tmp/crio-goroutine-stacks*.log)r8   Ústripr&   )r-   r>   Úpidr   r   r   r,   l   s   
ÿzCRIO._get_crio_goroutine_stacksN)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesr   Úservicesr   Úoption_listr4   r+   r,   r   r   r   r   r      s     ÿÿýCr   N)Úsos.report.pluginsr   r   r   r   r   r   r   r   r   r   r   Ú<module>   s    
