U
    -_g                     @   s8   d dl mZmZmZ d dlmZ G dd deeeZdS )    )PluginUbuntuPluginRedHatPlugin)is_executablec                   @   s0   e Zd ZdZdZdZdZdZdd Zdd	 Z	d
S )SlurmzSlurm Workload Managerslurm)Zhpc)z	slurm-wlmslurmdslurmdbd	slurmctldr   zslurm-slurmctldzslurm-slurmdzslurm-slurmdbd)r   r	   r
   c           	      C   s  |  ddg tdr$| ddg tdr8| dg dd	d
ddddddddddddddg}tdrz| dd |D  d}| |sd}d}d}zxt|d d!d"`}|  D ]L}|sq|d#}|d$  d%kr|d&  }|d$  d'kr|d&  }qW 5 Q R X W n: t	k
rF } z| 
d(| d)|  W 5 d*}~X Y nX | d+sd|  ||g n|  | d,| d,g d*S )-z  Slurm Workload Manager
        z/etc/slurm/*.confz/var/run/slurm/conf/*.confZsinfoz!sinfo --all --list-reasons --longzsinfo --all --longZsqueuezsqueue --all --longaliasesZ	assoc_mgrZbbstatZburstBufferZconfigZdaemonsZdwstatZ
federationZfrontendZjobZlicensesZnode	partitionZreservationr   stepZtopologyZscontrolc                 S   s   g | ]}d | qS )zscontrol show  ).0ir   r   :/usr/lib/python3/dist-packages/sos/report/plugins/slurm.py
<listcomp>O   s     zSlurm.setup.<locals>.<listcomp>z/etc/slurm/slurm.confz/var/run/slurm/conf/slurm.confz/var/log/slurmd.logz/var/log/slurmctld.logrzUTF-8)encoding=r   ZSlurmdLogFile   ZSlurmctldLogFilezCould not open conf file z: NZall_logs*)Zadd_copy_specr   Zadd_cmd_outputZpath_existsopenread
splitlinessplitstripIOErrorZ
_log_errorZ
get_option)	selfZscontrol_cmdsZconfig_fileZslurmd_log_fileZslurmctld_log_filecfilelineZwordserrorr   r   r   setup%   sz    

(zSlurm.setupc                 C   s`   ddg}ddg}dd | d}d}d	}|D ],}| | d
|| | | d|| q.d S )Nz
/etc/slurmz/var/run/slurm/confZAccountingStoragePassZJobCompPassz(^\s*(|z)\s*=\s*)(.*)z(^\s*(StoragePass)\s*=\s*)(.*)z
\1********z/slurm.confz/slurmdbd.conf)joinZdo_file_sub)r   Z
conf_pathsZ
slurm_keysZslurm_keys_regexZslurmdbd_key_regexsubZ	conf_pathr   r   r   postprocs   s(      zSlurm.postprocN)
__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZpackagesservicesr"   r&   r   r   r   r   r      s   Nr   N)Zsos.report.pluginsr   r   r   Zsos.utilitiesr   r   r   r   r   r   <module>	   s   