U
    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)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 ]0\}}}|D ] }| ||}|t j|7 }qq|S )Nr   )oswalk	path_joinpathgetsize)selfr   Z
total_sizedirpathZ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k
r6   Y dS X i }|D ]H}|drPq@z| d\}}|||< W q@ tt	fk
r   Y q@X q@z"|d | _
|d | _|d | _W n tk
r   Y dS X dS )	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   s,    


zPcp.pcp_parse_conffilec                 C   s  |  drd n|  d| _|  dr(d n|  d| _|  sP| d| j  d S | | jd}| | j	| j|g | 
| |d| |d| |d| |d	g t | _| jd
krV| | jd| jd}| j|| jdd d}| | jd| jd}| d| }|d dkrV|d  D ]6}| j|dd |d }| jr|| jkr qVq| | | jd| | jd| | jd| | jd| | jd| | jdg | d}|d dkr|d  D ]6}|dr| d }| jd| d d!  qqd S )"NZall_logsr
   r   zcould not parse %sZconfigZpmchartZ	pmlogconfZpmieconfZpmlogrewriter   Zpmmgr*F)	sizelimitZtailitr   Zpmloggerz	ls -t1 %sZstatusoutput)r4      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_optionr4   Z
countlimitr2   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_lsr/   resZarcr   r   r   setupK   st    





 
 

z	Pcp.setup)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZpackagesr!   r   Zoption_listr*   r+   r,   r8   r   r2   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   