U
    -Ø_g  ã                   @   s@   d dl Z d dlmZ d dlmZmZmZ G dd„ deeeƒZdS )é    N)Úgethostname)Ú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 )ÚCephRGWzCEPH rgwZceph_rgw)ZstorageZvirtZ	containerZ	webserverZceph)zceph-(.*)?rgw.*)z/var/lib/ceph/radosgw/*z)/var/snap/microceph/common/data/radosgw/*c                    s  |   d¡}dddddddd	d
dddddddddg}| jj d¡}|rt|rV|  dg¡ n|  dg¡ |  dddg¡ n<|sˆ| jddd n| jddd |  ddd d!d"d#d$d%g¡ |r¸d&nd'tƒ  ‰ |  ‡ fd(d)„|D ƒ¡ |  d*ˆ › d+¡}|d, d-krlz<t	 
|d. ¡}|d/ }|D ]}|  d*ˆ › d0|› ¡ qW n4 tk
rj } z|  d1|› ¡ W 5 d }~X Y nX |  d*ˆ › d2¡}|d, d-krþz<t	 
|d. ¡}|d3 }	|	D ]}
|  d*ˆ › d4|
› ¡ q¨W n4 tk
rü } z|  d5|› ¡ W 5 d }~X Y nX d S )6NÚall_logszbucket limit checkzbucket listzbucket statszdatalog listzdatalog statuszgc listzlc listzlog listzmetadata sync statuszperiod listz
realm listzreshard listzsync error listzsync statusz	zone listzzone placement listzzonegroup listzzonegroup placement listÚ	microcephz3/var/snap/microceph/common/logs/*ceph-radosgw*.log*z2/var/snap/microceph/common/logs/*ceph-radosgw*.logz'/var/snap/microceph/common/**/*keyring*z(/var/snap/microceph/current/**/*keyring*z"/var/snap/microceph/common/state/*z"/var/log/ceph/ceph-client.rgw*.logZceph_rgw_log)Ztagsz#/var/log/ceph/ceph-client.rgw*.log*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radosgw.gatewayzrgw.c                    s   g | ]}d ˆ › d|› ‘qS )úradosgw-admin --id=ú © )Ú.0Úc©Zrgw_idr   ú=/usr/lib/python3/dist-packages/sos/report/plugins/ceph_rgw.pyÚ
<listcomp>U   s     z!CephRGW.setup.<locals>.<listcomp>r	   z
 zone listZstatusr   ÚoutputZzonesz zone get --rgw-zone=z'Error while getting get rgw zone list: z zonegroup listÚ
zonegroupsz zone get --rgw-zonegroup=z,Error while getting get rgw zonegroup list: )Z
get_optionZpolicyZpackage_managerZpkg_by_nameZadd_copy_specZadd_forbidden_pathr   Zadd_cmd_outputZcollect_cmd_outputÚjsonÚloadsÚ
ValueErrorZ
_log_error)Úselfr   Zcmdsr   ÚresZ_outZ	zone_listZzoneÚerrr   Zzgroupr   r   r   Úsetup   sŽ    
ïÿÿýÿÿö"zCephRGW.setupc                 C   s   d}|   d|d¡ dS )z& Obfuscate secondary zone access keys z!("access_key":|"secret_key":)\s.*zradosgw-adminz\1 "**********"N)Zdo_cmd_output_sub)r   Zrsubr   r   r   Úpostprocr   s    zCephRGW.postprocN)
Ú__name__Ú
__module__Ú__qualname__Z
short_descZplugin_nameZprofilesZ
containersÚfilesr   r   r   r   r   r   r      s   Yr   )r   Zsocketr   Zsos.report.pluginsr   r   r   r   r   r   r   r   Ú<module>	   s   