U
    -_g                     @   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)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
 | jddd | t| d	gd dddddg}|D ]}| d|  qd| 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(|  qd)d% | j
d	| d*d+D }| jd	d,}| jd	d,}|D ]:}	| jd-|	 d.d/ | d0rV| jd1|	 d.d/ qV|D ]L}
|
\}}d2|kr|n|}| jd-| d3d4d5 | jd6| d7d8d5 q|D ]}| jd9| 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/etc/dockerT)	recursive)serviceszevents --since 24h --until 1sZpszstats --no-streamversionz	volume lszdocker zdocker infoZdocker_info)tagszdocker imagesZdocker_imageszdocker ps -aZdocker_list_containersr   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>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   )runtimeZget_all)r   zdocker inspect 
containers)subdirr   zdocker logs -t ZnoneimagesZdocker_image_inspect)r    r   zdocker image history zimages/historyZdocker_image_treezdocker volume inspect volumes)add_copy_specZadd_env_varZadd_journalZadd_dir_listingZset_cmd_predicater   Zadd_cmd_outputZ
get_optionZcollect_cmd_output
splitlinesZget_containersZget_container_imagesZget_container_volumes)selfZsubcmdsZsubcmdZnetsZnetworksZnetr   r!   r"   r   ZimgnameZimg_idZinspZ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>=********")Zdo_cmd_output_sub)r%   Z
env_regexpr   r   r   postprocn   s    zDocker.postprocN)
__name__
__module____qualname__Z
short_descZplugin_nameZprofilesr   Zoption_listr'   r(   r   r   r   r   r	      s   	Or	   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    | ddg d S )Nz!/etc/udev/rules.d/80-docker.rulesz/etc/containers/superr'   r#   r%   	__class__r   r   r'      s
    
zRedHatDocker.setupr)   r*   r+   Zpackagesr'   __classcell__r   r   r3   r   r,      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    | ddg d S )Nz/etc/default/dockerz//run/docker/libcontainerd/containerd/events.logr0   r2   r3   r   r   r'      s
    
zUbuntuDocker.setupr5   r   r   r3   r   r7      s   r7   N)Zsos.report.pluginsr   r   r   r   r   r   r   r	   r,   r7   r   r   r   r   <module>   s   $p