Ë
    i©¹dF  ã                   óP   — d dl Z d dlZd dlZd dlZd dlmZmZmZ  G d„ dee«      Zy)é    N)ÚPluginÚRedHatPluginÚ	PluginOptc                   óN   — e Zd ZdZdZdZdZdZdZ e	ddd	¬
«      gZ
d„ Zd„ Zd„ Zy)ÚGlusterzGlusterFS storageÚgluster)ÚstorageÚvirtz/run/gluster)Ú	glusterfszglusterfs-core)z/etc/glusterdz/var/lib/glusterdÚdumpFzenable glusterdump support)ÚdefaultÚdescc                 ó^  — d}| j                  |«      D �cg c]  }| j                  |«      sŒ|‘Œ }}|D ]e  }|dz   }| j                  ||«      }d}|dk(  sŒ"t        |d«      5 }|j	                  «       d   }	t        j                  |	d«      }d d d «       |dk(  rŒDŒg y c c}w # 1 sw Y   ŒxY w)Nr   é   éÿÿÿÿÚrÚDUMP_END_TIME)ÚlistdirÚpath_isfileÚ	path_joinÚopenÚ	readlinesÚstringÚcount)
ÚselfÚname_dirÚstatedumps_presentÚfÚstatedump_entriesÚstatedump_fileÚ_spathÚretÚsfileÚ	last_lines
             ú</usr/lib/python3/dist-packages/sos/report/plugins/gluster.pyÚwait_for_statedumpzGluster.wait_for_statedump   sÇ   € ØÐàŸ<™<¨Ó1ö
Ø°T×5EÑ5EÀaÕ5H’ð
Ðð 
ð 0ò 	CˆNØ!3°AÑ!5ÐØ—^‘^ H¨nÓ=ˆFØˆCØ˜“)Ü˜& #Ó&ð C¨%Ø %§¡Ó 1°"Ñ 5�IÜ Ÿ,™, y°/ÓB�C÷Cð ˜”)ñ		Cùò
÷Cð Cús   –B­BÁ#*B#Â#B,	c                 ó^  — | j                  d«      r�| j                  | j                  «      sy 	 t        j                  | j                  dz   «      }|j	                  t        j                  | j                  dz   «      «       |D ]  }t        j                  |«       Œ y y # t        $ r Y y w xY w)Nr   z/*.dump.[0-9]*z/glusterd_state_[0-9]*_[0-9]*)Ú
get_optionÚpath_existsÚstatedump_dirÚglobÚextendÚosÚremoveÚOSError)r   Úremove_filesÚnames      r%   ÚpostproczGluster.postproc-   s£   € Ø�?‰?˜6Ô"Ø×#Ñ# D×$6Ñ$6Ô7ØðÜ#Ÿy™y¨×);Ñ);Ð>NÑ)NÓO�Ø×#Ñ#¤D§I¡I¨d×.@Ñ.@Ø$Cñ/Dó %Eô Fà(ò $�DÜ—I‘I˜d•Oñ$ð #øô ò Ùðús   ¯A/B  Â 	B,Â+B,c                 ó¨  — | j                  d«       | j                  d«       | j                  dd¬«       | j                  d«       | j                  dd¬«       | j                  g d	¢t        j                  d
«      z   «       | j	                  d«      s| j                  g d¢«       n| j                  d«       | j	                  d«      �r| j                  | j                  «      r�d}| j                  |«      d   dk(  rLt        j                  d«       | j                  | j                  «       | j                  | j                  «       nD| j                  j                  d«       n(| j                  j                  d| j                  z  «       | j                  d«      }|d   dk(  r'|d   j                  «       d   }| j                  |«       | j                  dd¬«      }|d   dk(  ri|d   j!                  «       D ]R  }|j#                  d«      sŒ|dd  }| j                  d|z  d|z  d|z  d|z  d |z  d!|z  d"|z  d#|z  d$|z  d%|z  g
«       ŒT y y )&Nz,/var/lib/glusterd/geo-replication/secret.pemz6/var/lib/glusterd/glusterfind/glusterfind_*_secret.pemzgluster peer statusÚgluster_peer_status)Útagszgluster pool listzgluster volume statusÚgluster_v_status)z/etc/redhat-storage-releasez/etc/swift/z/etc/glusterd.rpmsavez/etc/glusterfsz/var/lib/glusterd/z(/run/gluster/shared_storage/nfs-ganesha/z$/var/lib/glusterd/glusterfind/.keys/z/run/gluster/*tier-dht/*Úall_logs)z/var/log/glusterfs/*logz/var/log/glusterfs/*/*logz)/var/log/glusterfs/geo-replication/*/*logz/var/log/glusterfsr   z+killall -USR1 glusterfs glusterfsd glusterdÚstatusr   r   z6could not send SIGUSR1 to glusterfs/glusterd processesz4Unable to generate statedumps, no such directory: %szgluster get-stateÚoutputr   zgluster volume infoÚgluster_v_infozVolume Name:é   zgluster volume get %s allz(gluster volume geo-replication %s statuszgluster volume heal %s infoz'gluster volume heal %s info split-brainz gluster volume status %s clientszgluster snapshot list %szgluster volume quota %s listz"gluster volume rebalance %s statuszgluster snapshot info %szgluster snapshot status %s)Úadd_forbidden_pathÚadd_cmd_outputÚadd_copy_specr+   r(   r)   r*   Úexec_cmdÚtimeÚsleepr&   ÚsoslogÚinfoÚwarningÚsplitÚcollect_cmd_outputÚ
splitlinesÚ
startswith)r   Ústatedump_cmdÚstateÚ
state_fileÚ
volume_cmdÚlineÚvolnames          r%   ÚsetupzGluster.setup:   st  € Ø×ÑÐ NÔOØ×ÑØDô	
ð 	×ÑÐ1Ð8MÐÔNØ×ÑÐ/Ô0Ø×ÑÐ3Ø!3ð 	ô 	5ð 	×Ñò 
ô �I‰IÐ0Ó1ñ2ô 	3ð �‰˜zÔ*Ø×Ñò  õ ð ×ÑÐ3Ô4à�?‰?˜6Õ"Ø×Ñ × 2Ñ 2Ô3Ø M�Ø—=‘= Ó/°Ñ9¸QÒ>ô —J‘J˜q”MØ×+Ñ+¨D×,>Ñ,>Ô?Ø×&Ñ& t×'9Ñ'9Õ:à—K‘K×$Ñ$ð &:õ ;ð —‘×#Ñ#ð %4Ø6:×6HÑ6Hñ%Iô Jà—M‘MÐ"5Ó6ˆEØ�X‰ !Ò#Ø" 8™_×2Ñ2Ó4°RÑ8�
Ø×"Ñ" :Ô.à×,Ñ,Ð-BØ2Bð -ó Dˆ
à�hÑ 1Ò$Ø" 8Ñ,×7Ñ7Ó9ò �Ø—‘ ~Ô6ØØ˜r˜s˜)�Ø×#Ñ#Ø/°'Ñ9Ø>ÀÑHØ1°GÑ;Ø=ÀÑGØ6¸Ñ@Ø.°Ñ8Ø2°WÑ<Ø8¸7ÑBØ.°Ñ8Ø0°7Ñ:ð%õ ñ	ð %ó    N)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesr*   ÚpackagesÚfilesr   Úoption_listr&   r2   rO   © rP   r%   r   r      sG   „ à$€Jà€KØ"€Hà"€MØ.€HØ2€Eñ 	�& %Ð.JÔKð€KòCòóIrP   r   )	r@   r-   r+   r   Úsos.report.pluginsr   r   r   r   rZ   rP   r%   ú<module>r\      s)   ðó Û 	Û Û ß >Ñ >ôsˆf�lõ srP   