o
    O6uf”  ã                   @   s4   d dl Z d dlmZmZmZ G dd„ deeeƒZdS )é    N)ÚPluginÚRedHatPluginÚUbuntuPluginc                   @   s0   e Zd ZdZdZdZdZdZdd„ Zdd	„ Z	d
S )ÚCephMDSzCEPH mdsÚceph_mds)ÚstorageÚvirtÚ	containerÚceph)zceph-(.*-)?fs.*)z/var/lib/ceph/mds/*ú/var/lib/ceph/*/mds.*z%/var/snap/microceph/common/data/mds/*c                    sú   |   d¡}| jj d¡}|r%|r|  dg¡ n|  dg¡ |  g d¢¡ n$|  ddi¡ |s5|  dg¡ n|  d	g¡ |  g d
¢¡ |  g d¢¡ g d¢‰ z|  d¡d d }W n tyc   d }Y nw |rhdnd}| j	‡ fdd„|  
|¡D ƒ|d� d S )NÚall_logsÚ	microcephz//var/snap/microceph/common/logs/*ceph-mds*.log*z./var/snap/microceph/common/logs/*ceph-mds*.log)z'/var/snap/microceph/common/**/*keyring*z(/var/snap/microceph/current/**/*keyring*z"/var/snap/microceph/common/state/*z/var/log/ceph/ceph-mds.*.logÚceph_mds_logz/var/log/ceph/ceph-mds*.logz/var/log/ceph/ceph-mds*.log*)z/var/lib/ceph/bootstrap-mds/z/var/lib/ceph/mds/r   z/run/ceph/ceph-mds*)z/etc/ceph/*keyring*z/var/lib/ceph/*keyring*z/var/lib/ceph/*/*keyring*z/var/lib/ceph/*/*/*keyring*z/var/lib/ceph/osdz/var/lib/ceph/monz/var/lib/ceph/tmp/*mnt*z/etc/ceph/*bindpass*)zcache statusz	client lszconfig diffzconfig showzcounter dumpzcounter schemaz	damage lsz
dump loadsz	dump treeÚdump_blocked_opsÚdump_historic_opsÚdump_historic_ops_by_durationÚdump_mempoolsÚdump_ops_in_flightzget subtreesÚobjecter_requestsÚopsz	perf dumpzperf histogram dumpzperf histogram schemazperf schemaz
session lsÚstatusÚversionz	ceph-mds*r   é   z/var/snap/microceph/current/runz/var/run/cephc                    s&   g | ]}ˆ D ]
}d |› d|› �‘qqS )zceph daemon ú © )Ú.0ÚiÚc©Úcmdsr   ú=/usr/lib/python3/dist-packages/sos/report/plugins/ceph_mds.pyÚ
<listcomp>j   s    þÿÿz!CephMDS.setup.<locals>.<listcomp>)r	   )Ú
get_optionÚpolicyÚpackage_managerÚpkg_by_nameÚadd_copy_specÚadd_forbidden_pathÚadd_file_tagsÚget_all_containers_by_regexÚ	ExceptionÚadd_cmd_outputÚ	get_socks)Úselfr   r   ÚcnameÚ	directoryr   r   r    Úsetup   sB   
ÿÿÿÿÿþ
ýzCephMDS.setupc                 C   sL   g }t  |¡D ]\}}}|D ]}| d¡r"d|v r"| |  ||¡¡ qq|S )z¡
        Find any available admin sockets under /var/run/ceph (or subdirs for
        later versions of Ceph) which can be used for ceph daemon commands
        z.asokÚmds)ÚosÚwalkÚendswithÚappendÚ	path_join)r-   r/   Úceph_socketsÚrdirÚ_ÚfilesÚfiler   r   r    r,   p   s   €þzCephMDS.get_socksN)
Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesÚ
containersr:   r0   r,   r   r   r   r    r      s    Zr   )r2   Úsos.report.pluginsr   r   r   r   r   r   r   r    Ú<module>   s   