silverback.cluster#

The silverback.cluster module contains several submodules intended to work directly with hosted (and local) Silverback Clusters, and assist in integration with the Silverback Platform.

class silverback.cluster.client.Bot(*, id: UUID, name: str, created: datetime, image: str, credential_name: str | None, ecosystem: str, network: str, provider: str, account: str | None, environment: list[str], cluster_access: bool = False)#

Bases: BotInfo

class silverback.cluster.client.ClusterClient(*args, **kwargs)#

Bases: Client

send(request, *args, **kwargs)#

Send a request.

The request is sent as-is, unmodified.

Typically you’ll want to build one with Client.build_request() so that any client-level configuration is merged into the request, but passing an explicit httpx.Request() is supported as well.

See also: [Request instances][0]

[0]: /advanced/clients/#request-instances

class silverback.cluster.client.PlatformClient(*args, **kwargs)#

Bases: Client

send(request, *args, **kwargs)#

Send a request.

The request is sent as-is, unmodified.

Typically you’ll want to build one with Client.build_request() so that any client-level configuration is merged into the request, but passing an explicit httpx.Request() is supported as well.

See also: [Request instances][0]

[0]: /advanced/clients/#request-instances

class silverback.cluster.client.RegistryCredentials(*, id: str, name: str, hostname: str, created: datetime, updated: datetime)#

Bases: RegistryCredentialsInfo

class silverback.cluster.client.VariableGroup(*, id: UUID, name: str, variables: list[str], created: datetime)#

Bases: VariableGroupInfo

class silverback.cluster.client.Workspace(*, id: UUID, owner_id: UUID, name: str, slug: str, created: datetime)#

Bases: WorkspaceInfo

class silverback.cluster.settings.AuthenticationConfig(*, host: str = 'https://account.apeworx.io', client_id: str = 'c9f9be0e-1f0a-474c-b79e-319778b37ae6')#

Bases: BaseModel

Authentication host configuration information (~/.silverback/profile.toml)

class silverback.cluster.settings.BaseProfile(*, host: str)#

Bases: BaseModel

Profile information (~/.silverback/profile.toml)

class silverback.cluster.settings.ClusterProfile(*, host: str, api_key: str)#

Bases: BaseProfile

class silverback.cluster.settings.PlatformProfile(*, host: str, auth: str, default_workspace: str = '', default_cluster: dict[str, str] = <factory>)#

Bases: BaseProfile

class silverback.cluster.settings.ProfileSettings(*, auth: dict[str, AuthenticationConfig], profile: dict[str, PlatformProfile | ClusterProfile], default_profile: str = 'default')#

Bases: BaseModel

Configuration settings for working with Bot Clusters and the Silverback Platform

class silverback.cluster.types.BotInfo(*, id: UUID, name: str, created: datetime, image: str, credential_name: str | None, ecosystem: str, network: str, provider: str, account: str | None, environment: list[str], cluster_access: bool = False)#

Bases: BaseModel

class silverback.cluster.types.BotLogEntry(*, level: LogLevel | None = None, timestamp: datetime | None = None, message: str)#

Bases: BaseModel

class silverback.cluster.types.BotTaskStatus(*, last_status: str, exit_code: int | None, reason: str | None, started_at: datetime | None, stop_code: str | None, stopped_at: datetime | None, stopped_reason: str | None)#

Bases: BaseModel

class silverback.cluster.types.ClusterConfiguration(*, version: int = 1, cpu: Annotated[int, Ge(ge=1), Le(le=64)] = 1, memory: Annotated[int, Ge(ge=1), Le(le=128)] = 1, networks: Annotated[int, Ge(ge=1), Le(le=20)] = 1, bots: Annotated[int, Ge(ge=1), Le(le=250)] = 1, bandwidth: Annotated[int, Ge(ge=1), Le(le=250)] = 1, duration: Annotated[int, Ge(ge=1), Le(le=120)] = 1)#

Bases: BaseModel

Configuration of the cluster (represented as 16 byte value)

bandwidth: Annotated[int, Field(ge=1, le=250)]#

Rate at which data should be emitted by cluster (in KiB/sec)

bots: Annotated[int, Field(ge=1, le=250)]#

Maximum number of guaranteed concurrently running bots

cpu: Annotated[int, Field(ge=1, le=64)]#

Max vCPUs shared by all bots in cluster

classmethod decode(value: Any) → ClusterConfiguration#

Decode the configuration from 8 byte integer value

duration: Annotated[int, Field(ge=1, le=120)]#

Time to keep data recording duration (in months)

encode() → int#

Encode configuration as 8 byte integer value

memory: Annotated[int, Field(ge=1, le=128)]#

Max memory (in GiB) shared by all bots in cluster

networks: Annotated[int, Field(ge=1, le=20)]#

Maximum number of concurrent networks all bots can use

version: int#

Version of this configuration (used for encoding/decoding)

class silverback.cluster.types.ClusterHealth(*, networks: dict[str, ~silverback.cluster.types.ServiceHealth] = <factory>, bots: dict[str, ~silverback.cluster.types.ServiceHealth] = <factory>)#

Bases: BaseModel

class silverback.cluster.types.ClusterInfo(*, id: UUID, version: str | None, configuration: ClusterConfiguration | None = None, name: str, slug: str, expiration: datetime | None = None, stream_id: UUID | None = None, created: datetime, status: ResourceStatus, last_updated: datetime)#

Bases: BaseModel

class silverback.cluster.types.ClusterTier(value)#

Bases: IntEnum

Suggestions for different tier configurations

class silverback.cluster.types.RegistryCredentialsInfo(*, id: str, name: str, hostname: str, created: datetime, updated: datetime)#

Bases: BaseModel

class silverback.cluster.types.ResourceStatus(value)#

Bases: IntEnum

Generic enum that represents that status of any associated resource or service.

`{note} Calling `str(...)` on this will produce a human-readable status for display. `

CREATED = 0#

Resource record created, but not provisioning yet (likely awaiting payment)

DEPROVISIONING = 8#

User removal action or payment expiration event triggered

PROVISIONING = 2#

Resource is provisioning infrastructure (on payment received)

REMOVED = 9#

Infrastructure de-provisioning complete (Cannot change from this state)

RUNNING = 4#

Resource is in good health (Resource itself should be reporting status now)

SHUTDOWN = 6#

Resource is being put into the STOPPED state

STARTUP = 3#

Resource is being put into the RUNNING state

STOPPED = 7#

Resource has stopped (due to errors, user action, or resource contraints)

class silverback.cluster.types.ServiceHealth(*, healthy: bool)#

Bases: BaseModel

class silverback.cluster.types.StreamInfo(*, chain_id: int, manager: Annotated[ChecksumAddress, _AddressValidator], stream_id: int)#

Bases: BaseModel

class silverback.cluster.types.VariableGroupInfo(*, id: UUID, name: str, variables: list[str], created: datetime)#

Bases: BaseModel

class silverback.cluster.types.WorkspaceInfo(*, id: UUID, owner_id: UUID, name: str, slug: str, created: datetime)#

Bases: BaseModel