o
    *b                     @   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)systemZperformance)r   z/etc/pcp.conf	pmmgrlogsd   zsize limit in MB of pmmgr logs)defaultZ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   Z
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#=ZPCP_SYSCONF_DIRZPCP_VAR_DIRZ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   ZpcpconflinesZ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 )"NZall_logsr
   r   zcould not parse %sZconfigZpmchartZ	pmlogconfZpmieconfZpmlogrewriter   Zpmmgr*F)	sizelimitZtailitr   Zpmloggerz	ls -t1 %sstatusoutput)r5      ZpmcdzNOTICES*Zpmnsz*/*.log*z
*/*/*.log*z*/*/config*r   z
 pmlogger:z'pmstat -S 00:00 -T 23:59 -t 5m -x -a %sZpmstat)Zroot_symlink)Z
get_optionr5   Z
countlimitr3   Z	_log_warnr"   r   r,   Zadd_copy_specr+   Zadd_forbidden_pathr   pcp_hostnamer-   Zexec_cmd
splitlinesZcollect_cmd_outputr&   r(   Zadd_cmd_output)r   Zvar_conf_dirr   Zfiles_collectedZpmlogger_lsr0   resZarcr   r   r   setupK   sx   









z	Pcp.setup)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZpackagesr"   r   Zoption_listr+   r,   r-   r:   r   r3   r=   r   r   r   r   r      s(    r   )	Zsos.report.pluginsr   r   r   r   r   Zsocketr   r   r   r   r   r   <module>   s   
