3 ܓi @ sz d dl Z d dlmZmZ d dlmZmZmZmZmZ d dl m Z G dd deZG dd deeeZG d d d eeZ dS ) N)datetime timedelta)PluginRedHatPluginDebianPluginUbuntuPlugin PluginOpt)sos_parse_versionc @ sn e Zd ZdZdZdZdZeddedded d ddgZ dZ d d Zdd Zdd Z dd Zdd Zdd ZdS ) Pacemakerz4Pacemaker high-availability cluster resource manager pacemakerclusterpacemaker-remotezcrm-from z%specfiy the start time for crm_report)defaultZval_typedescz crm-scrubTz$enable crm_report password scrubbing)r r c C s | j d dS )z Get cluster summary zcrm_mon -1 -A -n -r -tN)add_cmd_output)self r /usr/lib/python3.6/pacemaker.py setup_crm_mon$ s zPacemaker.setup_crm_monc C s | j ddg dS )z& Get cluster status and configuration z crm statuszcrm configure showN)r )r r r r setup_crm_shell( s zPacemaker.setup_crm_shellc C s | j jjd}|dkrdS | jd | jdddg dj|d }t|td kr^| jd n | jd | jdd d | jddd | jddd dS )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_managerZpkg_by_name add_copy_specr joinr )r Zpcs_pkgZpcs_versionr r r setup_pcs/ s zPacemaker.setup_pcsc C s | j ddd | j ddd dS )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)r r r r postproc_crm_shellF s zPacemaker.postproc_crm_shellc C s | j ddd dS )z Clear password z pcs configzpassw([^\s=]*)=\S+zpassw\1=********N)r )r r r r postproc_pcsS s zPacemaker.postproc_pcsc C sn | j dddddddg | j tj tdd jd }| jd r|tjdt | jd rd| jd }n| j d| jd d | jddd}| jdrd}nd}| jd | jd | j d| d| d| d| j d d}| j| jrj| j | j t| jddd^}xV|D ]N}tj||rtj||jd}xd$D ]}tj|d|}q8W | j | qW W d 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 )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.*"r z-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&