3 ܓi@szddlZddlmZmZddlmZmZmZmZmZddl m Z GdddeZ Gddde eeZ Gd d d e eZ dS) N)datetime timedelta)Plugin RedHatPlugin DebianPlugin UbuntuPlugin PluginOpt)sos_parse_versionc@sneZdZdZdZdZdZeddedded d d d gZ dZ d dZ ddZ ddZ ddZddZddZdS) Pacemakerz4Pacemaker high-availability cluster resource manager pacemakerclusterpacemaker-remotezcrm-fromz%specfiy the start time for crm_report)defaultZval_typedescz crm-scrubTz$enable crm_report password scrubbing)rrcCs|jddS)z Get cluster summary zcrm_mon -1 -A -n -r -tN)add_cmd_output)selfr/usr/lib/python3.6/pacemaker.py setup_crm_mon$szPacemaker.setup_crm_moncCs|jddgdS)z& Get cluster status and configuration z crm statuszcrm configure showN)r)rrrrsetup_crm_shell(szPacemaker.setup_crm_shellcCs|jjjd}|dkrdS|jd|jdddgdj|d}t|td kr^|jd n |jd |jd d d|jddd|jddddS)z& Get pacemaker/corosync configuration ZpcsNz/var/log/pcsd/pcsd.logzpcs stonith sbd status --fullzpcs stonith sbd watchdog listzpcs stonith history show.versionz0.10.8zpcs property config --allzpcs property list --allz pcs configZ pcs_config)Ztagszpcs quorum statusZpcs_quorum_statuszpcs status --fullZ pcs_status)ZpolicyZpackage_managerZ pkg_by_name add_copy_specrjoinr )rZpcs_pkgZ pcs_versionrrr setup_pcs/s   zPacemaker.setup_pcscCs |jddd|jddddS)z Clear password and api keys zcrm configure showzpassw([^\s=]*)=\S+zpassw\1=********z(api[_]?key[^\s=]*)=\S+z \1=********N)do_cmd_output_sub)rrrrpostproc_crm_shellFszPacemaker.postproc_crm_shellcCs|jddddS)z Clear password z pcs configzpassw([^\s=]*)=\S+zpassw\1=********N)r)rrrr postproc_pcsSszPacemaker.postproc_pcsc Csn|jdddddddg|jtjtddjd }|jd r|tjd t |jd rd|jd }n|j d |jd d |j ddd}|jdrd}nd}|j d|j d|j d|d|d|d|jdd}|j|jrj|j|jt|jddd^}xV|D]N}tj||rtj||jd}xd$D]}tj|d|}q8W|j|qWWdQRXdS)%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)Zhoursz%Y-%m-%d %H:%m:%Szcrm-fromz#\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}zcrm_from parameter 'z$' is not a valid date: using defaultZ crm_reportF)nameZmakez crm-scrubz -p "passw.*"rz-scrubbing of crm passwords has been disabled:z:data collected by crm_report may contain sensitive values.zcrm_report --sos-mode z -S -d --dest z --from "")chrootz0^\s*PCMK_logfile=[\'\"]?(\S+)[\'\"]?\s*(\s#.*)?$rzUTF-8)encoding^""$^\'\'$)r&r'r(r))rrrZtodayrZstrftimeZ get_optionrematchstrZ _log_errorZget_cmd_output_pathZ _log_warnrZtmp_in_sysrootZ path_isfileenvfileopensearchgroupsub) rZcrm_fromZcrm_destZ crm_scrubpatternfilelineZlogfileZregexprrrsetup[sF         zPacemaker.setupN)r )r r )__name__ __module__ __qualname__Z short_descZ plugin_nameZprofilesZpackagesrr,Z option_listr-rrrrrr5rrrrr s   r cs$eZdZfddZddZZS)DebianPacemakercs*|jd|_|j|jtjdS)Nz/etc/default/pacemaker) path_joinr-rrsuperr5)r) __class__rrr5s zDebianPacemaker.setupcCs|j|jdS)N)rr)rrrrpostprocszDebianPacemaker.postproc)r6r7r8r5r= __classcell__rr)r<rr9s r9cs$eZdZfddZddZZS)RedHatPacemakercs,|jd|_|j|jdtjdS)Nz/etc/sysconfig/pacemakerz/etc/sysconfig/sbd)r:r-rrr;r5)r)r<rrr5s  zRedHatPacemaker.setupcCs |jdS)N)r)rrrrr=szRedHatPacemaker.postproc)r6r7r8r5r=r>rr)r<rr?s r?)r*rrZsos.report.pluginsrrrrrZ sos.utilitiesr r r9r?rrrr s