Not implicitly set vol_device_name to vda
Using a scsi decorated image with: hw_disk_bus='scsi' hw_scsi_model='virtio-scsi' This solve the case where an instance is launched with 'image' selected as boot source with a new volume. This will result in /dev/vda instead of /dev/sda as it should. Not specifying device name in setFinalSpecBootImageToVolume() leaves the decision to nova to determine it. Example: ------- VM boot volume without scsi meta data decoration: Attached To 0a0cd660-7ce3-4033-9983-2e1099edc5f0 on /dev/vda VM boot volume with scsi meta data decoration: Attached To 91f50dbc-8bdf-4293-84ea-fc5df27b5ee4 on /dev/sda -------- Note: This commit doesn't address cases for where instances are launched using existing volume and snapshot, this will involve more work to migrate the code from BDMv1 to BDMv2. Closes-Bug #1560965 Change-Id: I9d114c2c2e6736a8f1a8092afa568f930b656f09
This commit is contained in:
parent
e649d6b409
commit
4788c4d2f5
@ -773,11 +773,9 @@
|
||||
function setFinalSpecBootImageToVolume(finalSpec) {
|
||||
if (finalSpec.vol_create) {
|
||||
// Specify null to get Autoselection (not empty string)
|
||||
var deviceName = finalSpec.vol_device_name ? finalSpec.vol_device_name : null;
|
||||
finalSpec.block_device_mapping_v2 = [];
|
||||
finalSpec.block_device_mapping_v2.push(
|
||||
{
|
||||
'device_name': deviceName,
|
||||
'source_type': bootSourceTypes.IMAGE,
|
||||
'destination_type': bootSourceTypes.VOLUME,
|
||||
'delete_on_termination': finalSpec.vol_delete_on_instance_delete,
|
||||
|
@ -914,7 +914,6 @@
|
||||
|
||||
it('sets volume options appropriately', function() {
|
||||
expect(model.newInstanceSpec.vol_create).toBe(false);
|
||||
expect(model.newInstanceSpec.vol_device_name).toBe('vda');
|
||||
expect(model.newInstanceSpec.vol_delete_on_instance_delete).toBe(false);
|
||||
expect(model.newInstanceSpec.vol_size).toBe(1);
|
||||
});
|
||||
@ -937,7 +936,6 @@
|
||||
model.newInstanceSpec.scheduler_hints = {};
|
||||
model.newInstanceSpec.vol_create = true;
|
||||
model.newInstanceSpec.vol_delete_on_instance_delete = true;
|
||||
model.newInstanceSpec.vol_device_name = "volTestName";
|
||||
model.newInstanceSpec.vol_size = 10;
|
||||
model.newInstanceSpec.server_groups = [];
|
||||
|
||||
@ -973,7 +971,6 @@
|
||||
it('should set final spec in format required for Block Device Mapping v2', function() {
|
||||
var finalSpec = model.createInstance();
|
||||
var expectedBlockDevice = [{
|
||||
device_name: 'volTestName',
|
||||
source_type: 'image',
|
||||
destination_type: 'volume',
|
||||
delete_on_termination: true,
|
||||
@ -1005,8 +1002,6 @@
|
||||
model.newInstanceSpec.vol_delete_on_instance_delete = 'yep';
|
||||
|
||||
var finalSpec = model.createInstance();
|
||||
expect(finalSpec.block_device_mapping.volTestName)
|
||||
.toBe('imAnID:vol::yep');
|
||||
expect(finalSpec.source_id).toBe('');
|
||||
});
|
||||
|
||||
@ -1016,7 +1011,6 @@
|
||||
|
||||
var finalSpec = model.createInstance();
|
||||
var expectedBlockDevice = [{
|
||||
device_name: 'volTestName',
|
||||
source_type: 'image',
|
||||
destination_type: 'volume',
|
||||
delete_on_termination: true,
|
||||
@ -1034,8 +1028,6 @@
|
||||
model.newInstanceSpec.vol_delete_on_instance_delete = 'yep';
|
||||
|
||||
var finalSpec = model.createInstance();
|
||||
expect(finalSpec.block_device_mapping.volTestName)
|
||||
.toBe('imAnID:snap::yep');
|
||||
expect(finalSpec.source_id).toBe('');
|
||||
});
|
||||
|
||||
@ -1092,15 +1084,6 @@
|
||||
expect(finalSpec.nics).toEqual(finalNetworks);
|
||||
});
|
||||
|
||||
it('provides null for device_name when falsy', function() {
|
||||
model.newInstanceSpec.source_type.type = 'image';
|
||||
model.newInstanceSpec.vol_device_name = false;
|
||||
model.newInstanceSpec.vol_create = true;
|
||||
|
||||
var finalSpec = model.createInstance();
|
||||
expect(finalSpec.block_device_mapping_v2[0].device_name).toBeNull();
|
||||
});
|
||||
|
||||
it('should not have meta property if no metadata specified', function() {
|
||||
metadata = {};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user