o
    id                     @   sD   d dl mZmZmZmZ d dlZd dlmZ G dd deeeZdS )    )PluginRedHatPluginDebianPlugin	PluginOptN)gethostnamec                   @   sd   e Zd ZdZdZdZdZdZedddd	ed
ddd	gZ	dZ
dZdZdZdd Zdd Zdd ZdS )PcpzPerformance Co-Pilot datapcp)systemperformance)r   z/etc/pcp.conf	pmmgrlogsd   zsize limit in MB of pmmgr logs)defaultdescpmloggerfiles   z#number of pmlogger files to collectN c                 C   sD   d}t |D ]\}}}|D ]}| ||}|t j|7 }qq|S )Nr   )oswalk	path_joinpathgetsize)selfr   
total_sizedirpathdirnames	filenamesffp r   8/usr/lib/python3/dist-packages/sos/report/plugins/pcp.pyget_size(   s   zPcp.get_sizec              
   C   s   zt | jd}| }|  W n
 ty   Y dS w i }|D ]"}|dr'qz| d\}}|||< W q tt	fyA   Y qw z|d | _
|d | _|d | _W dS  ty^   Y dS w )	NrF#=PCP_SYSCONF_DIRPCP_VAR_DIRPCP_LOG_DIRT)openpcp_conffile	readlinescloseIOError
startswithstripsplit
ValueErrorKeyErrorpcp_sysconf_dirpcp_var_dirpcp_log_dir	Exception)r   pcpconflinesenv_varslinekeyvaluer   r   r   pcp_parse_conffile0   s2   


zPcp.pcp_parse_conffilec                 C   s  |  drd n|  d| _|  drd n|  d| _|  s(| d| j  d S | | jd}| | j	| j|g | 
| |d| |d| |d| |d	g t | _| jd
kr| | jd| jd}| j|| jdd d}| | jd| jd}| d| }|d dkr|d  D ]}| j|dd |d }| jr|| jkr nq| | | jd| | jd| | jd| | jd| | jd| | jdg | d}|d dkr|d  D ]}|dr| d }| jd| d d!  d S qd S d S )"Nall_logsr   r   zcould not parse %sconfigpmchart	pmlogconfpmieconfpmlogrewriter   pmmgr*F)	sizelimittailitr   pmloggerz	ls -t1 %sstatusoutput)rD      pmcdzNOTICES*pmnsz*/*.log*z
*/*/*.log*z*/*/config*r   z
 pmlogger:z'pmstat -S 00:00 -T 23:59 -t 5m -x -a %spmstat)root_symlink)
get_optionrD   
countlimitr;   	_log_warnr(   r   r2   add_copy_specr1   add_forbidden_pathr   pcp_hostnamer3   exec_cmd
splitlinescollect_cmd_outputr,   r.   add_cmd_output)r   var_conf_dirr   files_collectedpmlogger_lsr8   resarcr   r   r   setupK   sx   









z	Pcp.setup)__name__
__module____qualname__
short_descplugin_nameprofilespackagesr(   r   option_listr1   r2   r3   rT   r    r;   r^   r   r   r   r   r      s(    r   )	sos.report.pluginsr   r   r   r   r   socketr   r   r   r   r   r   <module>   s   
