blob: e58db3d2349cd728b7a36b52a3ca0503dc58dc55 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
use crate::config::Configuration;
use virt::connect::Connect;
pub fn list(_config: &Configuration) -> anyhow::Result<()> {
let conn = Connect::open("qemu:///system")?;
let domains = conn.list_all_domains(0)?;
for domain in domains {
let name = domain.get_name()?;
let (state, _) = domain.get_state()?;
let state = state_name(state);
println!("{} {}", name, state);
}
Ok(())
}
fn state_name(state: virt::domain::DomainState) -> String {
let name = match state {
virt::domain::VIR_DOMAIN_NOSTATE => "none",
virt::domain::VIR_DOMAIN_RUNNING => "running",
virt::domain::VIR_DOMAIN_BLOCKED => "blocked",
virt::domain::VIR_DOMAIN_PAUSED => "paused",
virt::domain::VIR_DOMAIN_SHUTDOWN => "shutdown",
virt::domain::VIR_DOMAIN_SHUTOFF => "shutoff",
virt::domain::VIR_DOMAIN_CRASHED => "crashed",
virt::domain::VIR_DOMAIN_PMSUSPENDED => "power management suspended",
_ => "unknown",
};
name.to_string()
}
|