U
    id                     @   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
 | d | t| d	gd dddddg}|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&|  qd'd# | j	d	| d(d)D }| j
d	d*}| jd	d*}|D ]6}	| jd+|	 d,d- | d.rL| jd/|	 d,d- qL|D ]4}
|
\}}d0|kr|n|}| jd+| d1d2d3 q|D ]}| jd4| d5d- qd S )6Nz/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 1sZpszstats --no-streamversionz	volume lsz	docker %sz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 %sc                 S   s   g | ]}|d  qS )r   r   )r   cr   r   r   r   Q   s    r   )runtimeZget_all)r   zdocker inspect %s
containers)subdirr   zdocker logs -t %sZnoneimagesZdocker_image_inspect)r   r   z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   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   postproci   s    zDocker.postprocN)
__name__
__module____qualname__Z
short_descZplugin_nameZprofilesr   Zoption_listr&   r'   r   r   r   r   r	      s   	Jr	   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&      s
    zRedHatDocker.setupr(   r)   r*   Zpackagesr&   __classcell__r   r   r1   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 t|   | ddg d S )Nz/etc/default/dockerz//run/docker/libcontainerd/containerd/events.log)r/   r5   r&   r"   r0   r1   r   r   r&      s
    zUbuntuDocker.setupr3   r   r   r1   r   r5      s   r5   N)Zsos.report.pluginsr   r   r   r   r   r   r   r	   r+   r5   r   r   r   r   <module>   s   $k