patroni.dcs.consul module

class patroni.dcs.consul.Consul(config: Dict[str, Any])

Bases: patroni.dcs.AbstractDCS

adjust_ttl() → None
attempt_to_acquire_leader(**kwargs)
cancel_initialization(**kwargs) → Any
create_session() → None
delete_cluster(**kwargs) → Any
delete_sync_state(**kwargs) → Any
deregister_service(**kwargs) → Any
initialize(**kwargs) → Any
static member(node: Dict[str, str]) → patroni.dcs.Member
refresh_session() → bool
register_service(**kwargs) → Any
reload_config(config: Union[Config, Dict[str, Any]]) → None

Load and set relevant values from configuration.

Sets loop_wait, ttl and retry_timeout properties.

Parameters:config – Loaded configuration information object or dictionary of key value pairs.
retry(method: Callable[[...], Any], *args, **kwargs) → Any
set_config_value(**kwargs) → Any
set_failover_value(**kwargs) → Any
set_history_value(**kwargs) → Any
set_retry_timeout(retry_timeout: int) → None

Set the new value for retry_timeout.

set_sync_state_value(**kwargs) → Any
set_ttl(ttl: int) → Optional[bool]

Set the new ttl value for DCS keys.

take_leader() → bool

Establish a new leader in DCS.

Note

This method should create leader key with value of _name and ttl of ttl.

Since it could be called only on initial cluster bootstrap it could create this key regardless, overwriting the key if necessary.

Returns:True if successfully committed to DCS.
touch_member(**kwargs) → Any
ttl

Get current ttl value.

update_service(**kwargs) → Any
watch(leader_version: Optional[int], timeout: float) → bool

Sleep if the current node is a leader, otherwise, watch for changes of leader key with a given timeout.

Parameters:
  • leader_version – version of a leader key.
  • timeout – timeout in seconds.
Returns:

if True this will reschedule the next run of the HA cycle.

class patroni.dcs.consul.ConsulClient(*args, **kwargs)

Bases: consul.base.Consul

connect(*args, **kwargs) → patroni.dcs.consul.HTTPClient
http_connect(*args, **kwargs) → patroni.dcs.consul.HTTPClient
reload_config(config: Dict[str, Any]) → None
exception patroni.dcs.consul.ConsulError(value: Any)

Bases: patroni.exceptions.DCSError

exception patroni.dcs.consul.ConsulInternalError

Bases: consul.base.ConsulException

An internal Consul server error occurred

class patroni.dcs.consul.HTTPClient(host: str = '127.0.0.1', port: int = 8500, token: Optional[str] = None, scheme: str = 'http', verify: bool = True, cert: Optional[str] = None, ca_cert: Optional[str] = None)

Bases: object

static response(response: urllib3.response.HTTPResponse) → patroni.dcs.consul.Response
set_read_timeout(timeout: float) → None
set_ttl(ttl: int) → bool
ttl
uri(path: str, params: Union[None, Dict[str, Any], List[Tuple[str, Any]], Tuple[Tuple[str, Any], ...]] = None) → str
exception patroni.dcs.consul.InvalidSession

Bases: consul.base.ConsulException

invalid session

exception patroni.dcs.consul.InvalidSessionTTL

Bases: consul.base.ConsulException

Session TTL is too small or too big

class patroni.dcs.consul.Response(code, headers, body, content)

Bases: tuple

body

Alias for field number 2

code

Alias for field number 0

content

Alias for field number 3

headers

Alias for field number 1

patroni.dcs.consul.catch_consul_errors(func: Callable[[...], Any]) → Callable[[...], Any]
patroni.dcs.consul.force_if_last_failed(func: Callable[[...], Any]) → Callable[[...], Any]
patroni.dcs.consul.service_name_from_scope_name(scope_name: str) → str

Translate scope name to service name which can be used in dns.

230 = 253 - len(‘replica.’) - len(‘.service.consul’)