summaryrefslogtreecommitdiff
path: root/nova/tests/unit/virt/libvirt/test_driver.py
diff options
context:
space:
mode:
Diffstat (limited to 'nova/tests/unit/virt/libvirt/test_driver.py')
-rw-r--r--nova/tests/unit/virt/libvirt/test_driver.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py
index 47b53e7cfb..daf4c128d9 100644
--- a/nova/tests/unit/virt/libvirt/test_driver.py
+++ b/nova/tests/unit/virt/libvirt/test_driver.py
@@ -12309,6 +12309,36 @@ class LibvirtConnTestCase(test.NoDBTestCase):
self._test_get_guest_config_parallels_volume(vm_mode.EXE, 4)
self._test_get_guest_config_parallels_volume(vm_mode.HVM, 6)
+ def test_get_guest_disk_config_rbd_older_config_drive_fall_back(self):
+ # New config drives are stored in rbd but existing instances have
+ # config drives in the old location under the instances path.
+ # Test that the driver falls back to 'raw' for config drive if it
+ # doesn't exist in rbd.
+ self.flags(images_type='rbd', group='libvirt')
+ drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
+ drvr.image_backend = mock.Mock()
+ mock_rbd_image = mock.Mock()
+ mock_raw_image = mock.Mock()
+ mock_raw_image.libvirt_info.return_value = mock.sentinel.diskconfig
+ drvr.image_backend.image.side_effect = [mock_rbd_image,
+ mock_raw_image]
+ mock_rbd_image.check_image_exists.return_value = False
+ instance = objects.Instance()
+ disk_mapping = {'disk.config': {'bus': 'ide',
+ 'dev': 'hdd',
+ 'type': 'file'}}
+ flavor = objects.Flavor(extra_specs={})
+
+ diskconfig = drvr._get_guest_disk_config(
+ instance, 'disk.config', disk_mapping, flavor,
+ drvr._get_disk_config_image_type())
+
+ self.assertEqual(2, drvr.image_backend.image.call_count)
+ call1 = mock.call(instance, 'disk.config', 'rbd')
+ call2 = mock.call(instance, 'disk.config', 'raw')
+ drvr.image_backend.image.assert_has_calls([call1, call2])
+ self.assertEqual(mock.sentinel.diskconfig, diskconfig)
+
class HostStateTestCase(test.NoDBTestCase):