# patroni.dcs.exhibitor module

class patroni.dcs.exhibitor.Exhibitor(config: Dict[str, Any], mpp: AbstractMPP)

  Bases: `ZooKeeper`

  __init__(config: Dict[str, Any], mpp: AbstractMPP) → None

    Prepare DCS paths, MPP object, initial values for state information and processing dependencies.

    Parameters:

      - config – `dict`, reference to config section of selected DCS. i.e.: `zookeeper` for zookeeper, `etcd` for etcd, etc…

      - mpp – an object implementing `AbstractMPP` interface.

  _abc_impl = <_abc._abc_data object>
  _load_cluster(path: str, loader: Callable[[str], Cluster | Dict[int, Cluster]]) → Cluster | Dict[int, Cluster]

    Main abstract method that implements the loading of `Cluster` instance.

    Note

    Internally this method should call the loader method that will build `Cluster` object which represents current state and topology of the cluster in DCS. This method supposed to be called only by the `get_cluster()` method.

    Parameters:

      - path – the path in DCS where to load Cluster(s) from.

      - loader – one of `_postgresql_cluster_loader()` or `_mpp_cluster_loader()`.

    Raise:

      `DCSError` in case of communication problems with DCS. If the current node was running as a primary and exception raised, instance would be demoted.

class patroni.dcs.exhibitor.ExhibitorEnsembleProvider(hosts: List[str], port: int, uri_path: str = '/exhibitor/v1/cluster/list', poll_interval: int = 300)

  Bases: `object`

  TIMEOUT = 3.1
  __init__(hosts: List[str], port: int, uri_path: str = '/exhibitor/v1/cluster/list', poll_interval: int = 300) → None
  _query_exhibitors(exhibitors: List[str]) → Any
  poll() → bool
  property zookeeper_hosts: str