U
    i©¹d[  ã                   @   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Ú	SCLPluginÚ	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ÚusernameZpostgreszusername for pg_dump)r   Z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 portNú
pgdump.tarc                 C   sÆ   |   d¡rÂ|   d¡sdtjkr¬|   d¡r8|   d¡tjd< |   d¡rld|   d¡|   d¡|   d¡|   d¡f }nd|   d¡|   d¡f }|d k	r˜|  ||¡}| j||d	d
d n| j d¡ |  d¡ d S )Nr   r   Z
PGPASSWORDr   z$pg_dump -U %s -h %s -p %s -w -F t %sr   r   zpg_dump -C -U %s -w -F t %s Tr   )Zsuggest_filenameÚbinaryZ	sizelimitz-password must be supplied to dump a database.z3WARN: password must be supplied to dump a database.)Ú
get_optionÚosÚenvironZconvert_cmd_sclÚadd_cmd_outputZsoslogZwarningZ	add_alert)ÚselfÚsclÚfilenameÚcmd© r   ú?/usr/lib/python3/dist-packages/sos/report/plugins/postgresql.pyÚ
do_pg_dump0   s6    


üþ ÿÿÿzPostgreSQL.do_pg_dumpc                 C   s    |   ¡  |  d|  d¡ ¡ d S )Nú	du -sh %sr   )r    r   r   ©r   r   r   r   ÚsetupS   s    zPostgreSQL.setup)Nr   )Ú__name__Ú
__module__Ú__qualname__Z
short_descZplugin_nameZprofilesÚpackagesZpassword_warn_textr   ÚstrÚintZoption_listr    r#   r   r   r   r   r      s4   ÿÿÿÿÿÿõ
#r   c                       s    e Zd ZdZ‡ fdd„Z‡  ZS )ÚRedHatPostgreSQL)r	   z!rh-postgresql95-postgresql-serverz!rh-postgresql10-postgresql-serverz!rh-postgresql12-postgresql-serverc              	      sü   t t| ƒ ¡  |  d¡}|g}| jdd … D ]n}| d¡d }|  ||¡}| |¡ |  |¡rl|  	d| ¡ |  
| dd¡¡r,|| jkr,| j|d| d	 q,|D ]V}td
|ƒD ]}|  |¡ q®td|ƒD ]}|  |¡ qÈdD ]}|  |  |d|¡¡ qÜq d S )Nr   é   z-postgresql-r   r!   z-serverr   zpgdump-scl-%s.tar)r   r   z*.logz*.conf)Z
PG_VERSIONzpostmaster.optsÚdata)Úsuperr*   r#   r   r'   ÚsplitZconvert_copyspec_sclÚappendZ
path_isdirr   Zis_service_runningÚreplaceZscls_matchedr    r   Úadd_copy_specZ	path_join)r   r   ÚdirsÚpkgr   Z_dirr   Úf©Ú	__class__r   r   r#   a   s(    


ÿzRedHatPostgreSQL.setup)r$   r%   r&   r'   r#   Ú__classcell__r   r   r5   r   r*   X   s   r*   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚDebianPostgreSQLc                    s$   t t| ƒ ¡  |  ddddg¡ d S )Nz/var/log/postgresql/*.logz/etc/postgresql/*/main/*.confz%/var/lib/postgresql/*/main/PG_VERSIONz*/var/lib/postgresql/*/main/postmaster.opts)r-   r8   r#   r1   r"   r5   r   r   r#   „   s    üzDebianPostgreSQL.setup)r$   r%   r&   r#   r7   r   r   r5   r   r8   ‚   s   r8   )r   Zsos.report.pluginsr   r   r   r   r   Zsos.utilitiesr   r   r*   r8   r   r   r   r   Ú<module>   s
   B*