o idF@sJddlZddlZddlZddlZddlmZmZmZGdddeeZdS)N)Plugin RedHatPlugin PluginOptc@sLeZdZdZdZdZdZdZdZe ddd d gZ d d Z d dZ ddZ dS)GlusterzGlusterFS storagegluster)storagevirtz /run/gluster) glusterfszglusterfs-core)z /etc/glusterdz/var/lib/glusterddumpFzenable glusterdump support)defaultdescc sd}fdd|D}|D]7}|d}||}d}|dkrGt|d}|d}t|d}Wdn1s>wY|dks"qdS)Nrcsg|] }|r|qS) path_isfile).0fselfr !s  z.Gluster.wait_for_statedump..r DUMP_END_TIME)listdir path_joinopen readlinesstringcount) rname_dirstatedumps_presentstatedump_entriesstatedump_file_spathretsfile last_liner rrwait_for_statedumps     zGluster.wait_for_statedumpcCst|dr8||js dSz t|jd}|t|jd|D]}t|q#WdSty7YdSwdS)Nr z/*.dump.[0-9]*z/glusterd_state_[0-9]*_[0-9]*) get_option path_exists statedump_dirglobextendosremoveOSError)r remove_filesnamer r rpostproc-s     zGluster.postproccCs|d|d|jddd|d|jddd|gd td |d s6|gd n|d |dr||jrjd}||ddkrct d| |j||jn|j dn |j d|j|d}|ddkr|dd}|||jddd}|ddkr|dD]3}|dsq|dd}|d|d|d|d|d |d!|d"|d#|d$|d%|g qdSdS)&Nz,/var/lib/glusterd/geo-replication/secret.pemz6/var/lib/glusterd/glusterfind/glusterfind_*_secret.pemzgluster peer statusgluster_peer_status)tagszgluster pool listzgluster volume statusgluster_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 glusterdstatusrrz6could not send SIGUSR1 to glusterfs/glusterd processesz4Unable to generate statedumps, no such directory: %szgluster get-stateoutputrzgluster volume infogluster_v_infoz Volume Name: zgluster volume get %s allz(gluster volume geo-replication %s statuszgluster volume heal %s infoz'gluster volume heal %s info split-brainz gluster volume status %s clientszgluster snapshot list %szgluster volume quota %s listz"gluster volume rebalance %s statuszgluster snapshot info %szgluster snapshot status %s)add_forbidden_pathadd_cmd_output add_copy_specr+r(r)r*exec_cmdtimesleepr'sosloginfowarningsplitcollect_cmd_output splitlines startswith)r statedump_cmdstate state_file volume_cmdlinevolnamer r rsetup:sh                z Gluster.setupN)__name__ __module__ __qualname__ short_desc plugin_nameprofilesr*packagesfilesr option_listr'r2rNr r r rrs  r) r?r-r+rsos.report.pluginsrrrrr r r rs