diff --git a/src/vm/VirtualMachineDisk.cc b/src/vm/VirtualMachineDisk.cc index f68072f67e..431df363cb 100644 --- a/src/vm/VirtualMachineDisk.cc +++ b/src/vm/VirtualMachineDisk.cc @@ -1622,16 +1622,17 @@ int VirtualMachineDisks::check_tm_mad(const string& tm_mad, string& error) DatastorePool * dspool = Nebula::instance().get_dspool(); std::string _tm_mad = tm_mad; - + one_util::toupper(_tm_mad); for (disk_iterator it = begin(); it != end() ; ++it) { int ds_img_id; - + VirtualMachineDisk * disk = *it; + std::string tm_mad_disk; - (*it)->vector_value("TM_MAD", tm_mad_disk); + disk->vector_value("TM_MAD", tm_mad_disk); one_util::toupper(tm_mad_disk); @@ -1640,7 +1641,7 @@ int VirtualMachineDisks::check_tm_mad(const string& tm_mad, string& error) continue; } - if ( (*it)->vector_value("DATASTORE_ID", ds_img_id) == 0 ) + if ( disk->vector_value("DATASTORE_ID", ds_img_id) == 0 ) { std::string ln_target, clone_target, disk_type; @@ -1652,24 +1653,18 @@ int VirtualMachineDisks::check_tm_mad(const string& tm_mad, string& error) return -1; } - if ( ds_img->get_tm_mad_targets(tm_mad, ln_target, clone_target, + if ( ds_img->get_tm_mad_targets(tm_mad, ln_target, clone_target, disk_type) != 0 ) { error = "Image Datastore does not support transfer mode: " + tm_mad; return -1; } - (*it)->replace("CLONE_TARGET", clone_target); - (*it)->replace("LN_TARGET", ln_target); - (*it)->replace("DISK_TYPE", disk_type); - (*it)->replace("TM_MAD_SYSTEM", tm_mad); + disk->replace("CLONE_TARGET", clone_target); + disk->replace("LN_TARGET", ln_target); + disk->replace("DISK_TYPE", disk_type); + disk->replace("TM_MAD_SYSTEM", tm_mad); } - else - { - error = "Image datastore not defined for VM DISK"; - return -1; - } - } return 0; }