PetriVm

Struct PetriVm 

Source
pub struct PetriVm<T: PetriVmmBackend> { /* private fields */ }
Expand description

A constructed Petri VM

Implementations§

Source§

impl<T: PetriVmmBackend> PetriVm<T>

Source

pub async fn teardown(self) -> Result<()>

Immediately tear down the VM.

Source

pub async fn wait_for_halt(&mut self) -> Result<PetriHaltReason>

Wait for the VM to halt, returning the reason for the halt.

Source

pub async fn wait_for_clean_shutdown(&mut self) -> Result<()>

Wait for the VM to cleanly shutdown.

Source

pub async fn wait_for_teardown(self) -> Result<PetriHaltReason>

Wait for the VM to halt, returning the reason for the halt, and tear down the VM.

Source

pub async fn wait_for_clean_teardown(self) -> Result<()>

Wait for the VM to cleanly shutdown and tear down the VM.

Source

pub async fn wait_for_reset_no_agent(&mut self) -> Result<()>

Wait for the VM to reset. Does not wait for pipette.

Source

pub async fn wait_for_reset(&mut self) -> Result<PipetteClient>

Wait for the VM to reset and pipette to connect.

Source

pub async fn inspect_openhcl( &self, path: impl Into<String>, depth: Option<usize>, timeout: Option<Duration>, ) -> Result<Node>

Invoke Inspect on the running OpenHCL instance.

IMPORTANT: As mentioned in the Guide, inspect output is not guaranteed to be stable. Use this to test that components in OpenHCL are working as you would expect. But, if you are adding a test simply to verify that the inspect output as some other tool depends on it, then that is incorrect.

  • timeout is enforced on the client side
  • path and depth are passed to the [inspect::Inspect] machinery.
Source

pub async fn test_inspect_openhcl(&mut self) -> Result<()>

Test that we are able to inspect OpenHCL.

Source

pub async fn wait_for_vtl2_ready(&mut self) -> Result<()>

Wait for VTL 2 to report that it is ready to respond to commands. Will fail if the VM is not running OpenHCL.

This should only be necessary if you’re doing something manual. All Petri-provided methods will wait for VTL 2 to be ready automatically.

Source

pub async fn kmsg(&self) -> Result<KmsgStream>

Get the kmsg stream from OpenHCL.

Source

pub async fn openhcl_core_dump(&self, name: &str, path: &Path) -> Result<()>

Gets a live core dump of the OpenHCL process specified by ‘name’ and writes it to ‘path’

Source

pub async fn openhcl_crash(&self, name: &str) -> Result<()>

Crashes the specified openhcl process

Source

pub async fn wait_for_vtl2_agent(&mut self) -> Result<PipetteClient>

Wait for a connection from a pipette agent running in VTL 2. Useful if you’ve reset VTL 2 or are otherwise expecting a fresh connection. Will fail if the VM is not running OpenHCL.

Source

pub async fn send_enlightened_shutdown( &mut self, kind: ShutdownKind, ) -> Result<()>

Wait for the Hyper-V shutdown IC to be ready and use it to instruct the guest to shutdown.

Source

pub async fn restart_openhcl( &mut self, new_openhcl: ResolvedArtifact<impl IsOpenhclIgvm>, flags: OpenHclServicingFlags, ) -> Result<()>

Instruct the OpenHCL to restart the VTL2 paravisor. Will fail if the VM is not running OpenHCL. Will also fail if the VM is not running.

Source

pub async fn save_openhcl( &mut self, new_openhcl: ResolvedArtifact<impl IsOpenhclIgvm>, flags: OpenHclServicingFlags, ) -> Result<()>

Instruct the OpenHCL to save the state of the VTL2 paravisor. Will fail if the VM is not running OpenHCL. Will also fail if the VM is not running or if this is called twice in succession

Source

pub async fn restore_openhcl(&mut self) -> Result<()>

Instruct the OpenHCL to restore the state of the VTL2 paravisor. Will fail if the VM is not running OpenHCL. Will also fail if the VM is running or if this is called without prior save

Source

pub fn arch(&self) -> MachineArch

Get VM’s guest OS flavor

Source

pub fn backend(&mut self) -> &mut T::VmRuntime

Get the inner runtime backend to make backend-specific calls

Source

pub async fn get_guest_state_file(&self) -> Result<Option<PathBuf>>

Get the path to the VM’s guest state file

Auto Trait Implementations§

§

impl<T> Freeze for PetriVm<T>

§

impl<T> !RefUnwindSafe for PetriVm<T>

§

impl<T> Send for PetriVm<T>

§

impl<T> Sync for PetriVm<T>

§

impl<T> Unpin for PetriVm<T>

§

impl<T> !UnwindSafe for PetriVm<T>

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.

§

impl<T> Instrument for T

§

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

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

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

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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