patroni.postgresql.misc module

class patroni.postgresql.misc.PostgresqlRole(*values)

Bases: str, Enum

Possible values of Postgresql.role.

DEMOTED = 'demoted'
MASTER = 'master'
PRIMARY = 'primary'
PROMOTED = 'promoted'
REPLICA = 'replica'
STANDBY_LEADER = 'standby_leader'
UNINITIALIZED = 'uninitialized'
class patroni.postgresql.misc.PostgresqlState(*values)

Bases: str, Enum

Possible values of Postgresql.state.

Numeric indexes should NEVER change once assigned to maintain backward compatibility with existing monitoring systems.

BOOTSTRAP_STARTING = 'starting after custom bootstrap'
CRASHED = 'crashed'
CREATING_REPLICA = 'creating replica'
CUSTOM_BOOTSTRAP = 'running custom bootstrap script'
CUSTOM_BOOTSTRAP_FAILED = 'custom bootstrap failed'
INITDB = 'initializing new cluster'
INITDB_FAILED = 'initdb failed'
RESTARTING = 'restarting'
RESTART_FAILED = 'restart failed'
RUNNING = 'running'
STARTING = 'starting'
START_FAILED = 'start failed'
STOPPED = 'stopped'
STOPPING = 'stopping'
STOP_FAILED = 'stop failed'
patroni.postgresql.misc.format_lsn(lsn: int, full: bool = False) str
patroni.postgresql.misc.fsync_dir(path: str) None
patroni.postgresql.misc.get_major_from_minor_version(version: int) int

Extract major PostgreSQL version from the provided full version.

Parameters:

version – integer representation of PostgreSQL full version (major + minor).

Returns:

integer representation of the PostgreSQL major version.

Example:
>>> get_major_from_minor_version(100012)
100000
>>> get_major_from_minor_version(90313)
90300
patroni.postgresql.misc.parse_history(data: str) Iterable[Tuple[int, int, str]]
patroni.postgresql.misc.parse_lsn(lsn: str) int
patroni.postgresql.misc.postgres_major_version_to_int(pg_version: str) int
>>> postgres_major_version_to_int('10')
100000
>>> postgres_major_version_to_int('9.6')
90600
patroni.postgresql.misc.postgres_version_to_int(pg_version: str) int

Convert the server_version to integer

>>> postgres_version_to_int('9.5.3')
90503
>>> postgres_version_to_int('9.3.13')
90313
>>> postgres_version_to_int('10.1')
100001
>>> postgres_version_to_int('10')
Traceback (most recent call last):
    ...
PostgresException: 'Invalid PostgreSQL version format: X.Y or X.Y.Z is accepted: 10'
>>> postgres_version_to_int('9.6')
Traceback (most recent call last):
    ...
PostgresException: 'Invalid PostgreSQL version format: X.Y or X.Y.Z is accepted: 9.6'
>>> postgres_version_to_int('a.b.c')
Traceback (most recent call last):
    ...
PostgresException: 'Invalid PostgreSQL version: a.b.c'