
    -_g?                         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e      Z G d deee      Z G d	 d
ee      Zy)    N)datetime	timedelta)PluginRedHatPluginDebianPluginUbuntuPlugin	PluginOpt)sos_parse_versionc                   r    e Zd ZdZdZdZdZ edded       ed	d
d      gZ	dZ
d Zd Zd Zd Zd Zd Zy)	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                 &    | j                  d       y)z Get cluster summary zcrm_mon -1 -A -n -r -tNadd_cmd_outputselfs    >/usr/lib/python3/dist-packages/sos/report/plugins/pacemaker.pysetup_crm_monzPacemaker.setup_crm_mon$   s    45    c                 *    | j                  ddg       y)z& Get cluster status and configuration z
crm statuscrm configure showNr   r   s    r   setup_crm_shellzPacemaker.setup_crm_shell(   s     
 	r   c                    | j                   j                  j                  d      }|y| j                  d       | j	                  g d       dj                  |d         }t        |      t        d      kD  r| j	                  d       n| j	                  d	       | j	                  d
d       | j	                  dd       | j	                  dd       y)z& Get pacemaker/corosync configuration pcsNz/var/log/pcsd/pcsd.log)z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 config
pcs_config)tagszpcs quorum statuspcs_quorum_statuszpcs status --full
pcs_status)policypackage_managerpkg_by_nameadd_copy_specr   joinr
   )r   pcs_pkgpcs_versions      r   	setup_pcszPacemaker.setup_pcs/   s    ++--99%@?34 
 	 hhwy12[),=h,GG ;< 9:L|</6IJ/lCr   c                 *    | j                  ddd       y) Clear password r   passw([^\s=]*)=\S+passw\1=********Ndo_cmd_output_subr   s    r   postproc_crm_shellzPacemaker.postproc_crm_shellF   s     !	
r   c                 *    | j                  ddd       y)r2   r$   r3   r4   Nr5   r   s    r   postproc_pcszPacemaker.postproc_pcsN   s    !	
r   c           	      2   | j                  g d       | j                          t        j                         t	        d      z
  j                  d      }| j                  d      rdt        j                  dt        | j                  d                  r| j                  d      }n$| j                  d| j                  d       d       | j                  d	d
      }| j                  d      rd}n$d}| j                  d       | j                  d       | j                  d| d| d| d| j                                d}| j                  | j                         r| j                  | j                          t#        | j                   dd      5 }|D ]m  }t        j                  ||      st        j$                  ||      j'                  d      }dD ]  }t        j(                  |d|      } | j                  |       o 	 d d d        y y # 1 sw Y   y xY w)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 'z$' 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.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   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   crm_fromcrm_dest	crm_scrubpatternfilelinelogfileregexps	            r   setupzPacemaker.setupV   s     
 	 	 NN$B'()12E)F 	??:&xx>DOOJ78:??:6*4??:+F*G H6 67 ++E+J??;'&IINNJKNN 0 14YK @''/j	(1F#'#6#6#8 	 	: FDLL)t||,dllC': 4d  4Dxx. #%))GT":"@"@"C&D BF&(ffVR&AGB**7344 4 *4 4s   H,AHHN)__name__
__module____qualname__
short_descplugin_nameprofilespackagesr	   rK   option_listrQ   r   r   r0   r7   r9   r^    r   r   r   r      sh    GJKHH 	*b3>	@+t=	?K G6D.

94r   r   c                   $     e Zd Z fdZd Z xZS )DebianPacemakerc                     | j                  d      | _        | j                          | j                          t        |           y )Nz/etc/default/pacemaker)	path_joinrQ   r   r0   superr^   r   	__class__s    r   r^   zDebianPacemaker.setup   s3    ~~&>?r   c                 D    | j                          | j                          y N)r7   r9   r   s    r   postproczDebianPacemaker.postproc   s    !r   r_   r`   ra   r^   rq   __classcell__rn   s   @r   ri   ri      s    r   ri   c                   $     e Zd Z fdZd Z xZS )RedHatPacemakerc                     | j                  d      | _        | j                          | j                  d       t        |           y )Nz/etc/sysconfig/pacemakerz/etc/sysconfig/sbd)rk   rQ   r0   r,   rl   r^   rm   s    r   r^   zRedHatPacemaker.setup   s6    ~~&@A/0r   c                 $    | j                          y rp   )r9   r   s    r   rq   zRedHatPacemaker.postproc   s    r   rr   rt   s   @r   rv   rv      s    r   rv   )rI   r   r   sos.report.pluginsr   r   r   r   r	   sos.utilitiesr
   r   ri   rv   rg   r   r   <module>r{      sG    
 (9 9 +4 4D	i| 	i r   