
    -_g7              	           d dl Z d dlZd dlmZmZ dZdZedz   edz   edz   edz   ed	z   ed
z   edz   edz   dZed    dZdZ	dZ
dZ G d dee      Zy)    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                   P    e Zd ZdZdZdZedefd       Zedefd       Z	d Z
d Zy	)
CharmedPostgreSQLzCharmed PostgreSQLcharmed_postgresql)zcharmed-postgresqlreturnc                     dt          S )Nz--config-file )PATRONI_CONFIG_FILEselfs    G/usr/lib/python3/dist-packages/sos/report/plugins/charmed_postgresql.pypatronictl_argsz!CharmedPostgreSQL.patronictl_args)   s     3455    c                 V    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   s    r   	psql_argszCharmedPostgreSQL.psql_args-   sA    d../ 0**+ ,**+ ,,, 	-r   c                    | j                  t        d    dt        d    dg       | j                  t        d    dt        d    t        d    dt        d    t        d	    t        d
    t        d    t        d    g       | j                  d       | j	                  dd       	 t        t        d      5 }t        j                  |      }d d d        d   | _	        |d   }|d   j                  d      }|\  | _        | _        |d   }|d   }|d   | _        |d   | _        | j	                  t,         d| j.                   d| j                   dt0               | j	                  t,         d| j.                   d | j                   d!t0               | j	                  t,         d| j.                   d"| j                   d#t0               | j                  t2        j4                  d$<   | j	                  t6         d| j8                   d%d&t0               | j	                  t6         d| j8                   d'd(t0               | j	                  t6         d| j8                   d)d*t0               y # 1 sw Y   xY w# t        t        j                   t"        t$        t&        t(        f$ r%}| j+                  dt         d|        Y d }~y d }~ww xY w)+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_filenamezutf-8)encoding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&   errors           r   setupzCharmedPostgreSQL.setup4   sO    	^$%V,%&'v.!
 	 	&'(1&'(^$%W-^$%&'(&'(%&'%&'	
 		 	45 	*( 	 	
	)G< 3!%!23(6w(?D%'5J"#45;;C@I9B6D $"6'(89N&{3I'0'<D$'0'<D$ 	|1T112 32235/	 	 	
 	|1T112 31124.	 	 	
 	|1T112 3 55681	 	 	
 $(#;#;

<  	vQt~~& ' 3	 	 	
 	vQt~~& ' /	 	 	
 	vQt~~& ' 0	 	 	
I3 3 Hn6 	NN M12"#W& ' 	s1   *J  ;I3AJ  3I=8J   -K-KKc                     dt         j                  v rt         j                  d= | j                  t        d    ddd       | j                  t        d    ddd	       | j                  t        d
    ddd       y )Nr+   r   z/*z(password: )"?.*"?z\1"*********"r	   z/pgbackrest.confz(.*s3-key.*=).*z\1*********r   z/pgbouncer/userlist.txtz(".*" )".*")r@   rA   do_path_regex_subr-   r   s    r   postproczCharmedPostgreSQL.postproc   s     2::%

<( 	^$%R(!	
 	&'((89	
 	%&''>?	
r   N)__name__
__module____qualname__
short_descplugin_namepackagespropertystrr   r   rG   rJ    r   r   r   r   #   sQ    %J&K&H6 6 6 -3 - -l
\
r   r   )r@   r2   sos.report.pluginsr   r   SNAP_COMMON_PATHSNAP_CURRENT_PATHr-   r   r?   rB   r>   r   rS   r   r   <module>rW      s    
  38 :  (*??'*??%6$'99(+<<'*??'*::&)==		 ~./}=  ,
\
 \
r   