test libvirt from rust

Signed-off-by: Christine Dodrill <me@christine.website>
This commit is contained in:
Cadey Ratio 2021-06-19 09:51:13 -04:00
parent 94861e5296
commit df8e362034
5 changed files with 48 additions and 3 deletions

17
Cargo.lock generated
View File

@ -20,6 +20,12 @@ dependencies = [
"winapi", "winapi",
] ]
[[package]]
name = "anyhow"
version = "1.0.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "15af2628f6890fe2609a3b91bef4c83450512802e59489f9c1cb1fa5df064a61"
[[package]] [[package]]
name = "arrayvec" name = "arrayvec"
version = "0.5.2" version = "0.5.2"
@ -1882,10 +1888,20 @@ version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
[[package]]
name = "virt"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06ce5cd536aa559d1088ddc531bbf3e55edc5db8ec0a5329dfb17f83a5b469ca"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "waifud" name = "waifud"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"anyhow",
"diesel", "diesel",
"diesel_migrations", "diesel_migrations",
"r2d2_redis", "r2d2_redis",
@ -1901,6 +1917,7 @@ dependencies = [
"tracing-log", "tracing-log",
"tracing-subscriber", "tracing-subscriber",
"uuid 0.8.2", "uuid 0.8.2",
"virt",
] ]
[[package]] [[package]]

View File

@ -9,6 +9,7 @@ repository = "https://github.com/Xe/waifud"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
anyhow = "1"
diesel_migrations = "1" diesel_migrations = "1"
r2d2_redis = "0.14.0" r2d2_redis = "0.14.0"
serde_json = "1" serde_json = "1"
@ -17,6 +18,7 @@ tracing-futures = "0.2"
tracing-log = "0.1" tracing-log = "0.1"
tracing-subscriber = "0.2" tracing-subscriber = "0.2"
uuid = "0.8" uuid = "0.8"
virt = "0.2"
[dependencies.diesel] [dependencies.diesel]
version = "1" version = "1"

View File

@ -14,6 +14,7 @@ in pkgs.mkShell rec {
pkg-config pkg-config
sqliteInteractive sqliteInteractive
diesel-cli diesel-cli
libvirt
# dhall # dhall
dhall dhall

26
src/bin/virt-test.rs Normal file
View File

@ -0,0 +1,26 @@
use anyhow::Result;
use virt::connect::Connect;
fn list_all_vms(uri: &str) -> Result<()> {
let mut conn = Connect::open(uri)?;
for dom in conn.list_all_domains(0)? {
// if dom.is_active().unwrap() {
println!(
"{:<30} {:<15}{:<6}{}",
uri,
dom.get_name()?,
if dom.is_active()? { "on" } else { "off" },
dom.get_uuid_string()?
);
// }
}
conn.close()?;
Ok(())
}
fn main() {
for host in &["kos-mos", "logos", "ontos", "pneuma"] {
list_all_vms(&format!("qemu+ssh://root@{}/system", host)).unwrap()
}
}

View File

@ -3,7 +3,7 @@ extern crate diesel_migrations;
#[macro_use] #[macro_use]
extern crate tracing; extern crate tracing;
use color_eyre::eyre::{eyre, Result}; use anyhow::{anyhow, Result};
use diesel::prelude::*; use diesel::prelude::*;
use std::env; use std::env;
@ -12,11 +12,10 @@ diesel_migrations::embed_migrations!("./migrations");
pub fn establish_connection() -> Result<SqliteConnection> { pub fn establish_connection() -> Result<SqliteConnection> {
let database_url = env::var("DATABASE_URL").unwrap_or("./var/waifud.db".to_string()); let database_url = env::var("DATABASE_URL").unwrap_or("./var/waifud.db".to_string());
SqliteConnection::establish(&database_url) SqliteConnection::establish(&database_url)
.map_err(|why| eyre!("can't connect to {}: {}", database_url, why)) .map_err(|why| anyhow!("can't connect to {}: {}", database_url, why))
} }
fn main() -> Result<()> { fn main() -> Result<()> {
color_eyre::install()?;
tracing_subscriber::fmt::init(); tracing_subscriber::fmt::init();
info!("{} migrator starting up", waifud::APPLICATION_NAME); info!("{} migrator starting up", waifud::APPLICATION_NAME);