use crate::sandbox::record::PersistPhase;
use crate::sandbox::workload::WorkloadClaim;
use crate::sandbox::{IdleAction, pause_reason};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Provision {
Boot {
warm: bool,
},
Restore {
origin: RestoreOrigin,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum RestoreOrigin {
Restore,
WarmCreate,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum PauseReason {
Requested,
IdleTimeout,
}
impl PauseReason {
pub(crate) fn as_str(self) -> &'static str {
match self {
Self::Requested => pause_reason::PAUSE,
Self::IdleTimeout => pause_reason::IDLE_TIMEOUT,
}
}
}
#[derive(Debug, Clone)]
pub(super) enum Event {
Provision(Provision),
Checkpoint,
Pause {
reason: PauseReason,
},
Resume,
Stop {
budget_ms: u64,
},
Remove {
force: bool,
},
Detach,
ClaimWorkload {
claim: WorkloadClaim,
},
WorkloadExited,
WorkloadReleased,
ResourcesHandedOff,
AgentReady,
Restored,
Gated,
CaptureDone {
snapshot_id: String,
},
ReleasedForPause,
StopDone,
RemoveDone,
Detached,
Failure,
Frozen,
Stranded,
VmExited,
TtlExpired,
IdleExpired {
action: IdleAction,
},
Recovered {
phase: PersistPhase,
},
Adopted,
}