diff --git a/src/tm/TransferManager.cc b/src/tm/TransferManager.cc index 13af39a96b..67a46e8c67 100644 --- a/src/tm/TransferManager.cc +++ b/src/tm/TransferManager.cc @@ -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(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 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(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 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(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(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(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(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(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();