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
2 changes: 1 addition & 1 deletion src/aio_lib_sandbox/http.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def normalize_api_host(host: str) -> str:
def build_ws_endpoint(api_host: str, namespace: str, sandbox_id: str) -> str:
parsed = urlparse(api_host)
ws_scheme = "ws" if parsed.scheme == "http" else "wss"
path = f"/ws/v1/namespaces/{namespace}/sandbox/{sandbox_id}/exec"
path = f"/api/v1/namespaces/{namespace}/sandboxes/{sandbox_id}/exec"
return urlunparse((ws_scheme, parsed.netloc, path, "", "", ""))


Expand Down
6 changes: 3 additions & 3 deletions src/aio_lib_sandbox/sandbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ async def create(
if ports is not None:
body["ports"] = ports

url = f"{creds['api_host']}/api/v1/namespaces/{creds['namespace']}/sandbox"
url = f"{creds['api_host']}/api/v1/namespaces/{creds['namespace']}/sandboxes"
payload = await api_request(
"POST",
url,
Expand Down Expand Up @@ -211,7 +211,7 @@ async def get(
This instance is **not** WebSocket-connected.
"""
creds = cls.resolve_credentials(api_host=api_host, namespace=namespace, auth=auth)
url = f"{creds['api_host']}/api/v1/namespaces/{creds['namespace']}/sandbox/{sandbox_id}"
url = f"{creds['api_host']}/api/v1/namespaces/{creds['namespace']}/sandboxes/{sandbox_id}"
payload = await api_request(
"GET",
url,
Expand Down Expand Up @@ -488,7 +488,7 @@ async def destroy(self) -> dict[str, Any]:
The destroy response payload.
"""
base = self.management_endpoint or self.api_host
url = f"{base}/api/v1/namespaces/{self.namespace}/sandbox/{self.id}"
url = f"{base}/api/v1/namespaces/{self.namespace}/sandboxes/{self.id}"
headers = {"Authorization": build_auth_header(self.api_key)}
if self.session:
self.session.begin_intentional_close()
Expand Down
10 changes: 5 additions & 5 deletions tests/test_sandbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@

BASE_OPTS = dict(
sandbox_id="sb-test",
endpoint="wss://runtime.example.net/ws/v1/namespaces/ns/sandbox/sb-test/exec",
endpoint="wss://runtime.example.net/api/v1/namespaces/ns/sandboxes/sb-test/exec",
status="ready",
namespace="ns",
api_host="https://runtime.example.net",
Expand Down Expand Up @@ -189,7 +189,7 @@ class TestSandboxCreate:
async def test_create_calls_api_and_connects(self, monkeypatch):
payload = {
"sandboxId": "sb-new",
"wsEndpoint": "wss://runtime.example.net/ws/v1/namespaces/ns/sandbox/sb-new/exec",
"wsEndpoint": "wss://runtime.example.net/api/v1/namespaces/ns/sandboxes/sb-new/exec",
"status": "ready",
"token": "tok-new",
"maxLifetime": 3600,
Expand Down Expand Up @@ -220,7 +220,7 @@ async def test_create_forwards_policy(self, monkeypatch):
policy = {"network": {"egress": [{"host": "api.github.com", "port": 443}]}}
payload = {
"sandboxId": "sb-pol",
"wsEndpoint": "wss://runtime.example.net/ws/v1/namespaces/ns/sandbox/sb-pol/exec",
"wsEndpoint": "wss://runtime.example.net/api/v1/namespaces/ns/sandboxes/sb-pol/exec",
"status": "ready",
"token": "tok-pol",
"maxLifetime": 3600,
Expand All @@ -247,7 +247,7 @@ async def test_create_reads_env_vars(self, monkeypatch):

payload = {
"sandboxId": "sb-env",
"wsEndpoint": "wss://runtime.example.net/ws/v1/namespaces/ns/sandbox/sb-env/exec",
"wsEndpoint": "wss://runtime.example.net/api/v1/namespaces/ns/sandboxes/sb-env/exec",
"status": "ready",
"token": "tok-env",
"maxLifetime": 3600,
Expand Down Expand Up @@ -290,7 +290,7 @@ async def test_create_builds_ws_endpoint_when_absent(self, monkeypatch):
async def test_create_forwards_ports_and_parses_preview_urls(self):
payload = {
"sandboxId": "sb-ports",
"wsEndpoint": "wss://runtime.example.net/ws/v1/namespaces/ns/sandbox/sb-ports/exec",
"wsEndpoint": "wss://runtime.example.net/api/v1/namespaces/ns/sandboxes/sb-ports/exec",
"status": "ready",
"token": "tok-ports",
"maxLifetime": 3600,
Expand Down
Loading