o
    *bb                     @   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
e	g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rd|  dsdtjv rW|  dr|  dtjd< |  dr6d|  d|  d|  d|  df }nd|  d|  df }|d urL| ||}| j||d	d
d d S | jd | d d S 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      s6    
#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 ]7}|dd }| ||}|| | |r6| 	d|  | 
|ddrM|| jv rM| j|d| d	 q|D ]+}td
|D ]}| | qWtd|D ]}| | qddD ]}| | |d| qnqPd 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   dirsZpkgr   Z_dirr   f	__class__r   r   r#   a   s.   


zRedHatPostgreSQL.setup)r$   r%   r&   r'   r#   __classcell__r   r   r4   r   r*   X   s    r*   c                       s   e Zd Z fddZ  ZS )DebianPostgreSQLc                    s    t 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)r-   r7   r#   r1   r"   r4   r   r   r#      s   zDebianPostgreSQL.setup)r$   r%   r&   r#   r6   r   r   r4   r   r7      s    r7   )r   Zsos.report.pluginsr   r   r   r   r   Zsos.utilitiesr   r   r*   r7   r   r   r   r   <module>   s   B*