From 0f59a29e483793b60ecfd54cd87cf6abac880c2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Thu, 14 Jun 2012 18:03:58 +0200 Subject: [PATCH] Feature #1223: Use the disk_id to generate the disk.i paths everywhere --- src/tm/TransferManager.cc | 26 ++++++++++++++++++-------- src/vmm/LibVirtDriverKVM.cc | 8 +++++--- src/vmm/LibVirtDriverVMware.cc | 8 +++++--- src/vmm/VirtualMachineManager.cc | 4 ++-- src/vmm/XenDriver.cc | 4 +++- 5 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/tm/TransferManager.cc b/src/tm/TransferManager.cc index 7ca03c6517..10b62a337e 100644 --- a/src/tm/TransferManager.cc +++ b/src/tm/TransferManager.cc @@ -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 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 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; } diff --git a/src/vmm/LibVirtDriverKVM.cc b/src/vmm/LibVirtDriverKVM.cc index b307f96103..1859b5862c 100644 --- a/src/vmm/LibVirtDriverKVM.cc +++ b/src/vmm/LibVirtDriverKVM.cc @@ -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" << endl << "\t\t\t" << endl; + << "/disk." << disk_id << "'/>" << endl; } else if ( type == "CDROM" ) { file << "\t\t" << endl << "\t\t\t" << endl; + << "/disk." << disk_id << "'/>" << endl; } else { file << "\t\t" << endl << "\t\t\t" << endl; + << "/disk." << disk_id << "'/>" << endl; } // ---- target device to map the disk ---- diff --git a/src/vmm/LibVirtDriverVMware.cc b/src/vmm/LibVirtDriverVMware.cc index 05b4cff863..61fd36b7da 100644 --- a/src/vmm/LibVirtDriverVMware.cc +++ b/src/vmm/LibVirtDriverVMware.cc @@ -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" << endl; file << "\t\t\tget_oid() - << "/disk." << i << "'/>" << endl; + << "/disk." << disk_id << "'/>" << endl; } else if ( type == "CDROM" ) { file << "\t\t" << endl; file << "\t\t\tget_oid() - << "/disk." << i << ".iso'/>" << endl; + << "/disk." << disk_id << ".iso'/>" << endl; } else { file << "\t\t" << endl << "\t\t\t" << endl; + << "/disk." << disk_id << "/disk.vmdk'/>" << endl; } file << "\t\t\tvector_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); diff --git a/src/vmm/XenDriver.cc b/src/vmm/XenDriver.cc index 7ffa4fa944..a9ad8a16f6 100644 --- a/src/vmm/XenDriver.cc +++ b/src/vmm/XenDriver.cc @@ -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;