U
    *b                     @   sZ   d dl 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Z	dS )	    )PluginRedHatPluginUbuntuPluginSoSPredicate	CosPlugin	PluginOptc                   @   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)defaultZdesclogsz)collect stdout/stderr logs for containerssizez!collect image sizes for docker psc                 C   s  |  ddg | ddddddg | jd	d
 | d | t| d	gd ddddddddg}|D ]}| d|  qf| dr| jddd | jddd | d}|d dkrdd |d   d!d  D }|D ]}| d"|  qd#d | j	d	| d$d%D }| j
d	d&}| jd	d&}|D ]6}	| jd'|	 d(d) | d*r&| jd+|	 d(d) q&|D ]2}
|
\}}d,|kr||n|}| jd'| dd) qb|D ]}| jd-| d.d) qd S )/Nz/etc/docker/daemon.jsonz/var/lib/docker/repositories-*Z
HTTP_PROXYZHTTPS_PROXYZNO_PROXYZ	ALL_PROXYZDOCKER_BUILD_PROXYZDOCKER_RUN_PROXYr	   )Zunitszls -alhR /etc/docker)serviceszevents --since 24h --until 1sinfoimagesZpszps -azstats --no-streamversionz	volume lsz	docker %sr   zdocker ps -asd   )Zpriorityzdocker system dfzdocker network lsZstatusr   c                 S   s   g | ]}|  d  qS )   )split).0n r   ;/usr/lib/python3/dist-packages/sos/report/plugins/docker.py
<listcomp>H   s     z Docker.setup.<locals>.<listcomp>outputr   zdocker network inspect %sc                 S   s   g | ]}|d  qS )r   r   )r   cr   r   r   r   L   s    r   )runtimeZget_all)r   zdocker inspect %s
containers)Zsubdirr   zdocker logs -t %sZnonezdocker volume inspect %svolumes)add_copy_specZadd_env_varZadd_journalZadd_cmd_outputZset_cmd_predicater   Z
get_optionZcollect_cmd_output
splitlinesZget_containersZget_container_imagesZget_container_volumes)selfZsubcmdsZsubcmdZnetsr   Znetr   r   r   r
   ZimgnameZimg_idZinspZvolr   r   r   setup   sr    	






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>=********")Zdo_cmd_output_sub)r"   Z
env_regexpr   r   r   postprocc   s    zDocker.postprocN)
__name__
__module____qualname__Z
short_descZplugin_nameZprofilesr   Zoption_listr$   r%   r   r   r   r   r      s   	Er   c                       s    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                    s    t t|   | ddg d S )Nz!/etc/udev/rules.d/80-docker.rulesz/etc/containers/)superr)   r$   r    r"   	__class__r   r   r$   z   s
    zRedHatDocker.setupr&   r'   r(   Zpackagesr$   __classcell__r   r   r/   r   r)   u   s   r)   c                       s    e Zd ZdZ fddZ  ZS )UbuntuDocker)z	docker.ior*   r+   r,   c                    s"   t t|   | dddg d S )Nz/etc/containerd/z/etc/default/dockerz//run/docker/libcontainerd/containerd/events.log)r-   r3   r$   r    r.   r/   r   r   r$      s    zUbuntuDocker.setupr1   r   r   r/   r   r3      s   r3   N)
Zsos.report.pluginsr   r   r   r   r   r   r   r)   r3   r   r   r   r   <module>   s    f