o
    G%@iM                     @   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 | ddg | jd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rdd |d 	 dd  D }|D ]
}| d |  qzd!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- | jd.| d/d0d- q|D ]}| jd1| d2d' qd S )3Nz/etc/docker/daemon.jsonz/var/lib/docker/repositories-*DOCKER_BUILD_PROXYDOCKER_RUN_PROXYr
   )unitsz/etc/dockerT)	recursive)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 -asd   )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>I   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%   M   s    r   )runtimeget_all)r(   zdocker inspect 
containers)subdirr   zdocker logs -t noneimagesdocker_image_inspect)r+   r   zdocker image history zimages/historydocker_image_treezdocker volume inspect volumes)add_copy_specadd_env_varadd_journaladd_dir_listingset_cmd_predicater   add_cmd_output
get_optioncollect_cmd_output
splitlinesget_containersget_container_imagesget_container_volumes)selfsubcmdssubcmdnetsnetworksnetr*   r-   r0   r   imgnameimg_idinspvolr#   r#   r$   setup   s~   


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$   postprocj   s   zDocker.postprocN)
__name__
__module____qualname__
short_descplugin_nameprofilesr   option_listrH   rK   r#   r#   r#   r$   r	      s     	Kr	   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/superrH   r1   r=   	__class__r#   r$   rH      s
   

zRedHatDocker.setuprL   rM   rN   packagesrH   __classcell__r#   r#   r\   r$   rT   |   s    rT   c                       rS   )UbuntuDocker)z	docker.iorU   rV   rW   c                    rX   )Nz/etc/default/dockerz//run/docker/libcontainerd/containerd/events.logrY   r[   r\   r#   r$   rH      s
   

zUbuntuDocker.setupr^   r#   r#   r\   r$   ra      s    ra   N)sos.report.pluginsr   r   r   r   r   r   r   r	   rT   ra   r#   r#   r#   r$   <module>   s   $
l