From e1580f2f99e8900aabdb5a049198adcc5af86229 Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Fri, 30 Mar 2012 10:05:45 -0700 Subject: Handle not found in check for disk availability * includes failing test * fixes bug 968339 Change-Id: I92951a9d2f2027464e915608e8aaf205543f3c93 --- nova/tests/test_libvirt.py | 16 ++++++++++++++++ nova/virt/libvirt/connection.py | 3 +++ 2 files changed, 19 insertions(+) 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 -- cgit