o
    G%@i	                     @   s.   d dl Z d dlmZmZ G dd deeZdS )    N)PluginIndependentPluginc                   @   s,   e Zd ZdZdZdZdZdd Zdd Zd	S )
ElasticzElasticSearch serviceelastic)services)elasticsearchc           	   
   C   s  d}d}z]t |ddE}|D ]:}td|}td|}|r6t| dkr6| d  }td	d
|}q|rHt| dkrH| d  }qW d   n1 sSw   Y  W ||fS W ||fS  ty } z| d| d|  W Y d}~||fS d}~ww )z Get hostname and port number 	localhost9200zUTF-8)encodingz(^network.host):(.*)z(^http.port):(.*)   z"|\' NzFailed to parse z: )	openresearchlengroupsstripsub	Exception	_log_info)	selfels_config_filehostnameportfreadlinenetwork_hostnetwork_porterr r    </usr/lib/python3/dist-packages/sos/report/plugins/elastic.pyget_hostname_port   s0    zElastic.get_hostname_portc                 C   s   |  d}| | | dr| d n| d | |\}}|d | }| d| dd| dd| d	d| d
d| dd| dd| dg d S )Nz$/etc/elasticsearch/elasticsearch.ymlall_logsz/var/log/elasticsearch/*z/var/log/elasticsearch/*.log:zcurl -X GET 'z/_cluster/settings?pretty'z/_cluster/health?pretty'z/_cluster/stats?pretty'z/_cat/nodes?v'z/_cat/indices'z/_cat/shards'z/_cat/aliases')	path_joinadd_copy_spec
get_optionr"   add_cmd_output)r   r   hostr   endpointr    r    r!   setup*   s$   










zElastic.setupN)	__name__
__module____qualname__
short_descplugin_nameprofilespackagesr"   r+   r    r    r    r!   r      s    r   )r   sos.report.pluginsr   r   r   r    r    r    r!   <module>   s   
