3 ܓi7 @sddlZddlZddlmZmZdZdZededededed ed ed ed d ZeddZdZ dZ dZ GdddeeZ dS)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_CONFPOSTGRESQL_LOGS PATRONI_CONF PATRONI_LOGSPGBACKREST_CONFPGBACKREST_LOGSPGBOUNCER_CONFPGBOUNCER_LOGSrz /patroni.yamlZ snap_daemonzcharmed-postgresql.psqlzcharmed-postgresql.patronictlc@sLeZdZdZdZdZeedddZeedddZ d d Z d d Z d S)CharmedPostgreSQLzCharmed PostgreSQLZcharmed_postgresqlcharmed-postgresql)returncCs dtS)Nz--config-file )PATRONI_CONFIG_FILE)selfr(/usr/lib/python3.6/charmed_postgresql.pypatronictl_args)sz!CharmedPostgreSQL.patronictl_argscCsd|jd|jd|jdS)Nz-U z -h z -p z -d postgres -P pager=off)postgresql_usernamepostgresql_hostpostgresql_port)rrrr psql_args-szCharmedPostgreSQL.psql_argscCs |jtddtddg|jtddtdtddtdtd td tdtd g|jd |jd ddyvttdd}tj|}WdQRX|d|_ |d}|dj d}|\|_ |_ |d}|d}|d|_ |d|_WnFttjttttfk rH}z|jdtd|dSd}~XnX|jtd|jd|j dtd|jtd|jd |j d!td|jtd|jd"|j d#td|jtjd$<|jtd|jd%d&td|jtd|jd'd(td|jtd|jd)d*tddS)+Nrz/*.pemr rz/*.conf*rz/*.y*mlrrr r zsnap.charmed-postgresql.*zsnap info charmed-postgresqlz snap-info)suggest_filenamezutf-8)encodingZscope postgresqlZconnect_address:authentication superuserZusernameZpasswordzVCan not run additional commands due to an error on opening or parsing the config file z:  z topology zpatroni-topology)rZrunasz history zpatroni-historyz show-config zpatroni-dcs-config PGPASSWORDz -c '\l+'zpostgresql-databasesz -c '\duS+'zpostgresql-usersz -c '\dtS+'zpostgresql-tables)Zadd_forbidden_pathPATHSZ add_copy_specZ add_journalZadd_cmd_outputopenryamlZ safe_loadZpatroni_cluster_namesplitrrrZpostgresql_passwordOSErrorZ YAMLError TypeError ValueErrorKeyErrorAttributeErrorZ _log_warn PATRONICTLrRUNASosenvironPSQLr)rfZpatroni_configrZ host_portrrerrorrrrsetup4sp         zCharmedPostgreSQL.setupcCs^dtjkrtjd=|jtdddd|jtdddd |jtd d d ddS) Nrrz/*z(password: )"?.*"?z \1"*********"rz/pgbackrest.confz(.*s3-key.*=).*z \1*********r z/pgbouncer/userlist.txtz (".*" )".*")r+r,Zdo_path_regex_subr )rrrrpostprocs    zCharmedPostgreSQL.postprocN)r ) __name__ __module__ __qualname__Z short_descZ plugin_nameZpackagespropertystrrrr0r1rrrrr #snr ) r+r"Zsos.report.pluginsrrZSNAP_COMMON_PATHZSNAP_CURRENT_PATHr rr*r-r)r rrrr s"