summaryrefslogtreecommitdiffstats
path: root/nova/virt
diff options
context:
space:
mode:
authorMatt Riedemann <mriedem@us.ibm.com>2013-06-15 20:42:42 -0700
committerMatt Riedemann <mriedem@us.ibm.com>2013-06-17 05:35:57 -0700
commite387e7bd34d6389c8c9dc599b93b4b1d8197a38a (patch)
treeb2967a8deb425ac48f1312a6a418893254e90bc0 /nova/virt
parent328b347cd058f1c87d7e32a18d9decc0ba517266 (diff)
downloadnova-e387e7bd34d6389c8c9dc599b93b4b1d8197a38a.tar.gz
nova-e387e7bd34d6389c8c9dc599b93b4b1d8197a38a.tar.xz
nova-e387e7bd34d6389c8c9dc599b93b4b1d8197a38a.zip
Log xml in libvirt _create_domain failures
When an error occurs defining, launching or enabling hairpin mode on a libvirt domain, log the xml for reproduction and analysis. Fixes bug 1183534 Change-Id: Ic8f1d11c5a92779c686b7248895bbc6f2cfdbf0b
Diffstat (limited to 'nova/virt')
-rwxr-xr-xnova/virt/libvirt/driver.py24
1 files changed, 21 insertions, 3 deletions
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index 6cfa2c7c7..90695d1c3 100755
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -2481,10 +2481,28 @@ class LibvirtDriver(driver.ComputeDriver):
use_cow=CONF.use_cow_images)
if xml:
- domain = self._conn.defineXML(xml)
+ try:
+ domain = self._conn.defineXML(xml)
+ except Exception as e:
+ LOG.error(_("An error occurred while trying to define a domain"
+ " with xml: %s") % xml)
+ raise e
+
if power_on:
- domain.createWithFlags(launch_flags)
- self._enable_hairpin(domain.XMLDesc(0))
+ try:
+ domain.createWithFlags(launch_flags)
+ except Exception as e:
+ with excutils.save_and_reraise_exception():
+ LOG.error(_("An error occurred while trying to launch a "
+ "defined domain with xml: %s") %
+ domain.XMLDesc(0))
+
+ try:
+ self._enable_hairpin(domain.XMLDesc(0))
+ except Exception:
+ with excutils.save_and_reraise_exception():
+ LOG.error(_("An error occurred while enabling hairpin mode on "
+ "domain with xml: %s") % domain.XMLDesc(0))
# NOTE(uni): Now the container is running with its own private mount
# namespace and so there is no need to keep the container rootfs