Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions koyeb/sandbox/sandbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ def create(
delete_after_delay: int = 0,
delete_after_inactivity_delay: int = 0,
app_id: Optional[str] = None,
enable_mesh: bool = None,
) -> Sandbox:
"""
Create a new sandbox instance.
Expand Down Expand Up @@ -153,6 +154,7 @@ def create(
delete_after_sleep: If >0, automatically delete the sandbox if service sleeps due to inactivity
after this many seconds.
app_id: If provided, create the sandbox service in an existing app instead of creating a new one.
enable_mesh: Enable or disable mesh for this sandbox. Disabled by default

Returns:
Sandbox: A new Sandbox instance
Expand Down Expand Up @@ -196,6 +198,7 @@ def create(
delete_after_delay=delete_after_delay,
delete_after_inactivity_delay=delete_after_inactivity_delay,
app_id=app_id,
enable_mesh=enable_mesh,
)

if wait_ready:
Expand Down Expand Up @@ -229,6 +232,7 @@ def _create_sync(
delete_after_delay: int = 0,
delete_after_inactivity_delay: int = 0,
app_id: Optional[str] = None,
enable_mesh: bool = None,
) -> Sandbox:
"""
Synchronous creation method that returns creation parameters.
Expand Down Expand Up @@ -275,6 +279,7 @@ def _create_sync(
enable_tcp_proxy=enable_tcp_proxy,
_experimental_enable_light_sleep=_experimental_enable_light_sleep,
_experimental_deep_sleep_value=_experimental_deep_sleep_value,
enable_mesh=enable_mesh,
)

service_life_cycle = ServiceLifeCycle(
Expand Down Expand Up @@ -1026,6 +1031,7 @@ async def create(
delete_after_delay: int = 0,
delete_after_inactivity_delay: int = 0,
app_id: Optional[str] = None,
enable_mesh: bool = False,
) -> AsyncSandbox:
"""
Create a new sandbox instance with async support.
Expand Down Expand Up @@ -1060,6 +1066,7 @@ async def create(
delete_after_inactivity_delay: If >0, automatically delete the sandbox if service sleeps due to inactivity
after this many seconds.
app_id: If provided, create the sandbox service in an existing app instead of creating a new one.
enable_mesh: Enable or disable mesh for this sandbox. Disabled by default

Returns:
AsyncSandbox: A new AsyncSandbox instance
Expand Down Expand Up @@ -1096,6 +1103,7 @@ async def create(
delete_after_delay=delete_after_delay,
delete_after_inactivity_delay=delete_after_inactivity_delay,
app_id=app_id,
enable_mesh=enable_mesh,
),
)

Expand Down
13 changes: 13 additions & 0 deletions koyeb/sandbox/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
from koyeb.api.models.deployment_scaling_target_sleep_idle_delay import (
DeploymentScalingTargetSleepIdleDelay,
)
from koyeb.api.models.deployment_mesh import DeploymentMesh
from koyeb.api.models.docker_source import DockerSource
from koyeb.api.models.proxy_port_protocol import ProxyPortProtocol

Expand Down Expand Up @@ -242,6 +243,7 @@ def create_deployment_definition(
enable_tcp_proxy: bool = False,
_experimental_enable_light_sleep: bool = False,
_experimental_deep_sleep_value: int = 3900,
enable_mesh: bool = None,
) -> DeploymentDefinition:
"""
Create deployment definition for a sandbox service.
Expand All @@ -262,6 +264,7 @@ def create_deployment_definition(
Light Sleep reduces cold starts to ~200ms. After scaling to zero, the service stays in Light Sleep for idle_timeout seconds before going into Deep Sleep.
_experimental_deep_sleep_value: Number of seconds for deep sleep when light sleep is enabled (default: 3900).
Only used if _experimental_enable_light_sleep is True. Ignored otherwise.
enable_mesh: Enable or disable mesh for this sandbox. Disabled by default

Returns:
DeploymentDefinition object
Expand Down Expand Up @@ -312,6 +315,15 @@ def create_deployment_definition(

scalings = [DeploymentScaling(min=min_scale, max=1, targets=targets)]

# Set mesh configuration
mesh = DeploymentMesh.DEPLOYMENT_MESH_AUTO
if enable_mesh is None:
mesh = DeploymentMesh.DEPLOYMENT_MESH_AUTO
elif not enable_mesh:
mesh = DeploymentMesh.DEPLOYMENT_MESH_DISABLED
elif enable_mesh:
mesh = DeploymentMesh.DEPLOYMENT_MESH_ENABLED

return DeploymentDefinition(
name=name,
type=deployment_type,
Expand All @@ -323,6 +335,7 @@ def create_deployment_definition(
instance_types=[DeploymentInstanceType(type=instance_type)],
scalings=scalings,
regions=regions_list,
mesh=mesh,
)


Expand Down
Loading