U
    -_gu                     @   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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 port
pgdump.tarc              
   C   s   |  dr|  dsdtjkr|  dr8|  dtjd< |  drxd|  d d|  d d|  d	 d
|  d }nd|  d d
|  d }| j||ddd n| jd | d dS )z- Extract PostgreSQL database into a tar file r   r   Z
PGPASSWORDr   zpg_dump -U r   z -h z -p r   z	 -w -F t zpg_dump -C -U Tr   )Zsuggest_filenamebinaryZ	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_outputZsoslogZwarningZ	add_alert)selffilenamecmd r   ?/usr/lib/python3/dist-packages/sos/report/plugins/postgresql.py
do_pg_dump0   s"    


6 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__Z
short_descZplugin_nameZprofilesZpackagesZpassword_warn_textr   strintZoption_listr   r!   r   r   r   r   r      s4   
r   c                       s   e Zd Z fddZ  ZS )RedHatPostgreSQLc              	      sz   t    | d}|g}|D ]V}td|D ]}| | q,td|D ]}| | qFdD ]}| | |d| qZqd S )Nr   z*.logz*.conf)Z
PG_VERSIONzpostmaster.optsdata)superr!   r   r   add_copy_specZ	path_join)r   r   dirsZ_dirr   file	__class__r   r   r!   U   s    

zRedHatPostgreSQL.setupr"   r#   r$   r!   __classcell__r   r   r-   r   r'   S   s   r'   c                       s   e Zd Z fddZ  ZS )DebianPostgreSQLc                    s    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)   r!   r*   r    r-   r   r   r!   k   s    
zDebianPostgreSQL.setupr/   r   r   r-   r   r1   i   s   r1   )r   Zsos.report.pluginsr   r   r   r   r   Zsos.utilitiesr   r   r'   r1   r   r   r   r   <module>   s
   =