o
    *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 | g d | jdd | d | t| dgd g d}|D ]	}| d	|  q)| d
rF| jddd | jddd | d}|d dkrldd |d  dd  D }|D ]	}| d|  qbd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 q|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)services)zevents --since 24h --until 1sinfoimagesZpszps -azstats --no-streamversionz	volume lsz	docker %sr   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>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noner   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   sX   	






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                           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   r2   r   r,   u   s    r,   c                       r+   )UbuntuDocker)z	docker.ior-   r.   r/   c                    s    t t|   | g d d S )N)z/etc/containerd/z/etc/default/dockerz//run/docker/libcontainerd/containerd/events.log)r0   r6   r&   r"   r1   r2   r   r   r&      s   zUbuntuDocker.setupr4   r   r   r2   r   r6      s    r6   N)
Zsos.report.pluginsr   r   r   r   r   r   r   r,   r6   r   r   r   r   <module>   s    
f