Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions protect/control/v1/common.proto
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ message ZoneSpec {
ZoneVirtualizationOptionsSpec virtualization_options = 9;
ZoneScratchDiskSpec scratch_disk = 10;
repeated OciImageSpec addons = 11;
// When set, this zone is a fork of the named parent zone; the reconciler
// forks the child from the parent rather than building it from scratch.
string fork_parent_zone_id = 12;
}

enum ZoneResourceAdjustmentPolicy {
Expand Down Expand Up @@ -215,6 +218,7 @@ enum ZoneState {
ZONE_STATE_SUSPENDING = 8;
ZONE_STATE_SUSPENDED = 9;
ZONE_STATE_RESUMING = 10;
ZONE_STATE_FORKING = 11;
}

enum ZoneNetworkIpVersion {
Expand Down
16 changes: 16 additions & 0 deletions protect/control/v1/control.proto
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ service ControlService {
rpc DestroyZone(DestroyZoneRequest) returns (DestroyZoneReply);
rpc SuspendZone(SuspendZoneRequest) returns (SuspendZoneReply);
rpc ResumeZone(ResumeZoneRequest) returns (ResumeZoneReply);
rpc ForkZone(ForkZoneRequest) returns (ForkZoneReply);

rpc ResolveZoneId(ResolveZoneIdRequest) returns (ResolveZoneIdReply);
rpc ResolveZoneIds(ResolveZoneIdsRequest) returns (ResolveZoneIdsReply);
Expand Down Expand Up @@ -113,6 +114,21 @@ message ResumeZoneRequest {

message ResumeZoneReply {}

// Forks a running Edera zone into a new memory-shared child zone (Xen VM-fork).
// The parent is cooperatively suspended for the fork and then resumed; the child
// is a copy-on-write clone that boots with its own identity (UUID, network).
message ForkZoneRequest {
// The zone to fork from.
string zone_id = 1;
// Optional name for the forked child zone.
string name = 2;
}

// Returns the UUID of the newly forked child zone.
message ForkZoneReply {
string zone_id = 1;
}

// Resolves zone "friendly name" to a singular zone UUID, if possible. Matching is exact.
// See also `ResolveZoneIdsRequest` (plural).
message ResolveZoneIdRequest {
Expand Down
Loading