The etcd3gw.client Module

class etcd3gw.client.Etcd3Client(host: str = 'localhost', port: int = 2379, protocol: str = 'http', ca_cert: str | None = None, cert_key: str | None = None, cert_cert: str | None = None, timeout: float | None = None, api_path: str | None = None, session: Session | None = None)[source]

Bases: object

property api_path: str
property base_url: str
create(key: str | bytes, value: str | bytes, lease: Lease | None = None) bool[source]

Atomically create the given key only if the key doesn’t exist.

This verifies that the create_revision of a key equales to 0, then creates the key with the value. This operation takes place in a transaction.

Parameters:
  • key – key in etcd to create

  • value (bytes or string) – value of the key

  • lease – lease to connect with, optional

Returns:

status of transaction, True if the create was successful, False otherwise

Return type:

bool

delete(key: str | bytes, **kwargs: Any) bool[source]

DeleteRange deletes the given range from the key-value store.

A delete request increments the revision of the key-value store and generates a delete event in the event history for every deleted key.

Parameters:
  • key

  • kwargs

Returns:

delete_prefix(key_prefix: str | bytes) bool[source]

Delete a range of keys with a prefix in etcd.

get(key: str | bytes, metadata: bool = False, sort_order: str | None = None, sort_target: str | None = None, **kwargs: Any) list[Any][source]

Range gets the keys in the range from the key-value store.

Parameters:
  • key

  • metadata

  • sort_order – ‘ascend’ or ‘descend’ or None

  • sort_target – ‘key’ or ‘version’ or ‘create’ or ‘mod’ or ‘value’

  • kwargs

Returns:

get_all(sort_order: str | None = None, sort_target: str = 'key') list[Any][source]

Get all keys currently stored in etcd.

Returns:

sequence of (value, metadata) tuples

get_prefix(key_prefix: str | bytes, sort_order: str | None = None, sort_target: str | None = None) list[Any][source]

Get a range of keys with a prefix.

Parameters:
  • sort_order – ‘ascend’ or ‘descend’ or None

  • key_prefix – first key in range

Returns:

sequence of (value, metadata) tuples

get_url(path: str) str[source]

Construct a full url to the v3 API given a specific path

Parameters:

path

Returns:

url

lease(ttl: int = 30) Lease[source]

Create a Lease object given a timeout

Parameters:

ttl – timeout

Returns:

Lease object

lock(id: str | None = None, ttl: int = 30) Lock[source]

Create a Lock object given an ID and timeout

Parameters:
  • id – ID for the lock, creates a new uuid if not provided

  • ttl – timeout

Returns:

Lock object

members() list[Any][source]

Lists all the members in the cluster.

Returns:

json response

post(*args: Any, **kwargs: Any) Any[source]

helper method for HTTP POST

Parameters:
  • args

  • kwargs

Returns:

json response

put(key: str | bytes, value: str | bytes, lease: Lease | None = None) bool[source]

Put puts the given key into the key-value store.

A put request increments the revision of the key-value store and generates one event in the event history.

Parameters:
  • key

  • value

  • lease

Returns:

boolean

replace(key: str | bytes, initial_value: str | bytes, new_value: str | bytes) bool[source]

Atomically replace the value of a key with a new value.

This compares the current value of a key, then replaces it with a new value if it is equal to a specified value. This operation takes place in a transaction.

Parameters:
  • key – key in etcd to replace

  • initial_value (bytes or string) – old value to replace

  • new_value (bytes or string) – new value of the key

Returns:

status of transaction, True if the replace was successful, False otherwise

Return type:

bool

status() Any[source]

Status gets the status of the etcd cluster member.

Returns:

json response

transaction(txn: dict[str, Any]) Any[source]

Txn processes multiple requests in a single transaction.

A txn request increments the revision of the key-value store and generates events with the same revision for every completed request. It is not allowed to modify the same key several times within one txn.

Parameters:

txn

Returns:

watch(key: str | bytes, **kwargs: Any) tuple[Iterator[dict[str, Any]], Callable[[], None]][source]

Watch a key.

Parameters:

key – key to watch

Returns:

tuple of events_iterator and cancel. Use events_iterator to get the events of key changes and cancel to cancel the watch request

watch_once(key: str | bytes, timeout: float | None = None, **kwargs: Any) Any[source]

Watch a key and stops after the first event.

Parameters:
  • key – key to watch

  • timeout – (optional) timeout in seconds.

Returns:

event

watch_prefix(key_prefix: str | bytes, **kwargs: Any) tuple[Iterator[Any], Callable[[], None]][source]

The same as watch, but watches a range of keys with a prefix.

watch_prefix_once(key_prefix: str | bytes, timeout: float | None = None, **kwargs: Any) Any[source]

Watches a range of keys with a prefix, similar to watch_once

etcd3gw.client.client(host: str = 'localhost', port: int = 2379, ca_cert: str | None = None, cert_key: str | None = None, cert_cert: str | None = None, timeout: float | None = None, protocol: str = 'http', api_path: str | None = None, session: Session | None = None) Etcd3Client[source]

Return an instance of an Etcd3Client.