patroni.postgresql.config module¶
-
class
patroni.postgresql.config.
ConfigHandler
(postgresql: Postgresql, config: Dict[str, Any])¶ Bases:
object
-
CMDLINE_OPTIONS
= <CaseInsensitiveDict{'listen_addresses': (None, <function _false_validator>, 90100), 'port': (None, <function _false_validator>, 90100), 'cluster_name': (None, <function _false_validator>, 90500), 'wal_level': ('hot_standby', <patroni.validator.EnumValidator object>, 90100), 'hot_standby': ('on', <function _bool_is_true_validator>, 90100), 'max_connections': (100, <patroni.validator.IntValidator object>, 90100), 'max_wal_senders': (10, <patroni.validator.IntValidator object>, 90100), 'wal_keep_segments': (8, <patroni.validator.IntValidator object>, 90100), 'wal_keep_size': ('128MB', <patroni.validator.IntValidator object>, 130000), 'max_prepared_transactions': (0, <patroni.validator.IntValidator object>, 90100), 'max_locks_per_transaction': (64, <patroni.validator.IntValidator object>, 90100), 'track_commit_timestamp': ('off', <function _bool_validator>, 90500), 'max_replication_slots': (10, <patroni.validator.IntValidator object>, 90400), 'max_worker_processes': (8, <patroni.validator.IntValidator object>, 90400), 'wal_log_hints': ('on', <function _bool_is_true_validator>, 90400)} at 7fbd66be3d90>¶
-
append_pg_hba
(config: List[str]) → bool¶
-
build_recovery_params
(member: Union[patroni.dcs.Leader, patroni.dcs.Member, None]) → patroni.collections.CaseInsensitiveDict¶
-
check_directories
() → None¶
-
check_recovery_conf
(member: Union[patroni.dcs.Leader, patroni.dcs.Member, None]) → Tuple[bool, bool]¶ Returns a tuple. The first boolean element indicates that recovery params don’t match and the second is set to True if the restart is required in order to apply new values
-
config_dir
¶
-
config_writer
(filename: str) → Iterator[patroni.postgresql.config.ConfigWriter]¶ Create
ConfigWriter
object and set permissions on a filename.Parameters: filename – path to a config file. Yields: ConfigWriter
object.
-
effective_configuration
¶ It might happen that the current value of one (or more) below parameters stored in the controldata is higher than the value stored in the global cluster configuration.
Example: max_connections in global configuration is 100, but in controldata Current max_connections setting: 200. If we try to start postgres with max_connections=100, it will immediately exit. As a workaround we will start it with the values from controldata and set pending_restart to true as an indicator that current values of parameters are not matching expectations.
-
format_dsn
(params: Dict[str, Any], include_dbname: bool = False) → str¶
-
get
(key: str, default: Optional[Any] = None) → Optional[Any]¶
-
get_server_parameters
(config: Dict[str, Any]) → patroni.collections.CaseInsensitiveDict¶
-
hba_file
¶
-
ident_file
¶
-
local_connect_kwargs
¶
-
pg_hba_conf
¶
-
postgresql_conf
¶
-
primary_conninfo_params
(member: Union[patroni.dcs.Leader, patroni.dcs.Member, None]) → Optional[Dict[str, Any]]¶
-
recovery_conf_exists
() → bool¶
-
reload_config
(config: Dict[str, Any], sighup: bool = False) → None¶
-
remove_recovery_conf
() → None¶
-
replace_pg_hba
() → Optional[bool]¶ Replace pg_hba.conf content in the PGDATA if hba_file is not defined in the postgresql.parameters and pg_hba is defined in postgresql configuration section.
Returns: True if pg_hba.conf was rewritten.
-
replace_pg_ident
() → Optional[bool]¶ Replace pg_ident.conf content in the PGDATA if ident_file is not defined in the postgresql.parameters and pg_ident is defined in the postgresql section.
Returns: True if pg_ident.conf was rewritten.
-
replication
¶
-
resolve_connection_addresses
() → None¶
-
restore_command
() → Optional[str]¶
-
restore_configuration_files
() → None¶ restore a previously saved postgresql.conf
-
rewind_credentials
¶
-
save_configuration_files
(check_custom_bootstrap: bool = False) → bool¶ copy postgresql.conf to postgresql.conf.backup to be able to retrieve configuration files - originally stored as symlinks, those are normally skipped by pg_basebackup - in case of WAL-E basebackup (see http://comments.gmane.org/gmane.comp.db.postgresql.wal-e/239)
-
set_file_permissions
(filename: str) → None¶ Set permissions of file filename according to the expected permissions if it resides under PGDATA.
Note
Do nothing if the file is not under PGDATA.
Parameters: filename – path to a file which permissions might need to be adjusted.
-
set_synchronous_standby_names
(value: Optional[str]) → Optional[bool]¶ Updates synchronous_standby_names and reloads if necessary. :returns: True if value was updated.
-
setup_server_parameters
() → None¶
-
superuser
¶
-
triggerfile_good_name
¶
-
try_to_create_dir
(d: str, msg: str) → None¶
-
write_pgpass
(record: Dict[str, Any]) → Dict[str, str]¶
-
write_postgresql_conf
(configuration: Optional[patroni.collections.CaseInsensitiveDict] = None) → None¶
-
write_recovery_conf
(recovery_params: patroni.collections.CaseInsensitiveDict) → None¶
-
-
class
patroni.postgresql.config.
ConfigWriter
(filename: str)¶ Bases:
object
-
static
escape
(value: Any) → str¶
-
write_param
(param: str, value: Any) → None¶
-
writeline
(line: str) → None¶
-
writelines
(lines: List[str]) → None¶
-
static
-
patroni.postgresql.config.
conninfo_parse
(dsn: str) → Optional[Dict[str, str]]¶
-
patroni.postgresql.config.
conninfo_uri_parse
(dsn: str) → Dict[str, str]¶
-
patroni.postgresql.config.
mtime
(filename: str) → Optional[float]¶
-
patroni.postgresql.config.
parse_dsn
(value: str) → Optional[Dict[str, str]]¶ Very simple equivalent of psycopg2.extensions.parse_dsn introduced in 2.7.0. We are not using psycopg2 function in order to remain compatible with 2.5.4+. There is one minor difference though, this function removes dbname from the result and sets the sslmode, ‘gssencmode’, and channel_binding to prefer if it is not present in the connection string. This is necessary to simplify comparison of the old and the new values.
>>> r = parse_dsn('postgresql://u%2Fse:pass@:%2f123,[::1]/db%2Fsdf?application_name=mya%2Fpp&ssl=true') >>> r == {'application_name': 'mya/pp', 'host': ',::1', 'sslmode': 'require', 'password': 'pass', 'port': '/123,', 'user': 'u/se', 'gssencmode': 'prefer', 'channel_binding': 'prefer'} True >>> r = parse_dsn(" host = 'host' dbname = db\\ name requiressl=1 ") >>> r == {'host': 'host', 'sslmode': 'require', 'gssencmode': 'prefer', 'channel_binding': 'prefer'} True >>> parse_dsn('requiressl = 0\\') == {'sslmode': 'prefer', 'gssencmode': 'prefer', 'channel_binding': 'prefer'} True >>> parse_dsn("host=a foo = '") is None True >>> parse_dsn("host=a foo = ") is None True >>> parse_dsn("1") is None True
-
patroni.postgresql.config.
read_param_value
(value: str) → Union[Tuple[None, None], Tuple[str, int]]¶
-
patroni.postgresql.config.
read_recovery_param_value
(value: str) → Optional[str]¶ >>> read_recovery_param_value('') is None True >>> read_recovery_param_value("'") is None True >>> read_recovery_param_value("''a") is None True >>> read_recovery_param_value('a b') is None True >>> read_recovery_param_value("'''") is None True >>> read_recovery_param_value("'\\") is None True >>> read_recovery_param_value("'a' s#") is None True >>> read_recovery_param_value("'\\'''' #a") "''" >>> read_recovery_param_value('asd') 'asd'
-
patroni.postgresql.config.
strip_comment
(value: str) → str¶