openvmm_helpers/
hypervisor.rs1use hypervisor_resources::HypervisorKind;
8use vm_resource::Resource;
9
10pub fn choose_hypervisor() -> anyhow::Result<Resource<HypervisorKind>> {
15 for probe in hypervisor_resources::probes() {
16 if let Some(resource) = probe.try_new_resource()? {
17 return Ok(resource);
18 }
19 }
20 anyhow::bail!("no hypervisor available");
21}
22
23pub fn hypervisor_resource(name: &str) -> anyhow::Result<Resource<HypervisorKind>> {
28 let probe = hypervisor_resources::probe_by_name(name)
29 .ok_or_else(|| anyhow::anyhow!("unknown hypervisor: {name}"))?;
30 probe
31 .try_new_resource()?
32 .ok_or_else(|| anyhow::anyhow!("hypervisor {name} is not available"))
33}