summaryrefslogtreecommitdiff
path: root/src/libvirt.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/libvirt.rs')
-rw-r--r--src/libvirt.rs18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/libvirt.rs b/src/libvirt.rs
index c93bd9f..7d8235d 100644
--- a/src/libvirt.rs
+++ b/src/libvirt.rs
@@ -95,9 +95,20 @@ impl Libvirt {
Ok(())
}
+ pub fn trigger_shutdown(&self, name: &str) -> Result<(), VirtError> {
+ if let Some(domain) = self.get_domain(name)? {
+ debug!("asking {} to shut down", name);
+ if domain.is_active()? {
+ domain.shutdown()?;
+ }
+ }
+ Ok(())
+ }
+
pub fn shutdown(&self, name: &str) -> Result<(), VirtError> {
if let Some(domain) = self.get_domain(name)? {
- domain.shutdown()?;
+ debug!("shutting down {}", name);
+ self.trigger_shutdown(name)?;
wait_until_inactive(&domain, name);
}
Ok(())
@@ -105,10 +116,7 @@ impl Libvirt {
pub fn delete(&self, name: &str, image: &Path) -> Result<(), VirtError> {
if let Some(domain) = self.get_domain(name)? {
- debug!("shutting down {}", name);
- domain.shutdown().ok();
-
- wait_until_inactive(&domain, name);
+ self.shutdown(name)?;
debug!("undefine {}", name);
domain.undefine()?;