From e31bf066f50d3984a8f3ff8dd13fa5fb7ddd0ca5 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Mon, 4 Apr 2011 00:01:50 +0200 Subject: [PATCH] feature #523: Fix wrong handling of PATH/SOURCE attributes in image templates --- install.sh | 1 - src/image/ImageManagerActions.cc | 53 ++++++++++++++++---------------- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/install.sh b/install.sh index 09d1a76a80..243ed2a260 100755 --- a/install.sh +++ b/install.sh @@ -400,7 +400,6 @@ RUBY_OPENNEBULA_LIB_FILES="src/oca/ruby/OpenNebula/Host.rb \ src/oca/ruby/OpenNebula/VirtualNetworkPool.rb \ src/oca/ruby/OpenNebula/Image.rb \ src/oca/ruby/OpenNebula/ImagePool.rb \ - src/oca/ruby/OpenNebula/ImageRepository.rb \ src/oca/ruby/OpenNebula/Cluster.rb \ src/oca/ruby/OpenNebula/ClusterPool.rb \ src/oca/ruby/OpenNebula/XMLUtils.rb" diff --git a/src/image/ImageManagerActions.cc b/src/image/ImageManagerActions.cc index 17e25f2292..ef70582073 100644 --- a/src/image/ImageManagerActions.cc +++ b/src/image/ImageManagerActions.cc @@ -354,37 +354,36 @@ int ImageManager::register_image(int iid) img->get_template_attribute("PATH",path); - switch (img->get_type()) + if ( path.empty() == true ) //NO PATH -> USE SOURCE OR MKFS FOR DATABLOCK { - case Image::DATABLOCK: - if (path.empty() == true) - { - string fs; - string size; + string fs; + string size; - img->get_template_attribute("SIZE", size); - img->get_template_attribute("FSTYPE", fs); + img->get_template_attribute("SIZE", size); + img->get_template_attribute("FSTYPE", fs); - imd->mkfs(img->get_oid(), img->get_source(), fs, size); - - oss << "Creating disk at " << img->get_source() - << " of " << size << "Mb with format " << fs; - } - else - { - imd->cp(img->get_oid(),path, img->get_source()); + if ( img->get_type() == Image::DATABLOCK && + !size.empty() && !fs.empty() ) + { + imd->mkfs(img->get_oid(), img->get_source(), fs, size); + + oss << "Creating disk at " << img->get_source() << " of " + << size << "Mb with format " << fs; + } + else + { + img->set_state(Image::READY); + ipool->update(img); - oss << "Copying file " << path << " to " << img->get_source(); - } - break; - - case Image::CDROM: - case Image::OS: - imd->cp(img->get_oid(),path, img->get_source()); - oss << "Copying file " << path << " to " << img->get_source(); - break; - default: - break; + oss << "Using source " << img->get_source() + << " from template for image " << img->get_name(); + } + } + else //PATH -> COPY TO REPOSITORY AS SOURCE + { + imd->cp(img->get_oid(), path, img->get_source()); + oss << "Copying image " << path + << " to repository as " << img->get_source(); } NebulaLog::log("ImM",Log::INFO,oss);