o
    O6uf  ã                   @   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)Úhpc)z	slurm-wlmÚslurmdÚslurmdbdÚ	slurmctldr   zslurm-slurmctldzslurm-slurmdzslurm-slurmdbd)r	   r
   r   c           	   
   C   sx  |   ddg¡ tdƒr|  ddg¡ tdƒr|  dg¡ g d¢}td	ƒr.|  d
d„ |D ƒ¡ d}|  |¡s7d}d}d}zFt|ddd��5}| ¡  ¡ D ]&}|sOqJ| d¡}|d  ¡ dkrb|d  ¡ }|d  ¡ dkrp|d  ¡ }qJW d  ƒ n1 s{w   Y  W n t	yž } z|  
d|› d|› �¡ W Y d}~nd}~ww |  d¡s­|   ||g¡ dS |   |› d�|› d�g¡ dS )z  Slurm Workload Manager
        z/etc/slurm/*.confz/var/run/slurm/conf/*.confÚsinfoz!sinfo --all --list-reasons --longzsinfo --all --longÚsqueuezsqueue --all --long)ÚaliasesÚ	assoc_mgrÚbbstatÚburstBufferÚconfigÚdaemonsÚdwstatÚ
federationÚfrontendÚjobÚlicensesÚnodeÚ	partitionÚreservationr	   ÚstepÚtopologyÚ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   ÚSlurmdLogFileé   ÚSlurmctldLogFileNzCould not open conf file z: Úall_logsÚ*)Úadd_copy_specr   Úadd_cmd_outputÚpath_existsÚopenÚreadÚ
splitlinesÚsplitÚstripÚIOErrorÚ
_log_errorÚ
get_option)	ÚselfÚscontrol_cmdsÚconfig_fileÚslurmd_log_fileÚslurmctld_log_fileÚcfileÚlineÚwordsÚerrorr   r   r"   Úsetup%   sh   þþÿÿ

€ùÿ€	ÿ€ÿ

þ
þ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/confÚAccountingStoragePassÚJobCompPassz(^\s*(ú|z)\s*=\s*)(.*)z(^\s*(StoragePass)\s*=\s*)(.*)z
\1********z/slurm.confz/slurmdbd.conf)ÚjoinÚdo_file_sub)r7   Ú
conf_pathsÚ
slurm_keysÚslurm_keys_regexÚslurmdbd_key_regexÚsubÚ	conf_pathr   r   r"   Úpostprocs   s&   þþþþûzSlurm.postprocN)
Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesÚpackagesÚservicesr@   rL   r   r   r   r"   r      s    Nr   N)Úsos.report.pluginsr   r   r   Úsos.utilitiesr   r   r   r   r   r"   Ú<module>   s   