summaryrefslogtreecommitdiff
path: root/src/cmd/delete.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/delete.rs')
-rw-r--r--src/cmd/delete.rs60
1 files changed, 31 insertions, 29 deletions
diff --git a/src/cmd/delete.rs b/src/cmd/delete.rs
index ac8c5b4..3f60e27 100644
--- a/src/cmd/delete.rs
+++ b/src/cmd/delete.rs
@@ -13,39 +13,41 @@ pub enum DeleteError {
IoError(#[from] std::io::Error),
}
-pub fn delete(spec: &Specification) -> Result<(), DeleteError> {
- info!("deleting virtual machine {}", spec.name);
-
- debug!("connecting to libvirtd");
- let conn = Connect::open("qemu:///system")?;
-
- debug!("listing all domains");
- let domains = conn.list_all_domains(0)?;
-
- for domain in domains {
- debug!("considering {}", domain.get_name()?);
- if domain.get_name()? == spec.name {
- debug!("shutdown {}", spec.name);
- domain.shutdown().ok();
-
- let briefly = Duration::from_millis(1000);
- loop {
- thread::sleep(briefly);
- match domain.is_active() {
- Ok(true) => (),
- Ok(false) => break,
- Err(err) => {
- debug!("is_active: {}", err);
+pub fn delete(specs: &[Specification]) -> Result<(), DeleteError> {
+ for spec in specs {
+ info!("deleting virtual machine {}", spec.name);
+
+ debug!("connecting to libvirtd");
+ let conn = Connect::open("qemu:///system")?;
+
+ debug!("listing all domains");
+ let domains = conn.list_all_domains(0)?;
+
+ for domain in domains {
+ debug!("considering {}", domain.get_name()?);
+ if domain.get_name()? == spec.name {
+ debug!("shutdown {}", spec.name);
+ domain.shutdown().ok();
+
+ let briefly = Duration::from_millis(1000);
+ loop {
+ thread::sleep(briefly);
+ match domain.is_active() {
+ Ok(true) => (),
+ Ok(false) => break,
+ Err(err) => {
+ debug!("is_active: {}", err);
+ }
}
+ debug!("{} is still running", spec.name);
}
- debug!("{} is still running", spec.name);
- }
- debug!("undefine {}", spec.name);
- domain.undefine()?;
+ debug!("undefine {}", spec.name);
+ domain.undefine()?;
- debug!("removing image file {}", spec.image.display());
- std::fs::remove_file(&spec.image)?;
+ debug!("removing image file {}", spec.image.display());
+ std::fs::remove_file(&spec.image)?;
+ }
}
}
Ok(())