libvirt: Handle InstanceNotFound exception

In 'ad1c7ac2', we stopped returning NovaException from certain libvirt
operations in favour of more specific exception types. Unfortunately, as
part of this changeover we missed an exception type. Correct this
oversight.

Change-Id: I376ebda6c4626df8be2e827bc735116a90528654
Resolves-bug: #1667040
This commit is contained in:
Stephen Finucane 2017-02-22 13:02:47 -05:00
parent 486b90b24e
commit 434a953190
2 changed files with 12 additions and 1 deletions

View File

@ -5965,6 +5965,17 @@ class LibvirtConnTestCase(test.NoDBTestCase):
("disk", "virtio", "vdb"),
("disk", "virtio", "vdc")))
@mock.patch.object(host.Host, 'get_guest')
def test_instance_exists(self, mock_get_guest):
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
self.assertTrue(drvr.instance_exists(None))
mock_get_guest.side_effect = exception.InstanceNotFound
self.assertFalse(drvr.instance_exists(None))
mock_get_guest.side_effect = exception.InternalError
self.assertFalse(drvr.instance_exists(None))
@mock.patch.object(host.Host, "list_instance_domains")
def test_list_instances(self, mock_list):
vm1 = FakeVirtDomain(id=3, name="instance00000001")

View File

@ -726,7 +726,7 @@ class LibvirtDriver(driver.ComputeDriver):
try:
self._host.get_guest(instance)
return True
except exception.InternalError:
except (exception.InternalError, exception.InstanceNotFound):
return False
def list_instances(self):