diff options
| author | Jenkins <jenkins@review.openstack.org> | 2011-12-01 06:08:52 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2011-12-01 06:08:52 +0000 |
| commit | 63d323c271e815281167355e8cc4e7c9f0690068 (patch) | |
| tree | 984ff61418b17234b846af4eff5df23123112605 | |
| parent | 48882c6aa30b768b86abc86c46648366483bc10a (diff) | |
| parent | 7c11490677bc49086271ee377e6a8076eebe15f6 (diff) | |
Merge "Fixes bug 767947"
| -rw-r--r-- | nova/tests/test_libvirt.py | 25 | ||||
| -rw-r--r-- | nova/virt/libvirt/connection.py | 3 |
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 |
