o
    O6ufú  ã                   @   s`   d dl mZmZmZmZmZmZmZ G dd„ deeƒZG dd„ deeƒZ	G dd„ deeeƒZ
dS )	é    )ÚPluginÚRedHatPluginÚUbuntuPluginÚSoSPredicateÚ	CosPluginÚ	PluginOptÚDebianPluginc                   @   sP   e Zd ZdZdZdZedddd�eddd	d�ed
ddd�gZdd„ Zdd„ Z	dS )ÚDockerzDocker containersÚdocker)Ú	containerÚallFz0collect for all containers, even terminated ones)ÚdefaultÚdescÚlogsz)collect stdout/stderr logs for containersÚsizez!collect image sizes for docker psc                 C   sÒ  |   ddg¡ |  g d¢¡ | jdd� |  d¡ |  t| dgd�¡ g d¢}|D ]
}|  d	|› �¡ q)| jd
dd� | jddd� | jddd� |  d¡r\| jddd� | jddd� |  d¡}|d dkrƒdd„ |d  ¡ dd … D ƒ}|D ]
}|  d|› �¡ qxdd„ | j	d|  d¡d �D ƒ}| j
dd!�}| jdd!�}|D ]}	| jd"|	› �d#d$� |  d%¡r»| jd&|	› �d#d$� q |D ]}
|
\}}d'|vrÊ|n|}| jd"|› �d(d)d*� q¾|D ]}| jd+|› �d,d$� qÚd S )-Nz/etc/docker/daemon.jsonz/var/lib/docker/repositories-*)Ú
HTTP_PROXYÚHTTPS_PROXYÚNO_PROXYÚ	ALL_PROXYÚDOCKER_BUILD_PROXYÚDOCKER_RUN_PROXYr
   )Úunitszls -alhR /etc/docker)Úservices)zevents --since 24h --until 1sÚpszstats --no-streamÚversionz	volume lszdocker zdocker infoÚdocker_info)Útagszdocker imagesÚdocker_imageszdocker ps -aÚdocker_list_containersr   zdocker ps -aséd   )Úpriorityzdocker system dfzdocker network lsÚstatusr   c                 S   s   g | ]}|  ¡ d  ‘qS )é   )Úsplit)Ú.0Ún© r&   ú;/usr/lib/python3/dist-packages/sos/report/plugins/docker.pyÚ
<listcomp>M   s    z Docker.setup.<locals>.<listcomp>Úoutputr"   zdocker network inspect c                 S   s   g | ]}|d  ‘qS )r   r&   )r$   Úcr&   r&   r'   r(   Q   s    ÿr   )ÚruntimeÚget_all)r+   zdocker inspect Ú
containers)Úsubdirr   zdocker logs -t ÚnoneÚimagesÚdocker_image_inspect)r.   r   zdocker volume inspect Úvolumes)Úadd_copy_specÚadd_env_varÚadd_journalÚadd_cmd_outputÚset_cmd_predicater   Ú
get_optionÚcollect_cmd_outputÚ
splitlinesÚget_containersÚget_container_imagesÚget_container_volumes)ÚselfÚsubcmdsÚsubcmdÚnetsÚnetworksÚnetr-   r0   r2   r   ÚimgÚnameÚimg_idÚinspÚvolr&   r&   r'   Úsetup   sn   þ	
ÿÿÿ

ÿÿÿ
ÿ€ÿÿÿzDocker.setupc                 C   s   d}|   d|d¡ d S )Nz=(?P<var>(pass|key|secret|PASS|KEY|SECRET).*?)=(?P<value>.*?)"z	*inspect*z\g<var>=********")Údo_cmd_output_sub)r>   Ú
env_regexpr&   r&   r'   Úpostproci   s   ÿzDocker.postprocN)
Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesr   Úoption_listrI   rL   r&   r&   r&   r'   r	      s     ÿÿÿû	Jr	   c                       ó    e Zd ZdZ‡ fdd„Z‡  ZS )ÚRedHatDocker)r
   zdocker-latestz	docker-ioúdocker-engineú	docker-ceú	docker-eec                    ó   t ƒ  ¡  |  ddg¡ d S )Nz!/etc/udev/rules.d/80-docker.rulesz/etc/containers/©ÚsuperrI   r3   ©r>   ©Ú	__class__r&   r'   rI   €   s
   

þzRedHatDocker.setup©rM   rN   rO   ÚpackagesrI   Ú__classcell__r&   r&   r]   r'   rU   {   s    rU   c                       rT   )ÚUbuntuDocker)z	docker.iorV   rW   rX   c                    rY   )Nz/etc/default/dockerz//run/docker/libcontainerd/containerd/events.logrZ   r\   r]   r&   r'   rI   �   s
   

þzUbuntuDocker.setupr_   r&   r&   r]   r'   rb   ‰   s    rb   N)Úsos.report.pluginsr   r   r   r   r   r   r   r	   rU   rb   r&   r&   r&   r'   Ú<module>   s   $
k