mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-21 14:50:08 +03:00
Feature #3158: Force CONTEXT to be the last CDROM
This commit is contained in:
parent
24a50d6188
commit
d691daf980
@ -1683,9 +1683,6 @@ int VirtualMachine::get_disk_images(string& error_str)
|
||||
|
||||
vector<Attribute*>::iterator it;
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// The context is the first of the cdroms
|
||||
// -------------------------------------------------------------------------
|
||||
num_context = user_obj_template->remove("CONTEXT", context_disks);
|
||||
num_disks = user_obj_template->remove("DISK", disks);
|
||||
|
||||
@ -1704,35 +1701,6 @@ int VirtualMachine::get_disk_images(string& error_str)
|
||||
goto error_max_disks;
|
||||
}
|
||||
|
||||
if ( num_context > 0 )
|
||||
{
|
||||
disk = dynamic_cast<VectorAttribute * >(context_disks[0]);
|
||||
|
||||
if ( disk != 0 )
|
||||
{
|
||||
target = disk->vector_value("TARGET");
|
||||
|
||||
if ( !target.empty() )
|
||||
{
|
||||
used_targets.insert(target);
|
||||
}
|
||||
else
|
||||
{
|
||||
dev_prefix = disk->vector_value("DEV_PREFIX");
|
||||
|
||||
if ( dev_prefix.empty() )
|
||||
{
|
||||
dev_prefix = ipool->default_cdrom_dev_prefix();
|
||||
}
|
||||
|
||||
cdrom_disks.push(make_pair(dev_prefix, disk));
|
||||
}
|
||||
|
||||
// Disk IDs are 0..num-1, context disk is is num
|
||||
disk->replace("DISK_ID", num_disks);
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Set DISK attributes & Targets
|
||||
// -------------------------------------------------------------------------
|
||||
@ -1805,6 +1773,41 @@ int VirtualMachine::get_disk_images(string& error_str)
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// The context is the last of the cdroms
|
||||
// -------------------------------------------------------------------------
|
||||
if ( num_context > 0 )
|
||||
{
|
||||
disk = dynamic_cast<VectorAttribute * >(context_disks[0]);
|
||||
|
||||
if ( disk != 0 )
|
||||
{
|
||||
target = disk->vector_value("TARGET");
|
||||
|
||||
if ( !target.empty() )
|
||||
{
|
||||
if ( used_targets.insert(target).second == false )
|
||||
{
|
||||
goto error_duplicated_target;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dev_prefix = disk->vector_value("DEV_PREFIX");
|
||||
|
||||
if ( dev_prefix.empty() )
|
||||
{
|
||||
dev_prefix = ipool->default_cdrom_dev_prefix();
|
||||
}
|
||||
|
||||
cdrom_disks.push(make_pair(dev_prefix, disk));
|
||||
}
|
||||
|
||||
// Disk IDs are 0..num-1, context disk is is num
|
||||
disk->replace("DISK_ID", num_disks);
|
||||
}
|
||||
}
|
||||
|
||||
assign_disk_targets(os_disk, used_targets);
|
||||
assign_disk_targets(cdrom_disks, used_targets);
|
||||
assign_disk_targets(datablock_disks, used_targets);
|
||||
|
Loading…
x
Reference in New Issue
Block a user