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

Feature #1222: Add vm id and datastore id to all TM operations

This commit is contained in:
Carlos Martín 2012-04-12 17:54:43 +02:00
parent a76be30312
commit 55dade0271

View File

@ -215,6 +215,7 @@ void TransferManager::prolog_action(int vid)
string size;
string format;
string tm_mad, system_tm_mad;
string ds_id;
VirtualMachine * vm;
Nebula& nd = Nebula::instance();
@ -265,7 +266,7 @@ void TransferManager::prolog_action(int vid)
num = vm->get_template_attribute("DISK",attrs);
for (int i=0; i < num ;i++, source="", type="", clon="", tm_mad="")
for (int i=0; i < num ;i++, source="", type="", clon="",tm_mad="",ds_id="-")
{
disk = dynamic_cast<const VectorAttribute *>(attrs[i]);
@ -282,6 +283,13 @@ void TransferManager::prolog_action(int vid)
(int(*)(int))toupper);
}
ds_id = disk->vector_value("DATASTORE_ID");
if ( ds_id.empty() )
{
ds_id = "-";
}
if ( type == "SWAP" )
{
// -----------------------------------------------------------------
@ -300,7 +308,9 @@ void TransferManager::prolog_action(int vid)
<< system_tm_mad << " "
<< size << " "
<< vm->get_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << endl;
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< vm->get_oid() << " "
<< ds_id << endl;
}
else if ( type == "FS" )
{
@ -322,7 +332,9 @@ void TransferManager::prolog_action(int vid)
<< size << " "
<< format << " "
<< vm->get_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << endl;
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< vm->get_oid() << " "
<< ds_id << endl;
}
else
{
@ -388,7 +400,7 @@ void TransferManager::prolog_action(int vid)
xfr << " " << size;
}
xfr << endl;
xfr << " " << vm->get_oid() << " " << ds_id << endl;
}
}
@ -417,7 +429,7 @@ void TransferManager::prolog_action(int vid)
xfr << vm->get_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << num
<< endl;
<< " " << vm->get_oid() << " -" << endl;
}
xfr.close();
@ -478,6 +490,7 @@ void TransferManager::prolog_migr_action(int vid)
const VectorAttribute * disk;
string tm_mad;
string system_tm_mad;
string ds_id;
vector<const Attribute *> attrs;
int num;
@ -526,7 +539,7 @@ void TransferManager::prolog_migr_action(int vid)
num = vm->get_template_attribute("DISK",attrs);
for (int i=0 ; i < num ; i++, tm_mad="")
for (int i=0 ; i < num ; i++, tm_mad="", ds_id="-")
{
disk = dynamic_cast<const VectorAttribute *>(attrs[i]);
@ -542,13 +555,22 @@ void TransferManager::prolog_migr_action(int vid)
continue;
}
ds_id = disk->vector_value("DATASTORE_ID");
if ( ds_id.empty() )
{
ds_id = "-";
}
//MV tm_mad prev_host:remote_system_dir/disk.i host:remote_system_dir/disk.i
xfr << "MV "
<< tm_mad << " "
<< vm->get_previous_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< vm->get_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << endl;
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< vm->get_oid() << " "
<< ds_id << endl;
}
//MV tm_mad prev_host:remote_system_dir host:remote_system_dir
@ -557,7 +579,8 @@ void TransferManager::prolog_migr_action(int vid)
<< vm->get_previous_hostname() << ":"
<< vm->get_remote_system_dir() << " "
<< vm->get_hostname() << ":"
<< vm->get_remote_system_dir() << endl;
<< vm->get_remote_system_dir() << " "
<< vm->get_oid() << " -" << endl;
xfr.close();
@ -601,6 +624,7 @@ void TransferManager::prolog_resume_action(int vid)
const VectorAttribute * disk;
string tm_mad;
string system_tm_mad;
string ds_id;
vector<const Attribute *> attrs;
int num;
@ -648,7 +672,7 @@ void TransferManager::prolog_resume_action(int vid)
// ------------------------------------------------------------------------
num = vm->get_template_attribute("DISK",attrs);
for (int i=0 ; i < num ; i++, tm_mad="")
for (int i=0 ; i < num ; i++, tm_mad="", ds_id="-")
{
disk = dynamic_cast<const VectorAttribute *>(attrs[i]);
@ -664,20 +688,30 @@ void TransferManager::prolog_resume_action(int vid)
continue;
}
ds_id = disk->vector_value("DATASTORE_ID");
if ( ds_id.empty() )
{
ds_id = "-";
}
//MV tm_mad fe:system_dir/disk.i host:remote_system_dir/disk.i
xfr << "MV "
<< tm_mad << " "
<< nd.get_nebula_hostname() << ":"
<< vm->get_system_dir() << "/disk." << i << " "
<< vm->get_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << endl;
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< vm->get_oid() << " "
<< ds_id << endl;
}
//MV tm_mad fe:system_dir host:remote_system_dir
xfr << "MV "
<< system_tm_mad << " "
<< nd.get_nebula_hostname() << ":"<< vm->get_system_dir() << " "
<< vm->get_hostname() << ":" << vm->get_remote_system_dir() << endl;
<< vm->get_hostname() << ":" << vm->get_remote_system_dir()<< " "
<< vm->get_oid() << " -" << endl;
xfr.close();
@ -719,6 +753,7 @@ void TransferManager::epilog_action(int vid)
string xfr_name;
string system_tm_mad;
string tm_mad;
string ds_id;
const VectorAttribute * disk;
string save;
@ -770,7 +805,7 @@ void TransferManager::epilog_action(int vid)
num = vm->get_template_attribute("DISK",attrs);
for (int i=0; i < num ;i++,save="")
for (int i=0; i < num; i++, save="", ds_id="-")
{
disk = dynamic_cast<const VectorAttribute *>(attrs[i]);
@ -786,6 +821,13 @@ void TransferManager::epilog_action(int vid)
continue;
}
ds_id = disk->vector_value("DATASTORE_ID");
if ( ds_id.empty() )
{
ds_id = "-";
}
transform(save.begin(),save.end(),save.begin(),(int(*)(int))toupper);
tm_mad = disk->vector_value("TM_MAD");
@ -814,7 +856,9 @@ void TransferManager::epilog_action(int vid)
<< tm_mad << " "
<< vm->get_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< source << endl;
<< source << " "
<< vm->get_oid() << " "
<< ds_id << endl;
}
else if ( !tm_mad.empty() ) //No saving disk and no system_ds disk
{
@ -822,14 +866,17 @@ void TransferManager::epilog_action(int vid)
xfr << "DELETE "
<< tm_mad << " "
<< vm->get_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << endl;
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< vm->get_oid() << " "
<< ds_id << endl;
}
}
//DELETE system_tm_mad hostname:remote_system_dir
xfr << "DELETE "
<< system_tm_mad << " "
<< vm->get_hostname() << ":" << vm->get_remote_system_dir() << endl;
<< vm->get_hostname() << ":" << vm->get_remote_system_dir() << " "
<< vm->get_oid() << " -" << endl;
xfr.close();
@ -871,6 +918,7 @@ void TransferManager::epilog_stop_action(int vid)
string xfr_name;
string tm_mad;
string system_tm_mad;
string ds_id;
VirtualMachine * vm;
Nebula& nd = Nebula::instance();
@ -918,7 +966,7 @@ void TransferManager::epilog_stop_action(int vid)
// ------------------------------------------------------------------------
num = vm->get_template_attribute("DISK",attrs);
for (int i=0 ; i < num ; i++, tm_mad="")
for (int i=0 ; i < num ; i++, tm_mad="", ds_id="-")
{
disk = dynamic_cast<const VectorAttribute *>(attrs[i]);
@ -934,20 +982,30 @@ void TransferManager::epilog_stop_action(int vid)
continue;
}
ds_id = disk->vector_value("DATASTORE_ID");
if ( ds_id.empty() )
{
ds_id = "-";
}
//MV tm_mad host:remote_system_dir/disk.i fe:system_dir/disk.i
xfr << "MV "
<< tm_mad << " "
<< vm->get_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< nd.get_nebula_hostname() << ":"
<< vm->get_system_dir() << "/disk." << i << endl;
<< vm->get_system_dir() << "/disk." << i << " "
<< vm->get_oid() << " "
<< ds_id << endl;
}
//MV system_tm_mad hostname:remote_system_dir fe:system_dir
xfr << "MV "
<< system_tm_mad << " "
<< vm->get_hostname() << ":" << vm->get_remote_system_dir() << " "
<< nd.get_nebula_hostname() << ":" << vm->get_system_dir() << endl;
<< nd.get_nebula_hostname() << ":" << vm->get_system_dir() << " "
<< vm->get_oid() << " -" << endl;
xfr.close();
@ -990,6 +1048,7 @@ void TransferManager::epilog_delete_action(int vid)
string xfr_name;
string system_tm_mad;
string tm_mad;
string ds_id;
VirtualMachine * vm;
Nebula& nd = Nebula::instance();
@ -1037,7 +1096,7 @@ void TransferManager::epilog_delete_action(int vid)
// -------------------------------------------------------------------------
num = vm->get_template_attribute("DISK",attrs);
for (int i=0 ; i < num ; i++, tm_mad="")
for (int i=0 ; i < num ; i++, tm_mad="", ds_id="-")
{
disk = dynamic_cast<const VectorAttribute *>(attrs[i]);
@ -1053,17 +1112,27 @@ void TransferManager::epilog_delete_action(int vid)
continue;
}
ds_id = disk->vector_value("DATASTORE_ID");
if ( ds_id.empty() )
{
ds_id = "-";
}
//DELETE tm_mad host:remote_system_dir/disk.i
xfr << "DELETE "
<< tm_mad << " "
<< vm->get_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << endl;
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< vm->get_oid() << " "
<< ds_id << endl;
}
//DELETE system_tm_mad hostname:remote_system_dir
xfr << "DELETE "
<< system_tm_mad << " "
<< vm->get_hostname() <<":"<< vm->get_remote_system_dir() << endl;
<< vm->get_hostname() <<":"<< vm->get_remote_system_dir() << " "
<< vm->get_oid() << " -";
xfr.close();
@ -1108,6 +1177,7 @@ void TransferManager::epilog_delete_previous_action(int vid)
string xfr_name;
string system_tm_mad;
string tm_mad;
string ds_id;
VirtualMachine * vm;
Nebula& nd = Nebula::instance();
@ -1156,7 +1226,7 @@ void TransferManager::epilog_delete_previous_action(int vid)
// ------------------------------------------------------------------------
num = vm->get_template_attribute("DISK",attrs);
for (int i=0 ; i < num ; i++, tm_mad="")
for (int i=0 ; i < num ; i++, tm_mad="", ds_id="-")
{
disk = dynamic_cast<const VectorAttribute *>(attrs[i]);
@ -1172,18 +1242,27 @@ void TransferManager::epilog_delete_previous_action(int vid)
continue;
}
ds_id = disk->vector_value("DATASTORE_ID");
if ( ds_id.empty() )
{
ds_id = "-";
}
//DELETE tm_mad prev_host:remote_system_dir/disk.i
xfr << "DELETE "
<< tm_mad << " "
<< vm->get_previous_hostname() << ":"
<< vm->get_remote_system_dir() << "/disk." << i << endl;
<< vm->get_remote_system_dir() << "/disk." << i << " "
<< vm->get_oid() << " "
<< ds_id << endl;
}
//DELTE system_tm_mad prev_host:remote_system_dir
xfr << "DELETE "
<< system_tm_mad << " "
<< vm->get_previous_hostname() <<":"<< vm->get_remote_system_dir()
<< endl;
<< " " << vm->get_oid() << " -" << endl;
xfr.close();