o
    O6ufu  ã                   @   sj   d dl Z d dlmZmZmZmZmZ d dlmZ G dd„ deƒZ	G dd„ de	eƒZ
G dd	„ d	e	eeƒZdS )
é    N)ÚPluginÚUbuntuPluginÚDebianPluginÚRedHatPluginÚ	PluginOpt)Úfindc                   @   sŒ   e Zd ZdZdZdZdZdZedddd	�ed
de	dd�edde	de d�edde	dd�edde	dd�edde
dd�gZddd„Zdd„ ZdS )Ú
PostgreSQLzPostgreSQL RDBMSÚ
postgresql)Úservices)r	   zpostgresql-commonz' (password visible in process listings)Úpghomez/var/lib/pgsqlzpsql server home directory)ÚdefaultÚdescÚusernameÚpostgreszusername for pg_dump)r   Úval_typer   ÚpasswordÚ zpassword for pg_dumpÚdbnamez"database name to dump with pg_dumpÚdbhostz.database hostname/IP address (no unix sockets)Údbporti8  zdatabase server listening portú
pgdump.tarc              
   C   sÈ   |   d¡rb|   d¡sdtjv rU|   d¡r|   d¡tjd< |   d¡r<d|   d¡› d|   d¡› d|   d	¡› d
|   d¡› �}nd|   d¡› d
|   d¡› �}| j||ddd� dS | j d¡ |  d¡ dS dS )z- Extract PostgreSQL database into a tar file r   r   Ú
PGPASSWORDr   zpg_dump -U r   z -h z -p r   z	 -w -F t zpg_dump -C -U Tr   )Úsuggest_filenameÚbinaryÚ	sizelimitz-password must be supplied to dump a database.z3WARN: password must be supplied to dump a database.N)Ú
get_optionÚosÚenvironÚadd_cmd_outputÚsoslogÚwarningÚ	add_alert)ÚselfÚfilenameÚcmd© r%   ú?/usr/lib/python3/dist-packages/sos/report/plugins/postgresql.pyÚ
do_pg_dump0   s2   


ÿþýÿ
ÿÿÿèzPostgreSQL.do_pg_dumpc                 C   s"   |   ¡  |  d|  d¡› �¡ d S )Nzdu -sh r   )r'   r   r   ©r"   r%   r%   r&   ÚsetupN   s   zPostgreSQL.setupN)r   )Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesÚpackagesÚpassword_warn_textr   ÚstrÚintÚoption_listr'   r)   r%   r%   r%   r&   r      s6    ÿÿÿÿÿÿõ
r   c                       ó   e Zd Z‡ fdd„Z‡  ZS )ÚRedHatPostgreSQLc              	      sz   t ƒ  ¡  |  d¡}|g}|D ]+}td|ƒD ]}|  |¡ qtd|ƒD ]}|  |¡ q#dD ]}|  |  |d|¡¡ q-qd S )Nr   z*.logz*.conf)Ú
PG_VERSIONzpostmaster.optsÚdata)Úsuperr)   r   r   Úadd_copy_specÚ	path_join)r"   r   ÚdirsÚ_dirr#   Úfile©Ú	__class__r%   r&   r)   U   s   

ÿözRedHatPostgreSQL.setup©r*   r+   r,   r)   Ú__classcell__r%   r%   r?   r&   r6   S   ó    r6   c                       r5   )ÚDebianPostgreSQLc                    s   t ƒ  ¡  |  g d¢¡ d S )N)z/var/log/postgresql/*.logz/etc/postgresql/*/main/*.confz%/var/lib/postgresql/*/main/PG_VERSIONz*/var/lib/postgresql/*/main/postmaster.opts)r9   r)   r:   r(   r?   r%   r&   r)   k   s   
zDebianPostgreSQL.setuprA   r%   r%   r?   r&   rD   i   rC   rD   )r   Úsos.report.pluginsr   r   r   r   r   Úsos.utilitiesr   r   r6   rD   r%   r%   r%   r&   Ú<module>   s   =