Skip to main content

HmVm

Struct HmVm 

Source
pub struct HmVm { /* private fields */ }
Expand description

High-level orchestrator that drives the VM lifecycle.

HmVm composes a VmBackend with an ImageRegistry to provide cache-aware execution: if a cached snapshot already exists for a given caching key the expensive create-inject-exec cycle is skipped entirely.

Implementations§

Source§

impl HmVm

Source

pub fn new( backend: Arc<dyn VmBackend>, registry: ImageRegistry, config: VmConfig, ) -> Self

Create a new orchestrator from the given backend, registry and config.

Source

pub async fn execute( &self, action: Action, policy: CachingPolicy, sink: &dyn OutputSink, ) -> Result<ExecutionResult>

Execute an Action inside a VM, obeying the given CachingPolicy.

§Cache behaviour

When the policy is CachingPolicy::Cache the registry is consulted first. A cache hit that still exists in the backend returns immediately. On a successful (exit-code 0) execution the resulting snapshot is stored in the registry; evicted entries are cleaned up in the backend.

§Errors

Returns an error if the backend fails to create, restore, inject, or execute. Best-effort cleanup is performed even on failure paths.

Source

pub async fn remove_snapshot(&self, snapshot: &SnapshotId) -> Result<()>

Remove a snapshot from the backend store.

Used to reap ephemeral (uncached) leaf snapshots once a run finishes — CachingPolicy::None commits a transient ephemeral:* image purely for downstream container lineage, and nothing in the registry ever evicts it. The scheduler reaps these explicitly at run end.

§Errors

Returns an error if the backend fails to remove the snapshot.

Trait Implementations§

Source§

impl Debug for HmVm

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !Freeze for HmVm

§

impl !RefUnwindSafe for HmVm

§

impl !UnwindSafe for HmVm

§

impl Send for HmVm

§

impl Sync for HmVm

§

impl Unpin for HmVm

§

impl UnsafeUnpin for HmVm

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more