o
    *b«  ã                   @   s    d dl mZ G dd„ deƒZdS )é    )ÚClusterc                   @   sB   e Zd ZdZd gZdZddgZdd„ Zdd„ Zd	d
„ Z	dd„ Z
dS )Ú	pacemakerz+Pacemaker High Availability Cluster Manager)r   )ÚonlineTzCollect nodes listed as online)ÚofflineTzCollect nodes listed as offlinec                 C   sH   |   d¡| _| jd dkr|  d¡ g S d| jd v r |  d¡ |  ¡ S )Nz
pcs statusÚstatusr   zLCluster status could not be determined. Is the cluster running on this node?znode names do not matchÚoutputzRWarning: node name mismatch reported. Attempts to connect to some nodes may fail.
)Zexec_primary_cmdÚresZ	log_errorZlog_warnÚparse_pcs_output)Úself© r   úB/usr/lib/python3/dist-packages/sos/collector/clusters/pacemaker.pyÚ	get_nodes   s   

zpacemaker.get_nodesc                 C   s4   g }|   d¡r||  ¡ 7 }|   d¡r||  ¡ 7 }|S )Nr   r   )Z
get_optionÚget_online_nodesÚget_offline_nodes)r
   Únodesr   r   r   r	   #   s   

zpacemaker.parse_pcs_outputc                 C   sR   | j d  ¡ D ]}| d¡r&| d¡d  d¡d }dd„ | d	¡D ƒ  S qd S )
Nr   zOnline:ú[é   ú]r   c                 S   ó   g | ]}|r|‘qS r   r   ©Ú.0Únr   r   r   Ú
<listcomp>/   ó    z.pacemaker.get_online_nodes.<locals>.<listcomp>ú )r   Ú
splitlinesÚ
startswithÚsplit)r
   Úliner   r   r   r   r   +   s   
þÿzpacemaker.get_online_nodesc                 C   s†   g }| j d  ¡ D ]7}| d¡r"| d¡r"| | ¡ d  dd¡¡ | d¡r@| d¡d  d	¡d
 }| dd„ | d¡D ƒ¡ q	|S )Nr   ZNodez	(offline)r   ú:Ú zOFFLINE:r   r   r   c                 S   r   r   r   r   r   r   r   r   8   r   z/pacemaker.get_offline_nodes.<locals>.<listcomp>r   )r   r   r   ÚendswithÚappendr   ÚreplaceÚextend)r
   r   r   r   r   r   r   r   1   s   
€zpacemaker.get_offline_nodesN)Ú__name__Ú
__module__Ú__qualname__Zcluster_nameZsos_pluginsZpackagesZoption_listr   r	   r   r   r   r   r   r   r      s    þr   N)Zsos.collector.clustersr   r   r   r   r   r   Ú<module>   s   
