diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index 38d9fe994a12..38884c38f329 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -15959,6 +15959,24 @@ class LibvirtDriverTestCase(test.NoDBTestCase): instance['image_ref'] = 'uuid' self.assertFalse(func(instance, disk_mapping)) + @mock.patch( + 'nova.virt.libvirt.driver.LibvirtDriver._try_fetch_image_cache') + @mock.patch('nova.virt.libvirt.driver.LibvirtDriver._inject_data') + @mock.patch('nova.virt.libvirt.driver.imagecache') + def test_data_not_injects_with_configdrive(self, mock_image, mock_inject, + mock_fetch): + self.flags(inject_partition=-1, group='libvirt') + + drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) + # config_drive is True by default, configdrive.required_by() + # returns True + instance_ref = self._create_instance() + disk_images = {'image_id': None} + + drvr._create_and_inject_local_root(self.context, instance_ref, False, + '', disk_images, [], None, [], True, None) + self.assertFalse(mock_inject.called) + @mock.patch('nova.virt.netutils.get_injected_network_template') @mock.patch('nova.virt.disk.api.inject_data') @mock.patch.object(libvirt_driver.LibvirtDriver, "_conn") diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index 2bec30b64cd4..45f3efedfda7 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -3044,7 +3044,8 @@ class LibvirtDriver(driver.ComputeDriver): network_info, admin_pass, files, inject_files, fallback_from_host): # File injection only if needed - need_inject = inject_files and CONF.libvirt.inject_partition != -2 + need_inject = (not configdrive.required_by(instance) and + inject_files and CONF.libvirt.inject_partition != -2) # NOTE(ndipanov): Even if disk_mapping was passed in, which # currently happens only on rescue - we still don't want to