o
    id[                     @   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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 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   
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   )suggest_filenamebinary	sizelimitz-password must be supplied to dump a database.z3WARN: password must be supplied to dump a database.)
get_optionosenvironconvert_cmd_scladd_cmd_outputsoslogwarning	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__
short_descplugin_nameprofilespackagespassword_warn_textr   strint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)
PG_VERSIONzpostmaster.optsdata)superr8   r,   r   r3   splitconvert_copyspec_sclappend
path_isdirr   is_service_runningreplacescls_matchedr)   r   add_copy_spec	path_join)r#   r   dirspkgr$   _dirr%   f	__class__r'   r(   r,   a   s,   



zRedHatPostgreSQL.setup)r-   r.   r/   r3   r,   __classcell__r'   r'   rJ   r(   r8   X   s    r8   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<   rM   r,   rD   r+   rJ   r'   r(   r,      s   zDebianPostgreSQL.setup)r-   r.   r/   r,   rL   r'   r'   rJ   r(   rM      s    rM   )r   sos.report.pluginsr   r   r   r   r   sos.utilitiesr   r   r8   rM   r'   r'   r'   r(   <module>   s   B*