summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/tests/test_libvirt.py16
-rw-r--r--nova/virt/libvirt/connection.py3
2 files changed, 19 insertions, 0 deletions
diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py
index 1a41d1b27..4eea7b0b3 100644
--- a/nova/tests/test_libvirt.py
+++ b/nova/tests/test_libvirt.py
@@ -1399,6 +1399,22 @@ class LibvirtConnTestCase(test.TestCase):
"uuid": "875a8070-d0b9-4949-8b31-104d125c9a64"}
conn.destroy(instance, [])
+ def test_available_least_handles_missing(self):
+ """Ensure destroy calls managedSaveRemove for saved instance"""
+ conn = connection.LibvirtConnection(False)
+
+ def list_instances():
+ return ['fake']
+ self.stubs.Set(conn, 'list_instances', list_instances)
+
+ def get_info(instance_name):
+ raise exception.InstanceNotFound()
+ self.stubs.Set(conn, 'get_instance_disk_info', get_info)
+
+ result = conn.get_disk_available_least()
+ space = fake_libvirt_utils.get_fs_info(FLAGS.instances_path)['free']
+ self.assertEqual(result, space / 1024 ** 3)
+
class HostStateTestCase(test.TestCase):
diff --git a/nova/virt/libvirt/connection.py b/nova/virt/libvirt/connection.py
index caa912d98..08a4a6fad 100644
--- a/nova/virt/libvirt/connection.py
+++ b/nova/virt/libvirt/connection.py
@@ -2376,6 +2376,9 @@ class LibvirtConnection(driver.ComputeDriver):
locals())
else:
raise
+ except exception.InstanceNotFound:
+ # Instance was deleted during the check so ignore it
+ pass
# Disk available least size
available_least_size = dk_sz_gb * (1024 ** 3) - instances_sz