diff options
Diffstat (limited to 'nova/tests/unit/virt/libvirt/test_driver.py')
-rw-r--r-- | nova/tests/unit/virt/libvirt/test_driver.py | 30 |
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): |