o
    O6uf3  ã                   @   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)ÚsystemÚperformance)r   z/etc/pcp.confÚ	pmmgrlogséd   zsize limit in MB of pmmgr logs)ÚdefaultÚdescÚpmloggerfilesé   z#number of pmlogger files to collectNÚ c              
   C   sÚ   zt | jddd��}| ¡ }W d  ƒ n1 sw   Y  W n
 ty(   Y dS w i }|D ]"}| d¡r5q-z| ¡  d¡\}}|||< W q- ttfyO   Y q-w z|d | _	|d	 | _
|d
 | _W dS  tyl   Y dS w )z Parse PCP configuration ÚrzUTF-8)ÚencodingNFú#ú=ÚPCP_SYSCONF_DIRÚPCP_VAR_DIRÚPCP_LOG_DIRT)ÚopenÚpcp_conffileÚ	readlinesÚIOErrorÚ
startswithÚstripÚsplitÚ
ValueErrorÚKeyErrorÚpcp_sysconf_dirÚpcp_var_dirÚpcp_log_dirÚ	Exception)ÚselfÚpcpconfÚlinesÚenv_varsÚlineÚkeyÚvalue© r-   ú8/usr/lib/python3/dist-packages/sos/report/plugins/pcp.pyÚpcp_parse_conffile'   s4   
ÿ€ÿ
þ

üþ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||dd� d}|  | jd| j
d¡}|  d|› �¡}|d dkr¢|d  ¡ D ]}| j|dd� |d }|r¡||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 qÜd S d S )"NÚall_logsr   r   zcould not parse ÚconfigÚpmchartÚ	pmlogconfÚpmieconfÚpmlogrewriter   ÚpmmgrÚ*F)Ú	sizelimitÚtailitr   Úpmloggerzls -t1 ÚstatusÚoutput)r8   é   ÚpmcdzNOTICES*Úpmnsz*/*.log*z
*/*/*.log*z*/*/config*r   z
 pmlogger:éÿÿÿÿz%pmstat -S 00:00 -T 23:59 -t 5m -x -a Úpmstat)Úroot_symlink)Ú
get_optionr/   Ú	_log_warnr   Ú	path_joinr#   Úadd_copy_specr"   Úadd_forbidden_pathr   Úpcp_hostnamer$   Úexec_cmdÚ
splitlinesÚcollect_cmd_outputr   r   Úadd_cmd_output)
r&   r8   Ú
countlimitÚvar_conf_dirÚpathÚfiles_collectedÚpmlogger_lsr*   ÚresÚarcr-   r-   r.   ÚsetupC   sx   ÿÿý




ü

ÿ
ÿ€ö

þúþz	Pcp.setup)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesÚpackagesr   r   Úoption_listr"   r#   r$   rH   r/   rT   r-   r-   r-   r.   r      s&    ÿÿýr   N)Úsocketr   Úsos.report.pluginsr   r   r   r   r   r-   r-   r-   r.   Ú<module>   s   
