U
    -_g3                     @   s<   d dl mZ d dlmZmZmZmZ G dd deeeZdS )    )gethostname)PluginRedHatPluginDebianPlugin	PluginOptc                   @   s\   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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   s   z(t | jddd}| }W 5 Q R X W n tk
r>   Y dS X i }|D ]H}|drXqHz| d\}}|||< W qH ttfk
r   Y qHX qHz"|d | _	|d | _
|d	 | _W n tk
r   Y dS X d
S )z Parse PCP configuration rzUTF-8)encodingF#=ZPCP_SYSCONF_DIRZPCP_VAR_DIRZPCP_LOG_DIRT)openpcp_conffile	readlinesIOError
startswithstripsplit
ValueErrorKeyErrorpcp_sysconf_dirpcp_var_dirpcp_log_dir	Exception)selfZpcpconflinesZenv_varslinekeyvalue r&   8/usr/lib/python3/dist-packages/sos/report/plugins/pcp.pypcp_parse_conffile'   s*    


zPcp.pcp_parse_conffilec           
      C   s  |  drd n|  d}|  dr&d n|  d}|  sN| d| j  d S | | jd}| | j| j|g | | |d| |d| |d| |d	g t	 | _
| j
d
krP| | jd| j
d}| j||dd d}| | jd| j
d}| d| }|d dkrP|d  D ]2}| j|dd |d }|r||kr qPq| | | jd| | jd| | jd| | jd| | jd| | jdg | d}|d dkr |d  D ]8}|dr| d }	| jd|	 d d!  q qd S )"NZall_logsr
   r   zcould not parse ZconfigZpmchartZ	pmlogconfZpmieconfZpmlogrewriter   Zpmmgr*F)	sizelimitZtailitr   Zpmloggerzls -t1 Zstatusoutput)r*      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 Zpmstat)Zroot_symlink)Z
get_optionr(   Z	_log_warnr   Z	path_joinr   Zadd_copy_specr   Zadd_forbidden_pathr   pcp_hostnamer   Zexec_cmd
splitlinesZcollect_cmd_outputr   r   Zadd_cmd_output)
r!   r*   Z
countlimitZvar_conf_dirpathZfiles_collectedZpmlogger_lsr#   resZarcr&   r&   r'   setupC   st    





 
 

z	Pcp.setup)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZpackagesr   r   Zoption_listr   r   r   r.   r(   r2   r&   r&   r&   r'   r      s$   r   N)Zsocketr   Zsos.report.pluginsr   r   r   r   r   r&   r&   r&   r'   <module>   s   