From 34af52c58daae7ad75c0871e88e7b937fcd078fb Mon Sep 17 00:00:00 2001 From: Cara Salter Date: Tue, 12 Apr 2022 12:22:19 -0400 Subject: Initial commit --- src/errors.rs | 9 +++++++++ src/lib.rs | 3 +++ src/vm.rs | 31 +++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 src/errors.rs create mode 100644 src/lib.rs create mode 100644 src/vm.rs (limited to 'src') diff --git a/src/errors.rs b/src/errors.rs new file mode 100644 index 0000000..2960ba9 --- /dev/null +++ b/src/errors.rs @@ -0,0 +1,9 @@ +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum Error { + #[error("libvirt: {0}")] + Libvirt(#[from] virt::error::Error), + #[error("Unknown: {0}")] + Other(String), +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..e29abd4 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,3 @@ +pub mod errors; + +pub mod vm; diff --git a/src/vm.rs b/src/vm.rs new file mode 100644 index 0000000..8e17659 --- /dev/null +++ b/src/vm.rs @@ -0,0 +1,31 @@ +use std::convert::TryFrom; +use virt::{connect::Connect, domain::Domain;}; + +use crate::errors::Error; + + +/** + * Represents a virtual machine, that's active on some server + */ +pub struct VirtualMachine { + /// The assigned name of the VM + pub name: String, + /// The network address of the physical machine that's hosting this machine + pub host_server: String, + /// Whether or not the VM is active + pub is_active: bool, + /// The libvirtd-assigned UUID + pub uuid: String, + /// The network address of the VM + pub addr: Option, + /// How much RAM (in MB) is assigned to the VM + pub assigned_mem_mb: u64, + /// How many vCPUs are assigned to the VM + pub assigned_cpus: u64, +} + +impl TryFrom for VirtualMachine { + type Error = Error; + + fn try_from(d: Domain) -> Result { + -- cgit v1.2.3