1
0
forked from wrenn/wrenn

Fix empty WRENN_TEMPLATE_ID after resuming paused sandbox

Resume() was building VMConfig without TemplateID, so Firecracker MMDS
received an empty string. envd's PostInit then wrote that empty value to
/run/wrenn/.WRENN_TEMPLATE_ID. Fix by persisting the template ID in
snapshot metadata during Pause and reading it back during Resume.
This commit is contained in:
2026-05-02 04:57:08 +06:00
parent 2e998a26a2
commit f3572f7356
2 changed files with 3 additions and 0 deletions

View File

@ -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.

View File

@ -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.