U
    -_g?                     @   sz   d dl Z d dlmZmZ d dlmZmZmZmZmZ d dl	m
Z
 G dd deZG dd deeeZG d	d
 d
eeZdS )    N)datetime	timedelta)PluginRedHatPluginDebianPluginUbuntuPlugin	PluginOpt)sos_parse_versionc                   @   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 )z Get cluster summary zcrm_mon -1 -A -n -r -tN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 )z& Get cluster status and configuration z
crm statuscrm configure showNr   r   r   r   r   setup_crm_shell(   s    zPacemaker.setup_crm_shellc                 C   s   | j jd}|dkrdS | d | dddg d|d }t|td	kr^| d
 n
| d | jddd | jddd | jddd dS )z& Get pacemaker/corosync configuration ZpcsNz/var/log/pcsd/pcsd.logzpcs stonith sbd status --fullzpcs stonith sbd watchdog listzpcs stonith history show.versionz0.10.8zpcs property config --allzpcs property list --all
pcs configZ
pcs_config)Ztagszpcs quorum statusZpcs_quorum_statuszpcs status --fullZ
pcs_status)ZpolicyZpackage_managerZpkg_by_nameadd_copy_specr   joinr	   )r   Zpcs_pkgZpcs_versionr   r   r   	setup_pcs/   s     

zPacemaker.setup_pcsc                 C   s   |  ddd dS ) Clear password r   passw([^\s=]*)=\S+passw\1=********NZdo_cmd_output_subr   r   r   r   postproc_crm_shellF   s
    zPacemaker.postproc_crm_shellc                 C   s   |  ddd dS )r    r   r!   r"   Nr#   r   r   r   r   postproc_pcsN   s
    zPacemaker.postproc_pcsc           	   	   C   sf  |  dddddddg |   t tdd d	}| d
r|tdt	| d
rd| d
}n| 
d| d
 d | jddd}| drd}nd}| d | d | jd| d| d| d|  d d}| | jrb|  | j t| jdddV}|D ]J}t||rt||d}d D ]}t|d|}q4|  | qW 5 Q R X d S )!Nz!/var/log/pacemaker/pacemaker.log*z/var/log/pacemaker/bundles/*/z/var/log/pacemaker/pengine*z/var/log/pacemaker.logz/var/log/cluster/pacemaker.log*z/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 'z$' 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.zcrm_report --sos-mode z -S -d  --dest z	 --from "")chrootz0^\s*PCMK_logfile=[\'\"]?(\S+)[\'\"]?\s*(\s#.*)?$rzUTF-8)encoding   )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   Zcrm_fromZcrm_destZ	crm_scrubpatternfilelineZlogfileZregexpr   r   r   setupV   sT    



zPacemaker.setupN)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZpackagesr   r0   Zoption_listr1   r   r   r   r$   r%   r9   r   r   r   r   r
      s$   r
   c                       s$   e Zd Z fddZdd Z  ZS )DebianPacemakerc                    s*   |  d| _|   |   t   d S )Nz/etc/default/pacemaker)	path_joinr1   r   r   superr9   r   	__class__r   r   r9      s    zDebianPacemaker.setupc                 C   s   |    |   d S N)r$   r%   r   r   r   r   postproc   s    zDebianPacemaker.postprocr:   r;   r<   r9   rC   __classcell__r   r   r@   r   r=      s   r=   c                       s$   e Zd Z fddZdd Z  ZS )RedHatPacemakerc                    s,   |  d| _|   | d t   d S )Nz/etc/sysconfig/pacemakerz/etc/sysconfig/sbd)r>   r1   r   r   r?   r9   r   r@   r   r   r9      s    
zRedHatPacemaker.setupc                 C   s   |    d S rB   )r%   r   r   r   r   rC      s    zRedHatPacemaker.postprocrD   r   r   r@   r   rF      s   rF   )r.   r   r   Zsos.report.pluginsr   r   r   r   r   Zsos.utilitiesr	   r
   r=   rF   r   r   r   r   <module>	   s    