diff --git a/internal/sandbox/manager.go b/internal/sandbox/manager.go index daa1dba..3c49cd6 100644 --- a/internal/sandbox/manager.go +++ b/internal/sandbox/manager.go @@ -577,6 +577,7 @@ func (m *Manager) Pause(ctx context.Context, sandboxID string) error { // Record which base template this CoW was built against. if err := snapshot.WriteMeta(pauseDir, "", &snapshot.RootfsMeta{ BaseTemplate: sb.baseImagePath, + TemplateID: uuid.UUID(sb.TemplateID).String(), }); err != nil { warnErr("snapshot dir cleanup error", sandboxID, os.RemoveAll(pauseDir)) // VM and dm-snapshot are already gone — clean up remaining resources. @@ -731,6 +732,7 @@ func (m *Manager) Resume(ctx context.Context, sandboxID string, timeoutSec int, // Restore VM from snapshot. vmCfg := vm.VMConfig{ SandboxID: sandboxID, + TemplateID: meta.TemplateID, KernelPath: m.resolveKernelPath(kernelVersion), RootfsPath: dmDev.DevicePath, VCPUs: 1, // Placeholder; overridden by snapshot. diff --git a/internal/snapshot/local.go b/internal/snapshot/local.go index 8e667b8..95b9574 100644 --- a/internal/snapshot/local.go +++ b/internal/snapshot/local.go @@ -64,6 +64,7 @@ func MetaPath(baseDir, name string) string { // RootfsMeta records which base template a CoW file was created against. type RootfsMeta struct { BaseTemplate string `json:"base_template"` + TemplateID string `json:"template_id,omitempty"` } // WriteMeta writes rootfs metadata to the snapshot directory.