o
    *b                     @   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)Zcluster)r
   zpacemaker-remotecrm_from z%specfiy the start time for crm_report)defaultZ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   s   |  d | g d d S )Nz/var/log/pcsd/pcsd.log)
pcs configzpcs status --fullzpcs stonith sbd status --fullzpcs stonith sbd watchdog listzpcs stonith history showzpcs quorum statuszpcs property list --all)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=********Z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.logr#   z/var/log/cluster/pacemaker.logz/var/log/cluster/bundles/*/H   )Z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 defaultZ
crm_reportF)nameZ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   Ztodayr   strftimeZ
get_optionrematchstrZ
_log_errorZget_cmd_output_pathZ	_log_warnr   Ztmp_in_sysrootZpath_isfileenvfileopensearchgroupsub)	r   r   Zcrm_destr   patternflineZlogfileZregexpr   r   r   setupF   sT   




"zPacemaker.setupN)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZpackagesr   r+   Zoption_listr,   r   r   r   r    r"   r4   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   superr9   r4   r   	__class__r   r   r4      s   zDebianPacemaker.setupc                 C   s   |    |   d S N)r    r"   r   r   r   r   postproc   s   zDebianPacemaker.postprocr5   r6   r7   r4   r?   __classcell__r   r   r<   r   r9          r9   c                       r8   )RedHatPacemakerc                    s0   |  d| _|   | d tt|   d S )Nz/etc/sysconfig/pacemakerz/etc/sysconfig/sbd)r:   r,   r   r   r;   rC   r4   r   r<   r   r   r4      s   
zRedHatPacemaker.setupc                 C   s   |    d S r>   )r"   r   r   r   r   r?      s   zRedHatPacemaker.postprocr@   r   r   r<   r   rC      rB   rC   )Zsos.report.pluginsr   r   r   r   r   r   r   r)   r	   r9   rC   r   r   r   r   <module>   s   s