summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2011-12-01 06:08:52 +0000
committerGerrit Code Review <review@openstack.org>2011-12-01 06:08:52 +0000
commit63d323c271e815281167355e8cc4e7c9f0690068 (patch)
tree984ff61418b17234b846af4eff5df23123112605
parent48882c6aa30b768b86abc86c46648366483bc10a (diff)
parent7c11490677bc49086271ee377e6a8076eebe15f6 (diff)
Merge "Fixes bug 767947"
-rw-r--r--nova/tests/test_libvirt.py25
-rw-r--r--nova/virt/libvirt/connection.py3
2 files changed, 27 insertions, 1 deletions
diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py
index 6de5f322c..c6fb5c348 100644
--- a/nova/tests/test_libvirt.py
+++ b/nova/tests/test_libvirt.py
@@ -1024,6 +1024,31 @@ class LibvirtConnTestCase(test.TestCase):
ip = conn.get_host_ip_addr()
self.assertEquals(ip, FLAGS.my_ip)
+ @test.skip_if(missing_libvirt(), "Test requires libvirt")
+ def test_broken_connection(self):
+ for (error, domain) in (
+ (libvirt.VIR_ERR_SYSTEM_ERROR, libvirt.VIR_FROM_REMOTE),
+ (libvirt.VIR_ERR_SYSTEM_ERROR, libvirt.VIR_FROM_RPC)):
+
+ conn = connection.LibvirtConnection(False)
+
+ self.mox.StubOutWithMock(conn, "_wrapped_conn")
+ self.mox.StubOutWithMock(conn._wrapped_conn, "getCapabilities")
+ self.mox.StubOutWithMock(libvirt.libvirtError, "get_error_code")
+ self.mox.StubOutWithMock(libvirt.libvirtError, "get_error_domain")
+
+ conn._wrapped_conn.getCapabilities().AndRaise(
+ libvirt.libvirtError("fake failure"))
+
+ libvirt.libvirtError.get_error_code().AndReturn(error)
+ libvirt.libvirtError.get_error_domain().AndReturn(domain)
+
+ self.mox.ReplayAll()
+
+ self.assertFalse(conn._test_connection())
+
+ self.mox.UnsetStubs()
+
def test_volume_in_mapping(self):
conn = connection.LibvirtConnection(False)
swap = {'device_name': '/dev/sdb',
diff --git a/nova/virt/libvirt/connection.py b/nova/virt/libvirt/connection.py
index 5e9be4ef9..437203e46 100644
--- a/nova/virt/libvirt/connection.py
+++ b/nova/virt/libvirt/connection.py
@@ -235,7 +235,8 @@ class LibvirtConnection(driver.ComputeDriver):
return True
except libvirt.libvirtError as e:
if e.get_error_code() == libvirt.VIR_ERR_SYSTEM_ERROR and \
- e.get_error_domain() == libvirt.VIR_FROM_REMOTE:
+ e.get_error_domain() in (libvirt.VIR_FROM_REMOTE,
+ libvirt.VIR_FROM_RPC):
LOG.debug(_('Connection to libvirt broke'))
return False
raise