o
    O6uf%  ã                	   @   sŽ   d dl Z d dlZd dlmZmZ dZdZed ed ed ed ed	 ed
 ed ed dœZed › d�ZdZ	dZ
dZG dd„ deeƒZdS )é    N)ÚPluginÚUbuntuPluginz#/var/snap/charmed-postgresql/commonz$/var/snap/charmed-postgresql/currentz/var/lib/postgresqlz/var/log/postgresqlz/etc/patroniz/var/log/patroniz/etc/pgbackrestz/var/log/pgbackrestz/etc/pgbouncerz/var/log/pgbouncer)ÚPOSTGRESQL_CONFÚPOSTGRESQL_LOGSÚPATRONI_CONFÚPATRONI_LOGSÚPGBACKREST_CONFÚPGBACKREST_LOGSÚPGBOUNCER_CONFÚPGBOUNCER_LOGSr   z/patroni.yamlÚsnap_daemonzcharmed-postgresql.psqlzcharmed-postgresql.patronictlc                   @   sL   e Zd ZdZdZdZedefdd„ƒZedefdd„ƒZ	d	d
„ Z
dd„ ZdS )ÚCharmedPostgreSQLzCharmed PostgreSQLÚcharmed_postgresql)zcharmed-postgresqlÚreturnc                 C   s
   dt › �S )Nz--config-file )ÚPATRONI_CONFIG_FILE©Úself© r   úG/usr/lib/python3/dist-packages/sos/report/plugins/charmed_postgresql.pyÚpatronictl_args)   s   
z!CharmedPostgreSQL.patronictl_argsc                 C   s   d| j › d| j› d| j› d�S )Nz-U z -h z -p z -d postgres -P pager=off)Úpostgresql_usernameÚpostgresql_hostÚpostgresql_portr   r   r   r   Ú	psql_args-   s
   
ÿþzCharmedPostgreSQL.psql_argsc                 C   s4  |   td › d�td › d�g¡ |  td › d�td › td › d�td › td	 › td
 › td › td › g¡ |  d¡ | jddd� zCttƒ�}t |¡}W d   ƒ n1 s[w   Y  |d | _	|d }|d  
d¡}|\| _| _|d }|d }|d | _|d | _W n% ttjttttfy® } z|  dt› d|› �¡ W Y d }~d S d }~ww | jt› d| j› d| j	› �dtd� | jt› d| j› d| j	› �dtd� | jt› d| j› d | j	› �d!td� | jtjd"< | jt› d| j› d#�d$td� | jt› d| j› d%�d&td� | jt› d| j› d'�d(td� d S ))Nr   z/*.pemr
   r   z/*.conf*r   z/*.y*mlr   r   r	   r   zsnap.charmed-postgresql.*zsnap info charmed-postgresqlz	snap-info)Úsuggest_filenameÚscopeÚ
postgresqlÚconnect_addressú:ÚauthenticationÚ	superuserÚusernameÚpasswordzVCan not run additional commands due to an error on opening or parsing the config file z: ú z
 topology zpatroni-topology)r   Úrunasz	 history zpatroni-historyz show-config zpatroni-dcs-configÚ
PGPASSWORDz	 -c '\l+'zpostgresql-databasesz -c '\duS+'zpostgresql-usersz -c '\dtS+'zpostgresql-tables)Úadd_forbidden_pathÚPATHSÚadd_copy_specÚadd_journalÚadd_cmd_outputÚopenr   ÚyamlÚ	safe_loadÚpatroni_cluster_nameÚsplitr   r   r   Úpostgresql_passwordÚOSErrorÚ	YAMLErrorÚ	TypeErrorÚ
ValueErrorÚKeyErrorÚAttributeErrorÚ	_log_warnÚ
PATRONICTLr   ÚRUNASÚosÚenvironÚPSQLr   )r   ÚfÚpatroni_configr   Ú	host_portr   r    Úerrorr   r   r   Úsetup4   sž   þø
þ
ÿ


ÿþý€ú
ÿü	ÿü	ÿüü	ü	
üzCharmedPostgreSQL.setupc                 C   s^   dt jv r	t jd= |  td › d�dd¡ |  td › d�dd	¡ |  td
 › d�dd¡ d S )Nr%   r   z/*z(password: )"?.*"?z\1"*********"r   z/pgbackrest.confz(.*s3-key.*=).*z\1*********r
   z/pgbouncer/userlist.txtz(".*" )".*")r:   r;   Údo_path_regex_subr'   r   r   r   r   Úpostproc¢   s"   
ýýýzCharmedPostgreSQL.postprocN)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚpackagesÚpropertyÚstrr   r   rA   rC   r   r   r   r   r   #   s    nr   )r:   r,   Úsos.report.pluginsr   r   ÚSNAP_COMMON_PATHÚSNAP_CURRENT_PATHr'   r   r9   r<   r8   r   r   r   r   r   Ú<module>   s&   ø