Implement full snapshot lifecycle: pause (snapshot + free resources), resume (UFFD-based lazy restore), and named snapshot templates that can spawn new sandboxes from frozen VM state. Key changes: - Snapshot header system with generational diff mapping (inspired by e2b) - UFFD server for lazy page fault handling during snapshot restore - Stable rootfs symlink path (/tmp/fc-vm/) for snapshot compatibility - Templates DB table and CRUD API endpoints (POST/GET/DELETE /v1/snapshots) - CreateSnapshot/DeleteSnapshot RPCs in hostagent proto - Reconciler excludes paused sandboxes (expected absent from host agent) - Snapshot templates lock vcpus/memory to baked-in values - Proper cleanup of uffd sockets and pause snapshot files on destroy
15 lines
342 B
SQL
15 lines
342 B
SQL
-- +goose Up
|
|
|
|
CREATE TABLE templates (
|
|
name TEXT PRIMARY KEY,
|
|
type TEXT NOT NULL DEFAULT 'base', -- 'base' or 'snapshot'
|
|
vcpus INTEGER,
|
|
memory_mb INTEGER,
|
|
size_bytes BIGINT NOT NULL DEFAULT 0,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
-- +goose Down
|
|
|
|
DROP TABLE templates;
|