Skip to content

Commit 5fe9dd1

Browse files
committed
added snapshot_disk methods to devbox classes
1 parent 511de33 commit 5fe9dd1

2 files changed

Lines changed: 128 additions & 4 deletions

File tree

src/runloop_api_client/sdk/async_devbox.py

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,65 @@ async def suspend(self, **request_options: Any) -> Any:
121121
async def resume(self, **request_options: Any) -> Any:
122122
return await self._client.devboxes.resume(self._id, **request_options)
123123

124-
async def keep_alive(self, **request_options: Any) -> Any:
125-
return await self._client.devboxes.keep_alive(self._id, **request_options)
124+
async def snapshot_disk(
125+
self,
126+
*,
127+
commit_message: str | None | Omit = omit,
128+
metadata: dict[str, str] | None | Omit = omit,
129+
name: str | None | Omit = omit,
130+
polling_config: PollingConfig | None = None,
131+
extra_headers: Headers | None = None,
132+
extra_query: Query | None = None,
133+
extra_body: Body | None = None,
134+
timeout: float | Timeout | None | NotGiven = not_given,
135+
idempotency_key: str | None = None,
136+
) -> "AsyncSnapshot":
137+
snapshot_data = await self._client.devboxes.snapshot_disk_async(
138+
self._id,
139+
commit_message=commit_message,
140+
metadata=metadata,
141+
name=name,
142+
extra_headers=extra_headers,
143+
extra_query=extra_query,
144+
extra_body=extra_body,
145+
timeout=timeout,
146+
idempotency_key=idempotency_key,
147+
)
148+
snapshot = self._snapshot_from_id(snapshot_data.id)
149+
await snapshot.await_completed(
150+
polling_config=polling_config,
151+
extra_headers=extra_headers,
152+
extra_query=extra_query,
153+
extra_body=extra_body,
154+
timeout=timeout,
155+
idempotency_key=idempotency_key,
156+
)
157+
return snapshot
158+
159+
async def snapshot_disk_async(
160+
self,
161+
*,
162+
commit_message: str | None | Omit = omit,
163+
metadata: dict[str, str] | None | Omit = omit,
164+
name: str | None | Omit = omit,
165+
extra_headers: Headers | None = None,
166+
extra_query: Query | None = None,
167+
extra_body: Body | None = None,
168+
timeout: float | Timeout | None | NotGiven = not_given,
169+
idempotency_key: str | None = None,
170+
) -> "AsyncSnapshot":
171+
snapshot_data = await self._client.devboxes.snapshot_disk_async(
172+
self._id,
173+
commit_message=commit_message,
174+
metadata=metadata,
175+
name=name,
176+
extra_headers=extra_headers,
177+
extra_query=extra_query,
178+
extra_body=extra_body,
179+
timeout=timeout,
180+
idempotency_key=idempotency_key,
181+
)
182+
return self._snapshot_from_id(snapshot_data.id)
126183

127184
async def close(self) -> None:
128185
await self.shutdown()
@@ -143,6 +200,11 @@ def net(self) -> "_AsyncNetworkInterface":
143200
# Internal helpers
144201
# ------------------------------------------------------------------ #
145202

203+
def _snapshot_from_id(self, snapshot_id: str) -> "AsyncSnapshot":
204+
from .async_snapshot import AsyncSnapshot
205+
206+
return AsyncSnapshot(self._client, snapshot_id)
207+
146208
def _start_streaming(
147209
self,
148210
execution_id: str,

src/runloop_api_client/sdk/devbox.py

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,65 @@ def suspend(self, **request_options: Any) -> Any:
129129
def resume(self, **request_options: Any) -> Any:
130130
return self._client.devboxes.resume(self._id, **request_options)
131131

132-
def keep_alive(self, **request_options: Any) -> Any:
133-
return self._client.devboxes.keep_alive(self._id, **request_options)
132+
def snapshot_disk(
133+
self,
134+
*,
135+
commit_message: str | None | Omit = omit,
136+
metadata: dict[str, str] | None | Omit = omit,
137+
name: str | None | Omit = omit,
138+
polling_config: PollingConfig | None = None,
139+
extra_headers: Headers | None = None,
140+
extra_query: Query | None = None,
141+
extra_body: Body | None = None,
142+
timeout: float | Timeout | None | NotGiven = not_given,
143+
idempotency_key: str | None = None,
144+
) -> "Snapshot":
145+
snapshot_data = self._client.devboxes.snapshot_disk_async(
146+
self._id,
147+
commit_message=commit_message,
148+
metadata=metadata,
149+
name=name,
150+
extra_headers=extra_headers,
151+
extra_query=extra_query,
152+
extra_body=extra_body,
153+
timeout=timeout,
154+
idempotency_key=idempotency_key,
155+
)
156+
snapshot = self._snapshot_from_id(snapshot_data.id)
157+
snapshot.await_completed(
158+
polling_config=polling_config,
159+
extra_headers=extra_headers,
160+
extra_query=extra_query,
161+
extra_body=extra_body,
162+
timeout=timeout,
163+
idempotency_key=idempotency_key,
164+
)
165+
return snapshot
166+
167+
def snapshot_disk_async(
168+
self,
169+
*,
170+
commit_message: str | None | Omit = omit,
171+
metadata: dict[str, str] | None | Omit = omit,
172+
name: str | None | Omit = omit,
173+
extra_headers: Headers | None = None,
174+
extra_query: Query | None = None,
175+
extra_body: Body | None = None,
176+
timeout: float | Timeout | None | NotGiven = not_given,
177+
idempotency_key: str | None = None,
178+
) -> "Snapshot":
179+
snapshot_data = self._client.devboxes.snapshot_disk_async(
180+
self._id,
181+
commit_message=commit_message,
182+
metadata=metadata,
183+
name=name,
184+
extra_headers=extra_headers,
185+
extra_query=extra_query,
186+
extra_body=extra_body,
187+
timeout=timeout,
188+
idempotency_key=idempotency_key,
189+
)
190+
return self._snapshot_from_id(snapshot_data.id)
134191

135192
def close(self) -> None:
136193
self.shutdown()
@@ -151,6 +208,11 @@ def net(self) -> "_NetworkInterface":
151208
# Internal helpers
152209
# --------------------------------------------------------------------- #
153210

211+
def _snapshot_from_id(self, snapshot_id: str) -> "Snapshot":
212+
from .snapshot import Snapshot
213+
214+
return Snapshot(self._client, snapshot_id)
215+
154216
def _start_streaming(
155217
self,
156218
execution_id: str,

0 commit comments

Comments
 (0)