Merge "Add support for vd2 user context to other drivers"

This commit is contained in:
Jenkins
2016-08-31 02:40:59 +00:00
committed by Gerrit Code Review
12 changed files with 90 additions and 67 deletions
+12 -6
View File
@@ -444,7 +444,7 @@ class VMOpsTestCase(test_base.HyperVBaseTestCase):
mock_configdrive_required.assert_called_once_with(mock_instance)
if configdrive_required:
mock_create_config_drive.assert_called_once_with(
mock_instance, [mock.sentinel.FILE],
self.context, mock_instance, [mock.sentinel.FILE],
mock.sentinel.PASSWORD,
mock.sentinel.INFO)
mock_attach_config_drive.assert_called_once_with(
@@ -687,19 +687,24 @@ class VMOpsTestCase(test_base.HyperVBaseTestCase):
if config_drive_format != self.ISO9660:
self.assertRaises(exception.ConfigDriveUnsupportedFormat,
self._vmops._create_config_drive,
mock_instance, [mock.sentinel.FILE],
self.context,
mock_instance,
[mock.sentinel.FILE],
mock.sentinel.PASSWORD,
mock.sentinel.NET_INFO,
rescue)
elif side_effect is processutils.ProcessExecutionError:
self.assertRaises(processutils.ProcessExecutionError,
self._vmops._create_config_drive,
mock_instance, [mock.sentinel.FILE],
self.context,
mock_instance,
[mock.sentinel.FILE],
mock.sentinel.PASSWORD,
mock.sentinel.NET_INFO,
rescue)
else:
path = self._vmops._create_config_drive(mock_instance,
path = self._vmops._create_config_drive(self.context,
mock_instance,
[mock.sentinel.FILE],
mock.sentinel.PASSWORD,
mock.sentinel.NET_INFO,
@@ -707,7 +712,8 @@ class VMOpsTestCase(test_base.HyperVBaseTestCase):
mock_InstanceMetadata.assert_called_once_with(
mock_instance, content=[mock.sentinel.FILE],
extra_md={'admin_pass': mock.sentinel.PASSWORD},
network_info=mock.sentinel.NET_INFO)
network_info=mock.sentinel.NET_INFO,
request_context=self.context)
mock_get_configdrive_path.assert_has_calls(
expected_get_configdrive_path_calls)
mock_ConfigDriveBuilder.assert_called_with(
@@ -1330,7 +1336,7 @@ class VMOpsTestCase(test_base.HyperVBaseTestCase):
drive_type=constants.DISK)
mock_detach_config_drive.assert_called_once_with(mock_instance.name)
mock_create_config_drive.assert_called_once_with(
mock_instance,
self.context, mock_instance,
injected_files=None,
admin_password=mock.sentinel.rescue_password,
network_info=mock.sentinel.network_info,
+9 -6
View File
@@ -893,7 +893,8 @@ class IronicDriverTestCase(test.NoDBTestCase):
self._test_spawn()
# assert configdrive was generated
mock_configdrive.assert_called_once_with(mock.ANY, mock.ANY, mock.ANY,
extra_md={}, files=[])
mock.ANY, extra_md={},
files=[])
@mock.patch.object(configdrive, 'required_by')
@mock.patch.object(loopingcall, 'FixedIntervalLoopingCall')
@@ -1722,11 +1723,12 @@ class IronicDriverGenerateConfigDriveTestCase(test.NoDBTestCase):
mock_instance_meta.return_value = 'fake-instance'
mock_make_drive = mock.MagicMock(make_drive=lambda *_: None)
mock_cd_builder.return_value.__enter__.return_value = mock_make_drive
self.driver._generate_configdrive(self.instance, self.node,
self.network_info)
self.driver._generate_configdrive(None, self.instance,
self.node, self.network_info)
mock_cd_builder.assert_called_once_with(instance_md='fake-instance')
mock_instance_meta.assert_called_once_with(self.instance,
network_info=self.network_info, extra_md={}, content=None)
network_info=self.network_info, extra_md={}, content=None,
request_context=None)
def test_generate_configdrive_fail(self, mock_cd_builder,
mock_instance_meta):
@@ -1737,12 +1739,13 @@ class IronicDriverGenerateConfigDriveTestCase(test.NoDBTestCase):
mock_cd_builder.return_value.__enter__.return_value = mock_make_drive
self.assertRaises(exception.ConfigDriveMountFailed,
self.driver._generate_configdrive,
self.driver._generate_configdrive, None,
self.instance, self.node, self.network_info)
mock_cd_builder.assert_called_once_with(instance_md='fake-instance')
mock_instance_meta.assert_called_once_with(self.instance,
network_info=self.network_info, extra_md={}, content=None)
network_info=self.network_info, extra_md={}, content=None,
request_context=None)
class HashRingTestCase(test.NoDBTestCase):
@@ -97,7 +97,7 @@ class ConfigDriveTestCase(test.NoDBTestCase):
class FakeInstanceMetadata(object):
def __init__(self, instance, content=None, extra_md=None,
network_info=None):
network_info=None, request_context=None):
pass
def metadata_for_config_drive(self):
@@ -141,15 +141,16 @@ class ConfigDriveTestCase(test.NoDBTestCase):
self.test_instance.config_drive = 'True'
self.mox.StubOutWithMock(vmops.VMwareVMOps, '_create_config_drive')
self.mox.StubOutWithMock(vmops.VMwareVMOps, '_attach_cdrom_to_vm')
self.conn._vmops._create_config_drive(self.test_instance,
mox.IgnoreArg(),
mox.IgnoreArg(),
mox.IgnoreArg(),
mox.IgnoreArg(),
mox.IgnoreArg(),
mox.IgnoreArg(),
mox.IgnoreArg()
).AndReturn('[ds1] fake.iso')
self.conn._vmops._create_config_drive(mox.IgnoreArg(),
self.test_instance,
mox.IgnoreArg(),
mox.IgnoreArg(),
mox.IgnoreArg(),
mox.IgnoreArg(),
mox.IgnoreArg(),
mox.IgnoreArg(),
mox.IgnoreArg()
).AndReturn('[ds1] fake.iso')
self.conn._vmops._attach_cdrom_to_vm(mox.IgnoreArg(),
mox.IgnoreArg(),
mox.IgnoreArg(),
+8 -6
View File
@@ -925,15 +925,16 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
vm_ref = mock.Mock()
mock_create_config_drive.return_value = "fake_iso_path"
self._vmops._configure_config_drive(
self._instance, vm_ref, self._dc_info, self._ds,
self._context, self._instance, vm_ref, self._dc_info, self._ds,
injected_files, admin_password, network_info)
upload_iso_path = self._ds.build_path("fake_iso_path")
mock_get_inventory_path.assert_called_once_with(self._session.vim,
self._dc_info.ref)
mock_create_config_drive.assert_called_once_with(self._instance,
injected_files, admin_password, network_info, self._ds.name,
'fake_path', self._instance.uuid, "Fake-CookieJar")
mock_create_config_drive.assert_called_once_with(
self._context, self._instance, injected_files, admin_password,
network_info, self._ds.name, 'fake_path', self._instance.uuid,
"Fake-CookieJar")
mock_attach_cdrom_to_vm.assert_called_once_with(
vm_ref, self._instance, self._ds.ref, str(upload_iso_path))
@@ -1550,8 +1551,9 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
if config_drive:
mock_configure_config_drive.assert_called_once_with(
self._instance, 'fake_vm_ref', self._dc_info,
self._ds, 'fake_files', 'password', network_info)
self._context, self._instance, 'fake_vm_ref',
self._dc_info, self._ds, 'fake_files', 'password',
network_info)
mock_update_vnic_index.assert_called_once_with(
self._context, self._instance, network_info)
+5 -4
View File
@@ -158,8 +158,9 @@ class GenerateConfigDriveTestCase(VMUtilsTestBase):
with mock.patch.object(six.moves.builtins, 'open') as mock_open:
mock_open.return_value.__enter__.return_value = 'open_fd'
vm_utils.generate_configdrive('session', 'instance', 'vm_ref',
'userdevice', 'network_info')
vm_utils.generate_configdrive('session', 'context', 'instance',
'vm_ref', 'userdevice',
'network_info')
mock_size.assert_called_with('/mock/configdrive.vhd')
mock_open.assert_called_with('/mock/configdrive.vhd')
@@ -168,7 +169,7 @@ class GenerateConfigDriveTestCase(VMUtilsTestBase):
'/mock/configdrive.vhd')
mock_instance_metadata.assert_called_with(
'instance', content=None, extra_md={},
network_info='network_info')
network_info='network_info', request_context='context')
mock_stream.assert_called_with('session', 'instance', 'vhd',
'open_fd', 100, 'vdi_ref')
@@ -180,7 +181,7 @@ class GenerateConfigDriveTestCase(VMUtilsTestBase):
def test_vdi_cleaned_up(self, mock_instance_metadata, mock_create,
mock_find_sr, mock_destroy):
self.assertRaises(test.TestingException, vm_utils.generate_configdrive,
'session', None, None, None, None)
'session', None, None, None, None, None)
mock_destroy.assert_called_once_with('session', 'vdi_ref')
+7 -6
View File
@@ -208,7 +208,7 @@ class VMOpsTestCase(VMOpsTestBase):
{'properties': {'auto_disk_config': 'false'}})
vdis = {'root': {'ref': 'fake-ref'}}
self.assertRaises(test.TestingException, self._vmops._attach_disks,
instance, image_meta=image_meta, vm_ref=None,
ctxt, instance, image_meta=image_meta, vm_ref=None,
name_label=None, vdis=vdis, disk_image_type='fake',
network_info=[], rescue=True)
self.assertFalse(try_auto_config.called)
@@ -224,7 +224,7 @@ class VMOpsTestCase(VMOpsTestBase):
{'properties': {'auto_disk_config': 'true'}})
vdis = {'root': {'ref': 'fake-ref'}}
self.assertRaises(test.TestingException, self._vmops._attach_disks,
instance, image_meta=image_meta, vm_ref=None,
ctxt, instance, image_meta=image_meta, vm_ref=None,
name_label=None, vdis=vdis, disk_image_type='fake',
network_info=[], rescue=True)
try_auto_config.assert_called_once_with(self._vmops._session,
@@ -397,8 +397,8 @@ class SpawnTestCase(VMOpsTestBase):
step += 1
self.vmops._update_instance_progress(context, instance, step, steps)
self.vmops._attach_disks(instance, image_meta, vm_ref, name_label,
vdis, di_type, network_info, rescue,
self.vmops._attach_disks(context, instance, image_meta, vm_ref,
name_label, vdis, di_type, network_info, rescue,
admin_password, injected_files)
if attach_pci_dev:
fake_dev = {
@@ -579,8 +579,9 @@ class SpawnTestCase(VMOpsTestBase):
if resize_instance:
self.vmops._resize_up_vdis(instance, vdis)
self.vmops._attach_disks(instance, image_meta, vm_ref, name_label,
vdis, di_type, network_info, False, None, None)
self.vmops._attach_disks(context, instance, image_meta, vm_ref,
name_label, vdis, di_type, network_info, False,
None, None)
self.vmops._attach_mapped_block_devices(instance, block_device_info)
pci_manager.get_instance_pci_devs(instance).AndReturn([])
+6 -4
View File
@@ -2356,8 +2356,9 @@ class XenAPIAutoDiskConfigTestCase(stubs.XenAPITestBase):
'properties': {'vm_mode': 'xen'}})
self.mox.ReplayAll()
self.conn._vmops._attach_disks(instance, image_meta, vm_ref,
instance['name'], vdis, disk_image_type, "fake_nw_inf")
self.conn._vmops._attach_disks(self.context, instance, image_meta,
vm_ref, instance['name'], vdis, disk_image_type,
"fake_nw_inf")
self.assertEqual(marker["partition_called"], called)
@@ -2477,8 +2478,9 @@ class XenAPIGenerateLocal(stubs.XenAPITestBase):
{'id': uuids.image_id,
'disk_format': 'vhd',
'properties': {'vm_mode': 'xen'}})
self.conn._vmops._attach_disks(instance, image_meta, vm_ref,
instance['name'], vdis, disk_image_type, "fake_nw_inf")
self.conn._vmops._attach_disks(self.context, instance, image_meta,
vm_ref, instance['name'], vdis, disk_image_type,
"fake_nw_inf")
self.assertTrue(self.called)
def test_generate_swap(self):
+8 -7
View File
@@ -295,7 +295,8 @@ class VMOps(object):
self._save_device_metadata(context, instance, block_device_info)
if configdrive.required_by(instance):
configdrive_path = self._create_config_drive(instance,
configdrive_path = self._create_config_drive(context,
instance,
injected_files,
admin_password,
network_info)
@@ -440,8 +441,8 @@ class VMOps(object):
raise exception.InstanceUnacceptable(instance_id=instance_id,
reason=reason)
def _create_config_drive(self, instance, injected_files, admin_password,
network_info, rescue=False):
def _create_config_drive(self, context, instance, injected_files,
admin_password, network_info, rescue=False):
if CONF.config_drive_format != 'iso9660':
raise exception.ConfigDriveUnsupportedFormat(
format=CONF.config_drive_format)
@@ -452,10 +453,9 @@ class VMOps(object):
if admin_password and CONF.hyperv.config_drive_inject_password:
extra_md['admin_pass'] = admin_password
inst_md = instance_metadata.InstanceMetadata(instance,
content=injected_files,
extra_md=extra_md,
network_info=network_info)
inst_md = instance_metadata.InstanceMetadata(
instance, content=injected_files, extra_md=extra_md,
network_info=network_info, request_context=context)
configdrive_path_iso = self._pathutils.get_configdrive_path(
instance.name, constants.DVD_FORMAT, rescue=rescue)
@@ -822,6 +822,7 @@ class VMOps(object):
if configdrive.required_by(instance):
self._detach_config_drive(instance.name)
rescue_configdrive_path = self._create_config_drive(
context,
instance,
injected_files=None,
admin_password=rescue_password,
+4 -3
View File
@@ -684,7 +684,7 @@ class IronicDriver(virt_driver.ComputeDriver):
ports = self.ironicclient.call("node.list_ports", node.uuid)
return set([p.address for p in ports])
def _generate_configdrive(self, instance, node, network_info,
def _generate_configdrive(self, context, instance, node, network_info,
extra_md=None, files=None):
"""Generate a config drive.
@@ -701,7 +701,8 @@ class IronicDriver(virt_driver.ComputeDriver):
extra_md = {}
i_meta = instance_metadata.InstanceMetadata(instance,
content=files, extra_md=extra_md, network_info=network_info)
content=files, extra_md=extra_md, network_info=network_info,
request_context=context)
with tempfile.NamedTemporaryFile() as uncompressed:
with configdrive.ConfigDriveBuilder(instance_md=i_meta) as cdb:
@@ -788,7 +789,7 @@ class IronicDriver(virt_driver.ComputeDriver):
try:
configdrive_value = self._generate_configdrive(
instance, node, network_info, extra_md=extra_md,
context, instance, node, network_info, extra_md=extra_md,
files=injected_files)
except Exception as e:
with excutils.save_and_reraise_exception():
+11 -8
View File
@@ -211,12 +211,14 @@ class VMwareVMOps(object):
self._extend_virtual_disk(instance, size_in_kb,
root_vmdk_path, dc_info.ref)
def _configure_config_drive(self, instance, vm_ref, dc_info, datastore,
injected_files, admin_password, network_info):
def _configure_config_drive(self, context, instance, vm_ref, dc_info,
datastore, injected_files, admin_password,
network_info):
session_vim = self._session.vim
cookies = session_vim.client.options.transport.cookiejar
dc_path = vutil.get_inventory_path(session_vim, dc_info.ref)
uploaded_iso_path = self._create_config_drive(instance,
uploaded_iso_path = self._create_config_drive(context,
instance,
injected_files,
admin_password,
network_info,
@@ -803,7 +805,7 @@ class VMwareVMOps(object):
if configdrive.required_by(instance):
self._configure_config_drive(
instance, vm_ref, vi.dc_info, vi.datastore,
context, instance, vm_ref, vi.dc_info, vi.datastore,
injected_files, admin_password, network_info)
# Rename the VM. This is done after the spec is created to ensure
@@ -827,9 +829,9 @@ class VMwareVMOps(object):
raise exception.UnsupportedHardware(model=adapter_type,
virt="vmware")
def _create_config_drive(self, instance, injected_files, admin_password,
network_info, data_store_name, dc_name,
upload_folder, cookies):
def _create_config_drive(self, context, instance, injected_files,
admin_password, network_info, data_store_name,
dc_name, upload_folder, cookies):
if CONF.config_drive_format != 'iso9660':
reason = (_('Invalid config_drive_format "%s"') %
CONF.config_drive_format)
@@ -843,7 +845,8 @@ class VMwareVMOps(object):
inst_md = instance_metadata.InstanceMetadata(instance,
content=injected_files,
extra_md=extra_md,
network_info=network_info)
network_info=network_info,
request_context=context)
try:
with configdrive.ConfigDriveBuilder(instance_md=inst_md) as cdb:
with utils.tempdir() as tmp_path:
+2 -2
View File
@@ -1107,7 +1107,7 @@ def generate_iso_blank_root_disk(session, instance, vm_ref, userdevice,
'user', size_gb * 1024, CONF.default_ephemeral_format)
def generate_configdrive(session, instance, vm_ref, userdevice,
def generate_configdrive(session, context, instance, vm_ref, userdevice,
network_info, admin_password=None, files=None):
sr_ref = safe_find_sr(session)
vdi_ref = create_vdi(session, sr_ref, instance, 'config-2',
@@ -1118,7 +1118,7 @@ def generate_configdrive(session, instance, vm_ref, userdevice,
extra_md['admin_pass'] = admin_password
inst_md = instance_metadata.InstanceMetadata(
instance, content=files, extra_md=extra_md,
network_info=network_info)
network_info=network_info, request_context=context)
with configdrive.ConfigDriveBuilder(instance_md=inst_md) as cdb:
with utils.tempdir() as tmp_path:
tmp_file = os.path.join(tmp_path, 'configdrive')
+7 -5
View File
@@ -455,8 +455,9 @@ class VMOps(object):
if resize:
self._resize_up_vdis(instance, vdis)
self._attach_disks(instance, image_meta, vm_ref, name_label, vdis,
disk_image_type, network_info, rescue,
self._attach_disks(context, instance, image_meta, vm_ref,
name_label, vdis, disk_image_type,
network_info, rescue,
admin_password, injected_files)
if not first_boot:
self._attach_mapped_block_devices(instance,
@@ -717,8 +718,8 @@ class VMOps(object):
use_pv_kernel, device_id)
return vm_ref
def _attach_disks(self, instance, image_meta, vm_ref, name_label, vdis,
disk_image_type, network_info, rescue=False,
def _attach_disks(self, context, instance, image_meta, vm_ref, name_label,
vdis, disk_image_type, network_info, rescue=False,
admin_password=None, files=None):
flavor = instance.get_flavor()
@@ -800,7 +801,8 @@ class VMOps(object):
# Attach (optional) configdrive v2 disk
if configdrive.required_by(instance):
vm_utils.generate_configdrive(self._session, instance, vm_ref,
vm_utils.generate_configdrive(self._session, context,
instance, vm_ref,
DEVICE_CONFIGDRIVE,
network_info,
admin_password=admin_password,