libvirt: inject files when config drive is not requested

This patch fixes a regression introduced by [1], which made
files to be injected into the root disk even if the
config disk is not in use.

[1] https://review.openstack.org/#/c/303335

Closes-bug: #1597521
Change-Id: I990f19943f36356760b7bf425bc59901c9cdc1de
This commit is contained in:
Vladik Romanovsky 2016-09-08 14:14:08 -04:00
parent f0bcc0de21
commit 691eb01b59
2 changed files with 20 additions and 1 deletions

View File

@ -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")

View File

@ -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