o
    id*                     @   sn   d dl mZmZmZmZmZ d dlmZmZ d dlZG dd deZ	G dd de	eeZ
G dd	 d	e	eZdS )
    )PluginRedHatPluginDebianPluginUbuntuPlugin	PluginOpt)datetime	timedeltaNc                   @   sn   e Zd ZdZdZdZdZeddedded	d
ddgZ	dZ
dd Zdd Zdd Zdd Zdd Zdd ZdS )	Pacemakerz4Pacemaker high-availability cluster resource manager	pacemaker)cluster)r
   zpacemaker-remotecrm_from z%specfiy the start time for crm_report)defaultval_typedesc	crm_scrubTz$enable crm_report password scrubbing)r   r   c                 C   s   |  d d S )Nzcrm_mon -1 -A -n -r -tadd_cmd_outputself r   >/usr/lib/python3/dist-packages/sos/report/plugins/pacemaker.pysetup_crm_mon#   s   zPacemaker.setup_crm_monc                 C   s   |  ddg d S )Nz
crm statuscrm configure showr   r   r   r   r   setup_crm_shell&   s   
zPacemaker.setup_crm_shellc                 C   sF   |  d | g d | jddd | jddd | jdd	d d S )
Nz/var/log/pcsd/pcsd.log)zpcs stonith sbd status --fullzpcs stonith sbd watchdog listzpcs stonith history showzpcs property list --all
pcs config
pcs_config)tagszpcs quorum statuspcs_quorum_statuszpcs status --full
pcs_status)add_copy_specr   r   r   r   r   	setup_pcs,   s
   
zPacemaker.setup_pcsc                 C      |  ddd d S )Nr   passw([^\s=]*)=\S+passw\1=********do_cmd_output_subr   r   r   r   postproc_crm_shell8   
   zPacemaker.postproc_crm_shellc                 C   r"   )Nr   r#   r$   r%   r   r   r   r   postproc_pcs?   r(   zPacemaker.postproc_pcsc           	      C   sZ  |  g d |   t tdd d}| dr7tdt	| dr-| d}n
| 
d| d  | jdd	d
}| drFd}nd}| d | d | jd|||f |  d d}| | jr|  | j t| j.}|D ]"}t||rt||d}dD ]	}t|d|}q|  | qvW d    d S 1 sw   Y  d S d S )N)z!/var/log/pacemaker/pacemaker.log*/var/log/pacemaker/bundles/*/z/var/log/pacemaker/pengine*z/var/log/pacemaker.logr*   z/var/log/cluster/pacemaker.log*z/var/log/cluster/bundles/*/H   )hoursz%Y-%m-%d %H:%m:%Sr   z#\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}z:crm_from parameter '%s' is not a valid date: using default
crm_reportF)namemaker   z-p "passw.*"r   z-scrubbing of crm passwords has been disabled:z:data collected by crm_report may contain sensitive values.z5crm_report --sos-mode %s -S -d  --dest %s --from "%s")chrootz0^\s*PCMK_logfile=[\'\"]?(\S+)[\'\"]?\s*(\s#.*)?$   )z^"z"$z^\'z\'$)r    r   r   todayr   strftime
get_optionrematchstr
_log_errorget_cmd_output_path	_log_warnr   tmp_in_sysrootpath_isfileenvfileopensearchgroupsub)	r   r   crm_destr   patternflinelogfileregexpr   r   r   setupF   sT   




"zPacemaker.setupN)__name__
__module____qualname__
short_descplugin_nameprofilespackagesr   r7   option_listr=   r   r   r!   r'   r)   rH   r   r   r   r   r	      s&    r	   c                       $   e Zd Z fddZdd Z  ZS )DebianPacemakerc                    s.   |  d| _|   |   tt|   d S )Nz/etc/default/pacemaker)	path_joinr=   r   r!   superrR   rH   r   	__class__r   r   rH      s   zDebianPacemaker.setupc                 C   s   |    |   d S N)r'   r)   r   r   r   r   postproc   s   zDebianPacemaker.postprocrI   rJ   rK   rH   rX   __classcell__r   r   rU   r   rR          rR   c                       rQ   )RedHatPacemakerc                    s0   |  d| _|   | d tt|   d S )Nz/etc/sysconfig/pacemakerz/etc/sysconfig/sbd)rS   r=   r!   r    rT   r\   rH   r   rU   r   r   rH      s   
zRedHatPacemaker.setupc                 C   s   |    d S rW   )r)   r   r   r   r   rX      s   zRedHatPacemaker.postprocrY   r   r   rU   r   r\      r[   r\   )sos.report.pluginsr   r   r   r   r   r   r   r5   r	   rR   r\   r   r   r   r   <module>   s   t