# patroni.request module

Facilities for handling communication with Patroni’s REST API.

class patroni.request.HTTPSConnectionPool(host: str, port: int | None = None, timeout: _TYPE_TIMEOUT | None = _TYPE_DEFAULT.token, maxsize: int = 1, block: bool = False, headers: Mapping[str, str] | None = None, retries: Retry | bool | int | None = None, _proxy: Url | None = None, _proxy_headers: Mapping[str, str] | None = None, key_file: str | None = None, cert_file: str | None = None, cert_reqs: int | str | None = None, key_password: str | None = None, ca_certs: str | None = None, ssl_version: int | str | None = None, ssl_minimum_version: ssl.TLSVersion | None = None, ssl_maximum_version: ssl.TLSVersion | None = None, assert_hostname: str | Literal[False] | None = None, assert_fingerprint: str | None = None, ca_cert_dir: str | None = None, **conn_kw: Any)

  Bases: `HTTPSConnectionPool`

  _validate_conn(*args: Any, **kwargs: Any) → None

    Override parent method to silence warnings about requests without certificate verification enabled.

class patroni.request.PatroniPoolManager(*args: Any, **kwargs: Any)

  Bases: `PoolManager`

  __init__(*args: Any, **kwargs: Any) → None

class patroni.request.PatroniRequest(config: Config | Dict[str, Any], insecure: bool | None = None)

  Bases: `object`

  Wrapper for performing requests to Patroni’s REST API.

  Prepares the request manager with the configured settings before performing the request.

  __init__(config: Config | Dict[str, Any], insecure: bool | None = None) → None

    Create a new `PatroniRequest` instance with given config.

    Parameters:

      - config – Patroni YAML configuration.

      - insecure –

        how to deal with SSL certs verification:

        - If `True` it will perform REST API requests without verifying SSL certs; or

        - If `False` it will perform REST API requests and verify SSL certs; or

        - If `None` it will behave according to the value of `ctl.insecure` configuration; or

        - If none of the above applies, then it falls back to `False`.

  _apply_pool_param(param: str, value: Any) → None

    Configure param as value in the request manager.

    Parameters:

      - param – name of the setting to be changed.

      - value – new value for param. If `None`, `0`, `False`, and similar values, then explicit param declaration is removed, in which case it takes its default value, if any.

  _apply_ssl_file_param(config: Config | Dict[str, Any], name: str) → str | None

    Apply a given SSL related param to the request manager.

    Parameters:

      - config – Patroni YAML configuration.

      - name –

        prefix of the Patroni SSL related setting name. Currently, supports these:

        - `cert`: gets translated to `certfile`

        - `key`: gets translated to `keyfile`

        Will attempt to fetch the requested key first from `ctl` section.

    Returns:

      value of `ctl.*name*file` if present, `None` otherwise.

  static _get_ctl_value(config: Config | Dict[str, Any], name: str, default: Any = None) → Any | None

    Get value of name setting from the `ctl` section of the config.

    Parameters:

      - config – Patroni YAML configuration.

      - name – name of the setting value to be retrieved.

    Returns:

      value of `ctl.*name*` if present, `None` otherwise.

  static _get_restapi_value(config: Config | Dict[str, Any], name: str) → Any | None

    Get value of name setting from the `restapi` section of the config.

    Parameters:

      - config – Patroni YAML configuration.

      - name – name of the setting value to be retrieved.

    Returns:

      value of `restapi -> *name*` if present, `None` otherwise.

  reload_config(config: Config | Dict[str, Any]) → None

    Apply config to request manager.

    Configure these HTTP headers for requests:

    > - `authorization`: based on Patroni’ CTL or REST API authentication config;

    > - `user-agent`: based on `patroni.utils.USER_AGENT`.

    Also configure SSL related settings for requests:

    > - `ca_certs` is configured if `ctl.cacert` or `restapi.cafile` is available;

    > - `cert`, `key` and `key_password` are configured if `ctl.certfile` is available.

    Parameters:

      config – Patroni YAML configuration.

  request(method: str, url: str, body: Any | None = None, **kwargs: Any) → HTTPResponse

    Perform an HTTP request.

    Parameters:

      - method – the HTTP method to be used, e.g. `GET`.

      - url – the URL to be requested.

      - body – anything to be used as the request body.

      - kwargs – keyword arguments to be passed to `urllib3.PoolManager.request()`.

    Returns:

      the response returned upon request.

patroni.request.get(url: str, verify: bool = True, **kwargs: Any) → HTTPResponse

  Perform an HTTP GET request.

  Note

  It uses `PatroniRequest` so all relevant configuration is applied before processing the request.

  Parameters:

    - url – full URL for this GET request.

    - verify – if it should verify SSL certificates when processing the request.

  Returns:

    the response returned from the request.