pub struct PetriVm<T: PetriVmmBackend> { /* private fields */ }Expand description
A constructed Petri VM
Implementations§
Source§impl<T: PetriVmmBackend> PetriVm<T>
impl<T: PetriVmmBackend> PetriVm<T>
Sourcepub async fn wait_for_halt(&mut self) -> Result<PetriHaltReason>
pub async fn wait_for_halt(&mut self) -> Result<PetriHaltReason>
Wait for the VM to halt, returning the reason for the halt.
Sourcepub async fn wait_for_clean_shutdown(&mut self) -> Result<()>
pub async fn wait_for_clean_shutdown(&mut self) -> Result<()>
Wait for the VM to cleanly shutdown.
Sourcepub async fn wait_for_teardown(self) -> Result<PetriHaltReason>
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.
Sourcepub async fn wait_for_clean_teardown(self) -> Result<()>
pub async fn wait_for_clean_teardown(self) -> Result<()>
Wait for the VM to cleanly shutdown and tear down the VM.
Sourcepub async fn wait_for_reset_no_agent(&mut self) -> Result<()>
pub async fn wait_for_reset_no_agent(&mut self) -> Result<()>
Wait for the VM to reset. Does not wait for pipette.
Sourcepub async fn wait_for_reset(&mut self) -> Result<PipetteClient>
pub async fn wait_for_reset(&mut self) -> Result<PipetteClient>
Wait for the VM to reset and pipette to connect.
Sourcepub async fn inspect_openhcl(
&self,
path: impl Into<String>,
depth: Option<usize>,
timeout: Option<Duration>,
) -> Result<Node>
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.
timeoutis enforced on the client sidepathanddepthare passed to the [inspect::Inspect] machinery.
Sourcepub async fn test_inspect_openhcl(&mut self) -> Result<()>
pub async fn test_inspect_openhcl(&mut self) -> Result<()>
Test that we are able to inspect OpenHCL.
Sourcepub async fn wait_for_vtl2_ready(&mut self) -> Result<()>
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.
Sourcepub async fn kmsg(&self) -> Result<KmsgStream>
pub async fn kmsg(&self) -> Result<KmsgStream>
Get the kmsg stream from OpenHCL.
Sourcepub async fn openhcl_core_dump(&self, name: &str, path: &Path) -> Result<()>
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’
Sourcepub async fn openhcl_crash(&self, name: &str) -> Result<()>
pub async fn openhcl_crash(&self, name: &str) -> Result<()>
Crashes the specified openhcl process
Sourcepub async fn wait_for_vtl2_agent(&mut self) -> Result<PipetteClient>
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.
Sourcepub async fn send_enlightened_shutdown(
&mut self,
kind: ShutdownKind,
) -> Result<()>
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.
Sourcepub async fn restart_openhcl(
&mut self,
new_openhcl: ResolvedArtifact<impl IsOpenhclIgvm>,
flags: OpenHclServicingFlags,
) -> Result<()>
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.
Sourcepub async fn save_openhcl(
&mut self,
new_openhcl: ResolvedArtifact<impl IsOpenhclIgvm>,
flags: OpenHclServicingFlags,
) -> Result<()>
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
Sourcepub async fn restore_openhcl(&mut self) -> Result<()>
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
Sourcepub fn arch(&self) -> MachineArch
pub fn arch(&self) -> MachineArch
Get VM’s guest OS flavor
Sourcepub fn backend(&mut self) -> &mut T::VmRuntime
pub fn backend(&mut self) -> &mut T::VmRuntime
Get the inner runtime backend to make backend-specific calls
Sourcepub async fn get_guest_state_file(&self) -> Result<Option<PathBuf>>
pub async fn get_guest_state_file(&self) -> Result<Option<PathBuf>>
Get the path to the VM’s guest state file