diff --git a/cmd/api/api/instances.go b/cmd/api/api/instances.go index 0869c755f..45e02ee99 100644 --- a/cmd/api/api/instances.go +++ b/cmd/api/api/instances.go @@ -1222,6 +1222,11 @@ func instanceToOAPI(inst instances.Instance) oapi.Instance { if inst.Platform != "" { oapiInst.Platform = lo.ToPtr(inst.Platform) } + + if inst.ForkMode != "" { + oapiInst.ForkMode = lo.ToPtr(oapi.InstanceForkMode(inst.ForkMode)) + } + if inst.ExitMessage != "" { oapiInst.ExitMessage = lo.ToPtr(inst.ExitMessage) } diff --git a/cmd/api/api/snapshots.go b/cmd/api/api/snapshots.go index e55919cfb..05d75015a 100644 --- a/cmd/api/api/snapshots.go +++ b/cmd/api/api/snapshots.go @@ -179,6 +179,9 @@ func (s *ApiService) ForkSnapshot(ctx context.Context, request oapi.ForkSnapshot } domainReq := instances.ForkSnapshotRequest{Name: request.Body.Name} + if request.Body.Tags != nil { + domainReq.Tags = toMapTags(request.Body.Tags) + } if request.Body.TargetState != nil { domainReq.TargetState = instances.State(*request.Body.TargetState) } diff --git a/lib/instances/fork.go b/lib/instances/fork.go index 4c0046c7e..0f0f76149 100644 --- a/lib/instances/fork.go +++ b/lib/instances/fork.go @@ -290,6 +290,14 @@ func (m *manager) forkInstanceFromStoppedOrStandby(ctx context.Context, id strin forkMeta.FirecrackerUFFDSessionID = "" forkMeta.FirecrackerUFFDPagerVersion = "" forkMeta.FirecrackerUseUFFDOnNextRestore = useFirecrackerUFFDOnNextRestore(forkMeta.HypervisorType, source.State == StateStandby, targetState) + // Record the actual fork mode so the API can report it rather than have a + // caller infer it: a shared mem-file is copy-on-write, anything else is a + // full copy. Mirrors the shareMemFile decision above exactly. + if shareMemFile { + forkMeta.ForkMode = ForkModeShared + } else { + forkMeta.ForkMode = ForkModeCopied + } if source.State != StateStandby { forkMeta.FirecrackerSnapshotCacheKey = "" } diff --git a/lib/instances/fork_test.go b/lib/instances/fork_test.go index 98479175a..3059348fc 100644 --- a/lib/instances/fork_test.go +++ b/lib/instances/fork_test.go @@ -94,6 +94,9 @@ func TestForkInstance_VZStoppedSourceSupported(t *testing.T) { assert.Equal(t, StateStopped, forked.State) assert.Equal(t, hypervisor.TypeVZ, forked.HypervisorType) assert.NotEqual(t, sourceID, forked.Id) + // A VZ stopped-source fork copies memory rather than sharing it, and the + // instance reports that measured mode (barista-046 §3.4 consumes this). + assert.Equal(t, ForkModeCopied, forked.ForkMode) } func TestResolveForkTargetState_DefaultsToSourceState(t *testing.T) { diff --git a/lib/instances/snapshot.go b/lib/instances/snapshot.go index 1058af131..ae1be2ca1 100644 --- a/lib/instances/snapshot.go +++ b/lib/instances/snapshot.go @@ -428,6 +428,24 @@ func (m *manager) forkSnapshot(ctx context.Context, snapshotID string, req ForkS forkMeta := cloneStoredMetadataWithoutPendingStandbyCompression(rec.StoredMetadata) forkMeta.Id = forkID forkMeta.Name = req.Name + // Caller-supplied tags override the cloned source tags (request wins per + // key), so a fork can be re-identified rather than inherit the source's + // identity labels. Unrelated source tags are preserved. + if len(req.Tags) > 0 { + if forkMeta.Tags == nil { + forkMeta.Tags = make(map[string]string, len(req.Tags)) + } + for k, v := range req.Tags { + forkMeta.Tags[k] = v + } + } + // Record the measured fork mode, mirroring the instance-fork path: a shared + // mem-file is copy-on-write, anything else is a full copy. + if shareMemFile { + forkMeta.ForkMode = ForkModeShared + } else { + forkMeta.ForkMode = ForkModeCopied + } forkMeta.CreatedAt = now forkMeta.ExpiresAt = nil forkMeta.StartedAt = nil @@ -596,6 +614,12 @@ func validateForkSnapshotRequest(req ForkSnapshotRequest) error { if req.TargetState != "" && req.TargetState != StateStopped && req.TargetState != StateStandby && req.TargetState != StateRunning { return fmt.Errorf("%w: invalid target_state %q", ErrInvalidRequest, req.TargetState) } + // Caller-supplied tags are written into instance metadata below, so they must + // clear the same validation as create-instance and create-snapshot — the + // OpenAPI layer does not guard this direct manager path. + if err := tags.Validate(req.Tags); err != nil { + return fmt.Errorf("%w: %v", ErrInvalidRequest, err) + } return nil } diff --git a/lib/instances/snapshot_test.go b/lib/instances/snapshot_test.go index b23e364ee..6003338f5 100644 --- a/lib/instances/snapshot_test.go +++ b/lib/instances/snapshot_test.go @@ -576,3 +576,21 @@ func createStandbySnapshotSourceFixture(t *testing.T, mgr *manager, id, name str require.NoError(t, os.MkdirAll(snapshotDir, 0755)) require.NoError(t, os.WriteFile(filepath.Join(snapshotDir, "state"), []byte("snapshot"), 0644)) } + +// A fork-snapshot request carries caller-supplied tags that get written into +// instance metadata, so it must reject invalid tags exactly like the create +// paths — the OpenAPI layer does not guard this direct manager entry point. +func TestValidateForkSnapshotRequestValidatesTags(t *testing.T) { + t.Parallel() + require.NoError(t, validateForkSnapshotRequest(ForkSnapshotRequest{ + Name: "fork-ok", + Tags: map[string]string{"env": "prod"}, + }), "a well-formed tag set must pass") + + err := validateForkSnapshotRequest(ForkSnapshotRequest{ + Name: "fork-bad", + Tags: map[string]string{"bad!key": "v"}, // "!" is not an allowed key char + }) + require.Error(t, err, "an invalid tag key must be refused") + assert.ErrorIs(t, err, ErrInvalidRequest) +} diff --git a/lib/instances/types.go b/lib/instances/types.go index efa057b31..7a8981724 100644 --- a/lib/instances/types.go +++ b/lib/instances/types.go @@ -27,6 +27,18 @@ const ( StateUnknown State = "Unknown" // Failed to determine state (VMM query failed) ) +// Fork mode values reported on Instance.ForkMode (see StoredMetadata.ForkMode). +const ( + // ForkModeShared: the fork attaches to the source's memory copy-on-write via + // a shared mem-file. Firecracker forks from a Standby source (including the + // standby cycle of a Running-source fork). + ForkModeShared = "shared" + // ForkModeCopied: the fork was given a full private copy of the source's + // memory image (stopped-source forks, or hypervisors without shared-memory + // fork). + ForkModeCopied = "copied" +) + type EgressEnforcementMode string const ( @@ -139,6 +151,13 @@ type StoredMetadata struct { FirecrackerUFFDSessionID string FirecrackerUFFDPagerVersion string + // ForkMode records how this instance's memory image was produced when it + // was created by a fork: ForkModeShared (copy-on-write via a shared mem-file) + // or ForkModeCopied (a full private copy). Empty for instances that were not + // created by a fork. Read-only; echoed on the instance API so a caller can + // record the actual mode rather than infer it from the hypervisor. + ForkMode string + // Paths SocketPath string // Path to API socket DataDir string // Instance data directory @@ -351,6 +370,11 @@ type ForkSnapshotRequest struct { Name string // Required: name for the new instance TargetState State // Optional TargetHypervisor hypervisor.Type // Optional, allowed only for Stopped snapshots + // Tags override the tags cloned from the snapshot's source onto the fork + // (request wins per key; unrelated source tags are kept). A consumer forks + // many instances from one source and needs to re-identify each fork rather + // than inherit the source's identity labels. + Tags map[string]string } // SnapshotPolicy defines default snapshot behavior for an instance. diff --git a/lib/oapi/oapi.go b/lib/oapi/oapi.go index b1d2067b8..a66f456d0 100644 --- a/lib/oapi/oapi.go +++ b/lib/oapi/oapi.go @@ -158,6 +158,12 @@ const ( ImageStatusReady ImageStatus = "ready" ) +// Defines values for InstanceForkMode. +const ( + Copied InstanceForkMode = "copied" + Shared InstanceForkMode = "shared" +) + // Defines values for InstanceHypervisor. const ( InstanceHypervisorCloudHypervisor InstanceHypervisor = "cloud-hypervisor" @@ -984,6 +990,9 @@ type ForkSnapshotRequest struct { // Name Name for the new instance (lowercase letters, digits, and dashes only; cannot start or end with a dash) Name string `json:"name"` + // Tags User-defined key-value tags. + Tags *Tags `json:"tags,omitempty"` + // TargetHypervisor Optional hypervisor override. Allowed only when forking from a Stopped snapshot. // Standby snapshots must fork with their original hypervisor. TargetHypervisor *ForkSnapshotRequestTargetHypervisor `json:"target_hypervisor,omitempty"` @@ -1259,6 +1268,9 @@ type Instance struct { // ExpiresAt Absolute expiration time, or null when automatic expiration is disabled. Instance TTL is cleared on fork. ExpiresAt *time.Time `json:"expires_at"` + // ForkMode How this instance's memory image was produced, when it was created by a fork. "shared" means it attaches to the source's memory copy-on-write (a shared mem-file; the source is frozen only if it was Running at fork time); "copied" means a full private copy was made. Absent for instances that were not created by a fork. Reported so a caller can record the actual fork mode instead of inferring it. + ForkMode *InstanceForkMode `json:"fork_mode,omitempty"` + // Gpu GPU information attached to the instance Gpu *InstanceGPU `json:"gpu,omitempty"` @@ -1359,6 +1371,9 @@ type Instance struct { Volumes *[]VolumeMount `json:"volumes,omitempty"` } +// InstanceForkMode How this instance's memory image was produced, when it was created by a fork. "shared" means it attaches to the source's memory copy-on-write (a shared mem-file; the source is frozen only if it was Running at fork time); "copied" means a full private copy was made. Absent for instances that were not created by a fork. Reported so a caller can record the actual fork mode instead of inferring it. +type InstanceForkMode string + // InstanceHypervisor Hypervisor backend running this instance type InstanceHypervisor string @@ -19373,263 +19388,266 @@ var swaggerSpec = []string{ "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", - "qZIc0fkBAA==", + "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", + "/t6LZ7udTx8+/f8BAAD//z+xF0n9+wEA", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/openapi.yaml b/openapi.yaml index 3621c3e8c..9cf1b06f7 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -890,6 +890,14 @@ components: pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$ maxLength: 63 example: nginx-from-snap + tags: + $ref: "#/components/schemas/Tags" + description: | + Tags for the forked instance. These override the tags cloned from the + snapshot's source instance (request wins per key; unrelated source + tags are preserved), so a caller forking many instances from one + source can re-identify each fork rather than inherit the source's + identity labels. target_state: $ref: "#/components/schemas/SnapshotTargetState" description: | @@ -1021,6 +1029,18 @@ components: description: Error message if state couldn't be determined (only set when state is Unknown) nullable: true example: "failed to query VMM: connection refused" + fork_mode: + type: string + readOnly: true + enum: [shared, copied] + description: > + How this instance's memory image was produced, when it was created by + a fork. "shared" means it attaches to the source's memory + copy-on-write (a shared mem-file; the source is frozen only if it was + Running at fork time); "copied" means a full private copy was made. + Absent for instances that were not created by a fork. Reported so a + caller can record the actual fork mode instead of inferring it. + example: shared size: type: string description: Base memory size (human-readable)