U
    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)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   sJ   |  d | ddddg | jddd | jd	d
d | jddd d S )Nz/var/log/pcsd/pcsd.logzpcs stonith sbd status --fullzpcs stonith sbd watchdog listzpcs stonith history showzpcs property list --all
pcs configZ
pcs_config)Ztagszpcs quorum statusZpcs_quorum_statuszpcs status --fullZ
pcs_status)add_copy_specr   r   r   r   r   	setup_pcs,   s    
zPacemaker.setup_pcsc                 C   s   |  ddd d S )Nr   passw([^\s=]*)=\S+passw\1=********Zdo_cmd_output_subr   r   r   r   postproc_crm_shell8   s
    zPacemaker.postproc_crm_shellc                 C   s   |  ddd d S )Nr   r   r   r   r   r   r   r   postproc_pcs?   s
    zPacemaker.postproc_pcsc           	   	   C   sN  |  dddddddg |   t tdd d	}| d
rxtdt	| d
rd| d
}n| 
d| d
  | jddd}| drd}nd}| d | d | jd|||f |  d d}| | jrJ|  | j t| jR}|D ]F}t||rt||d}dD ]}t|d|}q|  | qW 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 '%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   s\    



zPacemaker.setupN)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZpackagesr   r(   Zoption_listr)   r   r   r   r   r    r1   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t|   d S )Nz/etc/default/pacemaker)	path_joinr)   r   r   superr5   r1   r   	__class__r   r   r1      s    zDebianPacemaker.setupc                 C   s   |    |   d S N)r   r    r   r   r   r   postproc   s    zDebianPacemaker.postprocr2   r3   r4   r1   r;   __classcell__r   r   r8   r   r5      s   r5   c                       s$   e Zd Z fddZdd Z  ZS )RedHatPacemakerc                    s0   |  d| _|   | d tt|   d S )Nz/etc/sysconfig/pacemakerz/etc/sysconfig/sbd)r6   r)   r   r   r7   r>   r1   r   r8   r   r   r1      s    
zRedHatPacemaker.setupc                 C   s   |    d S r:   )r    r   r   r   r   r;      s    zRedHatPacemaker.postprocr<   r   r   r8   r   r>      s   r>   )Zsos.report.pluginsr   r   r   r   r   r   r   r&   r	   r5   r>   r   r   r   r   <module>	   s
   t