Skip to main content

Clusters

This article refers to SDK version v0.6.0. The current SDK version is N/A.

A cluster groups nodes so they can be configured and deployed to together, without repeating the same call once per node. Clusters have their own global secrets and configuration, independent of any single node's. See the Overview for narrative examples, and Clusters for the equivalent Panel actions.

Concept

Cluster. A group of nodes an operator manages and deploys to as one unit in Barbara Panel, giving High Availability instead of a single point of failure.

Learn more

ClustersResource​

ClustersResource(client: BarbaraClient)

list​

list(*, search: Optional[str] = None, size: Optional[int] = None) -> List[Cluster]

Returns a single page — use paginate() for total or to page through more clusters than the server's default page size.

paginate​

paginate(*, search: Optional[str] = None, size: int = 50, from_: int = 0) -> Page

get​

get(cluster_id: str) -> Cluster

resolve​

resolve(name: str) -> Cluster

Look up a cluster by its name (not its internal _id).

update​

update(cluster_id: str, name: str) -> None

No documented response body — call get() afterwards if you need it.

delete​

delete(cluster_id: str) -> None

create​

create(
name: str,
primary_node: Dict[str, Any],
*,
secondary_nodes: Optional[List[Dict[str, Any]]] = None,
enable_cluster_volumes: bool = False,
virtual_ip_enabled: bool = False,
id_vrr: Optional[int] = None,
password: Optional[str] = None,
virtual_ip: Optional[str] = None,
sync_time: Optional[float] = None,
multicast: bool = False,
default_addr_pool: Optional[List[str]] = None,
subnet_size: Optional[int] = None,
) -> None

primary_node and each item of secondary_nodes are the raw per-node VRRP/swarm config dicts the API expects (nodeId, labels as base64 JSON, advertiseAddr, ...) — this method doesn't reshape them, since cluster networking config is inherently node-specific. password (VRRP password) is base64-encoded internally.

join_node​

join_node(
cluster_id: str,
node_id: str,
*,
labels: Dict[str, str],
restrict_swarm_traffic_to_interface: bool,
advertise_addr: str,
iface: Optional[str] = None,
unicast_ip: Optional[str] = None,
swarm_iface: Optional[str] = None,
priority: Optional[float] = None,
track_interfaces: Optional[List[str]] = None,
) -> None

labels is a plain {key: value} mapping — JSON+base64-encoded internally, matching the convention documented on the endpoint.

leave_node​

leave_node(cluster_id: str, node_id: str, *, force: bool = False) -> None

pause_node​

pause_node(cluster_id: str, node_id: str) -> None

drain_node​

drain_node(cluster_id: str, node_id: str) -> None

set_node_active​

set_node_active(cluster_id: str, node_id: str) -> None

update_node_config​

update_node_config(cluster_id: str, node_id: str, labels: Dict[str, str]) -> None

labels is a plain {key: value} mapping — JSON+base64-encoded internally.

create_swarm_volume​

create_swarm_volume(cluster_id: str, volume_name: str) -> None

volume_name is base64-encoded internally.

delete_all_swarm_volumes​

delete_all_swarm_volumes(cluster_id: str) -> None

delete_swarm_volume​

delete_swarm_volume(cluster_id: str, volume_id: str) -> None

volume_id is an internal _id, not the volume name — see NodesResource.list_docker_volumes for the equivalent lookup at node scope.

set_global_config​

set_global_config(
cluster_id: str,
*,
config: Optional[Dict[str, Any]] = None,
config_id: Optional[str] = None,
) -> None

list_global_secrets​

list_global_secrets(cluster_id: str) -> List[Dict[str, Any]]

secrets is a single object per cluster ({"secretList": [...], "lastUpdated": ...}), not an array — the actual per-secret list is secrets.secretList.

get_global_secret​

get_global_secret(cluster_id: str, secret_id: str) -> GlobalSecret

export_global_secrets​

export_global_secrets(cluster_id: str) -> List[Dict[str, Any]]

create_global_secrets​

create_global_secrets(cluster_id: str, secrets: Dict[str, str]) -> None

delete_global_secret​

delete_global_secret(cluster_id: str, secret_id: str) -> None

delete_all_global_secrets​

delete_all_global_secrets(cluster_id: str) -> None

create_docker_credentials​

create_docker_credentials(cluster_id: str, credentials: List[Dict[str, str]]) -> None

delete_all_docker_credentials​

delete_all_docker_credentials(cluster_id: str) -> None

delete_all_swarm_configs​

delete_all_swarm_configs(cluster_id: str) -> None

delete_swarm_config​

delete_swarm_config(cluster_id: str, config_id: str) -> None

delete_all_swarm_secrets​

delete_all_swarm_secrets(cluster_id: str) -> None

delete_swarm_secret​

delete_swarm_secret(cluster_id: str, secret_id: str) -> None

AsyncClustersResource​

AsyncClustersResource(client: AsyncBarbaraClient)

list​

list(*, search: Optional[str] = None, size: Optional[int] = None) -> List[Cluster]

paginate​

paginate(*, search: Optional[str] = None, size: int = 50, from_: int = 0) -> Page

get​

get(cluster_id: str) -> Cluster

resolve​

resolve(name: str) -> Cluster

Look up a cluster by its name (not its internal _id).

update​

update(cluster_id: str, name: str) -> None

delete​

delete(cluster_id: str) -> None

create​

create(
name: str,
primary_node: Dict[str, Any],
*,
secondary_nodes: Optional[List[Dict[str, Any]]] = None,
enable_cluster_volumes: bool = False,
virtual_ip_enabled: bool = False,
id_vrr: Optional[int] = None,
password: Optional[str] = None,
virtual_ip: Optional[str] = None,
sync_time: Optional[float] = None,
multicast: bool = False,
default_addr_pool: Optional[List[str]] = None,
subnet_size: Optional[int] = None,
) -> None

join_node​

join_node(
cluster_id: str,
node_id: str,
*,
labels: Dict[str, str],
restrict_swarm_traffic_to_interface: bool,
advertise_addr: str,
iface: Optional[str] = None,
unicast_ip: Optional[str] = None,
swarm_iface: Optional[str] = None,
priority: Optional[float] = None,
track_interfaces: Optional[List[str]] = None,
) -> None

leave_node​

leave_node(cluster_id: str, node_id: str, *, force: bool = False) -> None

pause_node​

pause_node(cluster_id: str, node_id: str) -> None

drain_node​

drain_node(cluster_id: str, node_id: str) -> None

set_node_active​

set_node_active(cluster_id: str, node_id: str) -> None

update_node_config​

update_node_config(cluster_id: str, node_id: str, labels: Dict[str, str]) -> None

create_swarm_volume​

create_swarm_volume(cluster_id: str, volume_name: str) -> None

delete_all_swarm_volumes​

delete_all_swarm_volumes(cluster_id: str) -> None

delete_swarm_volume​

delete_swarm_volume(cluster_id: str, volume_id: str) -> None

set_global_config​

set_global_config(
cluster_id: str,
*,
config: Optional[Dict[str, Any]] = None,
config_id: Optional[str] = None,
) -> None

list_global_secrets​

list_global_secrets(cluster_id: str) -> List[Dict[str, Any]]

get_global_secret​

get_global_secret(cluster_id: str, secret_id: str) -> GlobalSecret

export_global_secrets​

export_global_secrets(cluster_id: str) -> List[Dict[str, Any]]

create_global_secrets​

create_global_secrets(cluster_id: str, secrets: Dict[str, str]) -> None

delete_global_secret​

delete_global_secret(cluster_id: str, secret_id: str) -> None

delete_all_global_secrets​

delete_all_global_secrets(cluster_id: str) -> None

create_docker_credentials​

create_docker_credentials(cluster_id: str, credentials: List[Dict[str, str]]) -> None

delete_all_docker_credentials​

delete_all_docker_credentials(cluster_id: str) -> None

delete_all_swarm_configs​

delete_all_swarm_configs(cluster_id: str) -> None

delete_swarm_config​

delete_swarm_config(cluster_id: str, config_id: str) -> None

delete_all_swarm_secrets​

delete_all_swarm_secrets(cluster_id: str) -> None

delete_swarm_secret​

delete_swarm_secret(cluster_id: str, secret_id: str) -> None

Signatures above are generated from barbara-api-sdk 0.6.0 docstrings. If a new SDK release changes one, this page needs a re-sync — the surrounding prose does not update itself.