From 434a953190647c398160ca815e7ce3c0796fc5a4 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Wed, 22 Feb 2017 13:02:47 -0500 Subject: [PATCH] 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 --- nova/tests/unit/virt/libvirt/test_driver.py | 11 +++++++++++ nova/virt/libvirt/driver.py | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index 17cb95a4ae9c..d6fe2046daa5 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -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") diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index d1660db29b9a..04cc2820a21f 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -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):