Warm pools: pre-created sandboxes for instant Sandbox.create/2.
A warm pool keeps a number of sandboxes pre-provisioned from a snapshot;
a matching ExDaytona.Sandbox.create/2 is then fulfilled from the pool
in milliseconds instead of provisioning from scratch — the latency lever
for interactive products:
{:ok, snapshot} = ExDaytona.Snapshot.build(client, "my-app-base", image)
{:ok, pool} = ExDaytona.WarmPool.create(client, snapshot: "my-app-base", size: 5)
# Creates that match the pool's snapshot (and target) draw from it:
{:ok, sandbox} = ExDaytona.Sandbox.create(client, snapshot: "my-app-base")
{:ok, pool} = ExDaytona.WarmPool.resize(client, pool.id, 10)
:ok = ExDaytona.WarmPool.delete(client, pool.id)Pool entries count toward the organization's quota
(ExDaytona.Quota.overview/2) — size pools accordingly.
Summary
Functions
Create a warm pool.
Delete a warm pool (its warm entries are released). Returns :ok.
List the organization's warm pools as ExDaytona.Model.WarmPool
structs.
Change a warm pool's size. Returns the updated
ExDaytona.Model.WarmPool.
Functions
@spec create( ExDaytona.Client.t(), keyword() ) :: {:ok, ExDaytona.Model.WarmPool.t()} | {:error, ExDaytona.Error.t()}
Create a warm pool.
Options
:snapshot(required) — the snapshot to pre-provision from:size(required) — how many sandboxes to keep warm:target— region target (server default when omitted)
Returns {:ok, %ExDaytona.Model.WarmPool{}} — currentSize reports
how many entries are warm right now.
@spec delete(ExDaytona.Client.t(), String.t()) :: :ok | {:error, ExDaytona.Error.t()}
Delete a warm pool (its warm entries are released). Returns :ok.
@spec list(ExDaytona.Client.t()) :: {:ok, [ExDaytona.Model.WarmPool.t()]} | {:error, ExDaytona.Error.t()}
List the organization's warm pools as ExDaytona.Model.WarmPool
structs.
@spec resize(ExDaytona.Client.t(), String.t(), non_neg_integer()) :: {:ok, ExDaytona.Model.WarmPool.t()} | {:error, ExDaytona.Error.t()}
Change a warm pool's size. Returns the updated
ExDaytona.Model.WarmPool.