mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2025-01-08 22:05:20 +00:00
hypervisor: add a function to check availability
Signed-off-by: Wei Liu <liuwe@microsoft.com>
This commit is contained in:
parent
c3ce5aa5b1
commit
aa66526ea0
@ -20,6 +20,11 @@ use thiserror::Error;
|
|||||||
///
|
///
|
||||||
///
|
///
|
||||||
pub enum HypervisorError {
|
pub enum HypervisorError {
|
||||||
|
///
|
||||||
|
/// Hypervisor availability check error
|
||||||
|
///
|
||||||
|
#[error("Failed to check availability of the hypervisor: {0}")]
|
||||||
|
HypervisorAvailableCheck(#[source] anyhow::Error),
|
||||||
///
|
///
|
||||||
/// hypervisor creation error
|
/// hypervisor creation error
|
||||||
///
|
///
|
||||||
|
@ -916,6 +916,16 @@ impl KvmHypervisor {
|
|||||||
|
|
||||||
Ok(Arc::new(KvmHypervisor { kvm: kvm_obj }))
|
Ok(Arc::new(KvmHypervisor { kvm: kvm_obj }))
|
||||||
}
|
}
|
||||||
|
/// Check if the hypervisor is available
|
||||||
|
pub fn is_available() -> hypervisor::Result<bool> {
|
||||||
|
match std::fs::metadata("/dev/kvm") {
|
||||||
|
Ok(_) => Ok(true),
|
||||||
|
Err(err) if err.kind() == std::io::ErrorKind::NotFound => Ok(false),
|
||||||
|
Err(err) => Err(hypervisor::HypervisorError::HypervisorAvailableCheck(
|
||||||
|
err.into(),
|
||||||
|
)),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/// Implementation of Hypervisor trait for KVM
|
/// Implementation of Hypervisor trait for KVM
|
||||||
/// Example:
|
/// Example:
|
||||||
|
@ -183,6 +183,16 @@ impl MshvHypervisor {
|
|||||||
Mshv::new().map_err(|e| hypervisor::HypervisorError::HypervisorCreate(e.into()))?;
|
Mshv::new().map_err(|e| hypervisor::HypervisorError::HypervisorCreate(e.into()))?;
|
||||||
Ok(Arc::new(MshvHypervisor { mshv: mshv_obj }))
|
Ok(Arc::new(MshvHypervisor { mshv: mshv_obj }))
|
||||||
}
|
}
|
||||||
|
/// Check if the hypervisor is available
|
||||||
|
pub fn is_available() -> hypervisor::Result<bool> {
|
||||||
|
match std::fs::metadata("/dev/mshv") {
|
||||||
|
Ok(_) => Ok(true),
|
||||||
|
Err(err) if err.kind() == std::io::ErrorKind::NotFound => Ok(false),
|
||||||
|
Err(err) => Err(hypervisor::HypervisorError::HypervisorAvailableCheck(
|
||||||
|
err.into(),
|
||||||
|
)),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/// Implementation of Hypervisor trait for Mshv
|
/// Implementation of Hypervisor trait for Mshv
|
||||||
/// Example:
|
/// Example:
|
||||||
|
Loading…
Reference in New Issue
Block a user