1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-23 22:50:09 +03:00

Feature #1223: Use the disk_id to generate the disk.i paths everywhere

This commit is contained in:
Carlos Martín 2012-06-14 18:03:58 +02:00
parent 1eebdbc07a
commit 0f59a29e48
5 changed files with 33 additions and 17 deletions

View File

@ -504,6 +504,7 @@ void TransferManager::prolog_migr_action(int vid)
string tm_mad;
string system_tm_mad;
string ds_id;
int disk_id;
vector<const Attribute *> attrs;
int num;
@ -564,6 +565,7 @@ void TransferManager::prolog_migr_action(int vid)
tm_mad = disk->vector_value("TM_MAD");
ds_id = disk->vector_value("DATASTORE_ID");
disk->vector_value_str("DISK_ID", disk_id);
if ( tm_mad.empty() || ds_id.empty() )
{
@ -574,9 +576,9 @@ void TransferManager::prolog_migr_action(int vid)
xfr << "MV "
<< tm_mad << " "
<< vm->get_previous_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< vm->get_remote_system_dir() << "/disk." << disk_id << " "
<< vm->get_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< vm->get_remote_system_dir() << "/disk." << disk_id << " "
<< vm->get_oid() << " "
<< ds_id << endl;
}
@ -629,6 +631,7 @@ void TransferManager::prolog_resume_action(int vid)
string tm_mad;
string system_tm_mad;
string ds_id;
int disk_id;
vector<const Attribute *> attrs;
int num;
@ -688,6 +691,7 @@ void TransferManager::prolog_resume_action(int vid)
tm_mad = disk->vector_value("TM_MAD");
ds_id = disk->vector_value("DATASTORE_ID");
disk->vector_value_str("DISK_ID", disk_id);
if ( tm_mad.empty() || ds_id.empty() )
{
@ -698,9 +702,9 @@ void TransferManager::prolog_resume_action(int vid)
xfr << "MV "
<< tm_mad << " "
<< nd.get_nebula_hostname() << ":"
<< vm->get_system_dir() << "/disk." << i << " "
<< vm->get_system_dir() << "/disk." << disk_id << " "
<< vm->get_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< vm->get_remote_system_dir() << "/disk." << disk_id << " "
<< vm->get_oid() << " "
<< ds_id << endl;
}
@ -935,6 +939,7 @@ void TransferManager::epilog_stop_action(int vid)
string tm_mad;
string system_tm_mad;
string ds_id;
int disk_id;
VirtualMachine * vm;
Nebula& nd = Nebula::instance();
@ -995,6 +1000,7 @@ void TransferManager::epilog_stop_action(int vid)
tm_mad = disk->vector_value("TM_MAD");
ds_id = disk->vector_value("DATASTORE_ID");
disk->vector_value_str("DISK_ID", disk_id);
if (tm_mad.empty() || ds_id.empty())
{
@ -1005,9 +1011,9 @@ void TransferManager::epilog_stop_action(int vid)
xfr << "MV "
<< tm_mad << " "
<< vm->get_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< vm->get_remote_system_dir() << "/disk." << disk_id << " "
<< nd.get_nebula_hostname() << ":"
<< vm->get_system_dir() << "/disk." << i << " "
<< vm->get_system_dir() << "/disk." << disk_id << " "
<< vm->get_oid() << " "
<< ds_id << endl;
}
@ -1058,6 +1064,7 @@ void TransferManager::epilog_delete_action(int vid)
string system_tm_mad;
string tm_mad;
string ds_id;
int disk_id;
VirtualMachine * vm;
Nebula& nd = Nebula::instance();
@ -1118,6 +1125,7 @@ void TransferManager::epilog_delete_action(int vid)
tm_mad = disk->vector_value("TM_MAD");
ds_id = disk->vector_value("DATASTORE_ID");
disk->vector_value_str("DISK_ID", disk_id);
if ( tm_mad.empty() || ds_id.empty() )
{
@ -1128,7 +1136,7 @@ void TransferManager::epilog_delete_action(int vid)
xfr << "DELETE "
<< tm_mad << " "
<< vm->get_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< vm->get_remote_system_dir() << "/disk." << disk_id << " "
<< vm->get_oid() << " "
<< ds_id << endl;
}
@ -1178,6 +1186,7 @@ void TransferManager::epilog_delete_previous_action(int vid)
string system_tm_mad;
string tm_mad;
string ds_id;
int disk_id;
VirtualMachine * vm;
Nebula& nd = Nebula::instance();
@ -1238,6 +1247,7 @@ void TransferManager::epilog_delete_previous_action(int vid)
tm_mad = disk->vector_value("TM_MAD");
ds_id = disk->vector_value("DATASTORE_ID");
disk->vector_value_str("DISK_ID", disk_id);
if (tm_mad.empty() || ds_id.empty())
{
@ -1248,7 +1258,7 @@ void TransferManager::epilog_delete_previous_action(int vid)
xfr << "DELETE "
<< tm_mad << " "
<< vm->get_previous_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< vm->get_remote_system_dir() << "/disk." << disk_id << " "
<< vm->get_oid() << " "
<< ds_id << endl;
}

View File

@ -54,6 +54,7 @@ int LibVirtDriver::deployment_description_kvm(
string ro = "";
string driver = "";
string cache = "";
int disk_id;
string default_driver = "";
string default_driver_cache = "";
bool readonly;
@ -306,6 +307,7 @@ int LibVirtDriver::deployment_description_kvm(
bus = disk->vector_value("BUS");
driver = disk->vector_value("DRIVER");
cache = disk->vector_value("CACHE");
disk->vector_value_str("DISK_ID", disk_id);
if (target.empty())
{
@ -335,19 +337,19 @@ int LibVirtDriver::deployment_description_kvm(
{
file << "\t\t<disk type='block' device='disk'>" << endl
<< "\t\t\t<source dev='" << vm->get_remote_system_dir()
<< "/disk." << i << "'/>" << endl;
<< "/disk." << disk_id << "'/>" << endl;
}
else if ( type == "CDROM" )
{
file << "\t\t<disk type='file' device='cdrom'>" << endl
<< "\t\t\t<source file='" << vm->get_remote_system_dir()
<< "/disk." << i << "'/>" << endl;
<< "/disk." << disk_id << "'/>" << endl;
}
else
{
file << "\t\t<disk type='file' device='disk'>" << endl
<< "\t\t\t<source file='" << vm->get_remote_system_dir()
<< "/disk." << i << "'/>" << endl;
<< "/disk." << disk_id << "'/>" << endl;
}
// ---- target device to map the disk ----

View File

@ -55,6 +55,7 @@ int LibVirtDriver::deployment_description_vmware(
string source = "";
string datastore = "";
string driver = "";
int disk_id;
string default_driver = "";
bool readonly;
@ -199,6 +200,7 @@ int LibVirtDriver::deployment_description_vmware(
bus = disk->vector_value("BUS");
source = disk->vector_value("SOURCE");
driver = disk->vector_value("DRIVER");
disk->vector_value_str("DISK_ID", disk_id);
if (target.empty())
{
@ -226,19 +228,19 @@ int LibVirtDriver::deployment_description_vmware(
{
file << "\t\t<disk type='block' device='disk'>" << endl;
file << "\t\t\t<source file=[" << datastore << "] " << vm->get_oid()
<< "/disk." << i << "'/>" << endl;
<< "/disk." << disk_id << "'/>" << endl;
}
else if ( type == "CDROM" )
{
file << "\t\t<disk type='file' device='cdrom'>" << endl;
file << "\t\t\t<source file=[" << datastore << "] " << vm->get_oid()
<< "/disk." << i << ".iso'/>" << endl;
<< "/disk." << disk_id << ".iso'/>" << endl;
}
else
{
file << "\t\t<disk type='file' device='disk'>" << endl
<< "\t\t\t<source file='[" << datastore <<"] " << vm->get_oid()
<< "/disk." << i << "/disk.vmdk'/>" << endl;
<< "/disk." << disk_id << "/disk.vmdk'/>" << endl;
}
file << "\t\t\t<target dev='" << target << "'";

View File

@ -1368,7 +1368,7 @@ void VirtualMachineManager::attach_action(
system_tm_mad = nd.get_system_ds_tm_mad();
opennebula_hostname = nd.get_nebula_hostname();
disk_id = disk->vector_value("DISK_ID", disk_id);
disk->vector_value("DISK_ID", disk_id);
Nebula::instance().get_tm()->prolog_transfer_command(
vm,
@ -1490,7 +1490,7 @@ void VirtualMachineManager::detach_action(
system_tm_mad = nd.get_system_ds_tm_mad();
opennebula_hostname = nd.get_nebula_hostname();
disk_id = disk->vector_value("DISK_ID", disk_id);
disk->vector_value("DISK_ID", disk_id);
Nebula::instance().get_tm()->epilog_transfer_command(vm,disk,os,error_str);

View File

@ -50,6 +50,7 @@ int XenDriver::deployment_description(
string ro = "";
string type = "";
string driver = "";
int disk_id;
string default_driver = "";
string mode;
@ -237,6 +238,7 @@ int XenDriver::deployment_description(
type = disk->vector_value("TYPE");
ro = disk->vector_value("READONLY");
driver = disk->vector_value("DRIVER");
disk->vector_value_str("DISK_ID", disk_id);
if ( target.empty() )
{
@ -276,7 +278,7 @@ int XenDriver::deployment_description(
}
}
file << vm->get_remote_system_dir() << "/disk." << i << ","
file << vm->get_remote_system_dir() << "/disk." << disk_id << ","
<< target << ","
<< mode
<< "'," << endl;