コンテンツにスキップ

スナップショット

class Snapshot(SnapshotDto)

Daytona(サンドボックスの作成・管理を行うプラットフォーム)における、事前構成済みのサンドボックスであるスナップショット(リソースや依存関係を含む再利用可能なイメージ/テンプレート)を表します。

属性:

  • id StrictStr - スナップショットの一意の識別子。
  • organization_id Optional[StrictStr] - スナップショットの組織(ユーザー・リソースのグループ化、役割・課金・制限を含む)ID。
  • general Optional[bool] - スナップショットが汎用かどうか。
  • name StrictStr - スナップショットの名称。
  • image_name StrictStr - スナップショットのイメージ名。
  • state StrictStr - スナップショットの状態。
  • size Optional[Union[StrictFloat, StrictInt]] - スナップショットのサイズ。
  • entrypoint Optional[List[str]] - スナップショットのエントリーポイント。
  • cpu Union[StrictFloat, StrictInt] - スナップショットのCPU。
  • gpu Union[StrictFloat, StrictInt] - スナップショットのGPU。
  • mem Union[StrictFloat, StrictInt] - スナップショットのメモリ(GiB)。
  • disk Union[StrictFloat, StrictInt] - スナップショットのディスク(GiB)。
  • error_reason Optional[StrictStr] - スナップショットのエラー理由。
  • created_at StrictStr - スナップショットの作成時刻。
  • updated_at StrictStr - スナップショットの最終更新時刻。
  • last_used_at StrictStr - スナップショットの最終使用時刻。

AsyncSnapshotService

class AsyncSnapshotService()

Daytonaのスナップショット(スナップショット(リソースや依存関係を含む再利用可能なイメージ/テンプレート))を管理するサービス。スナップショットの一覧、取得、作成、削除に使用できます。

AsyncSnapshotService.list

@intercept_errors(message_prefix="Failed to list snapshots: ")
async def list() -> List[Snapshot]

すべてのスナップショットを一覧します。

戻り値:

  • List[Snapshot] - すべてのスナップショットのリスト。

:

async with AsyncDaytona() as daytona:
snapshots = await daytona.snapshot.list()
for snapshot in snapshots:
print(f"{snapshot.name} ({snapshot.image_name})")

AsyncSnapshotService.delete

@intercept_errors(message_prefix="Failed to delete snapshot: ")
async def delete(snapshot: Snapshot) -> None

スナップショットを削除します。

引数:

  • snapshot Snapshot - 削除するスナップショット。

:

async with AsyncDaytona() as daytona:
snapshot = await daytona.snapshot.get("test-snapshot")
await daytona.snapshot.delete(snapshot)
print("Snapshot deleted")

AsyncSnapshotService.get

@intercept_errors(message_prefix="Failed to get snapshot: ")
async def get(name: str) -> Snapshot

名前を指定してスナップショットを取得します。

引数:

  • name str - 取得するスナップショット名。

戻り値:

  • Snapshot - 取得したスナップショット。

:

async with AsyncDaytona() as daytona:
snapshot = await daytona.snapshot.get("test-snapshot-name")
print(f"{snapshot.name} ({snapshot.image_name})")

AsyncSnapshotService.create

@intercept_errors(message_prefix="Failed to create snapshot: ")
@with_timeout(error_message=lambda self, timeout: (
f"Failed to create snapshot within {timeout} seconds timeout period."))
async def create(params: CreateSnapshotParams,
*,
on_logs: Callable[[str], None] = None,
timeout: Optional[float] = 0) -> Snapshot

指定されたImage定義から新しいスナップショットを作成し、登録します。

引数:

  • params CreateSnapshotParams - スナップショット作成用パラメータ。
  • on_logs Callable[[str], None] - スナップショット作成時のログを処理するコールバック関数。
  • timeout Optional[float] - 既定ではタイムアウトなし。秒数で指定(0はタイムアウトなし)。

:

image = Image.debianSlim('3.12').pipInstall('numpy')
daytona.snapshot.create(
CreateSnapshotParams(name='my-snapshot', image=image),
on_logs=lambda chunk: print(chunk, end=""),
)

AsyncSnapshotService.activate

async def activate(snapshot: Snapshot) -> Snapshot

スナップショットをアクティブ化します。

引数:

  • snapshot Snapshot - 対象のスナップショットインスタンス。

戻り値:

  • Snapshot - アクティブ化されたスナップショットインスタンス。

AsyncSnapshotService.process_image_context

@staticmethod
async def process_image_context(object_storage_api: ObjectStorageApi,
image: Image) -> List[str]

イメージのコンテキストをオブジェクトストレージにアップロードして処理します。

引数:

  • image Image - 対象のImageインスタンス。

戻り値:

  • List[str] - オブジェクトストレージに保存されたコンテキストハッシュのリスト。

CreateSnapshotParams

class CreateSnapshotParams(BaseModel)

新しいスナップショットを作成するためのパラメータ。

属性:

  • name Optional[str] - スナップショット名。
  • image Union[str, Image] - スナップショットのイメージ。文字列が指定された場合は、 いずれかのレジストリで利用可能である必要があります。Image インスタンスが指定された場合は、 Daytonaで新しいイメージを作成する際に使用されます。
  • resources Optional[Resources] - スナップショットのリソース。
  • entrypoint Optional[List[str]] - スナップショットのエントリポイント。