diff --git a/src/image/ImageManagerActions.cc b/src/image/ImageManagerActions.cc index 74af2be72b..57f9d05de7 100644 --- a/src/image/ImageManagerActions.cc +++ b/src/image/ImageManagerActions.cc @@ -313,6 +313,11 @@ int ImageManager::delete_image(int iid) const ImageManagerDriver* imd = get(); + if ( imd == 0 ) + { + return -1; + } + imd->rm(img->get_oid(),img->get_source()); img->unlock(); diff --git a/src/image/ImageManagerDriver.cc b/src/image/ImageManagerDriver.cc index b2f6d8de1d..3ca30af29c 100644 --- a/src/image/ImageManagerDriver.cc +++ b/src/image/ImageManagerDriver.cc @@ -196,7 +196,7 @@ void ImageManagerDriver::protocol( source = image->get_source(); - ipool->drop(image); + rc = ipool->drop(image); image->unlock(); @@ -213,8 +213,8 @@ void ImageManagerDriver::protocol( { ostringstream oss; - oss << "Error removing image from repository. Remove file " << source - << " to completely delete image."; + oss <<"Error removing image from repository. Remove file " << source + <<" to completely delete image."; NebulaLog::log("ImM",Log::ERROR,oss); } diff --git a/src/image_mad/remotes/fs/rm b/src/image_mad/remotes/fs/rm index 3d468023b3..2303682fa5 100755 --- a/src/image_mad/remotes/fs/rm +++ b/src/image_mad/remotes/fs/rm @@ -36,5 +36,7 @@ fi SRC=$1 -log "Removing $SRC from the image repository" -exec_and_log "rm $SRC" +if [ -e $SRC ] ; then + log "Removing $SRC from the image repository" + exec_and_log "rm $SRC" +fi diff --git a/src/rm/RequestManagerImageAllocate.cc b/src/rm/RequestManagerImageAllocate.cc index 5762eb2b4d..8e435f57c5 100644 --- a/src/rm/RequestManagerImageAllocate.cc +++ b/src/rm/RequestManagerImageAllocate.cc @@ -48,7 +48,7 @@ void RequestManager::ImageAllocate::execute( vector arrayData; xmlrpc_c::value_array * arrayresult; - Nebula& nd = Nebula::instance(); + Nebula& nd = Nebula::instance(); ImageManager * imagem = nd.get_imagem(); NebulaLog::log("ReM",Log::DEBUG,"ImageAllocate invoked"); @@ -58,7 +58,7 @@ void RequestManager::ImageAllocate::execute( str_template += "\n"; //-------------------------------------------------------------------------- - // Authorize this request + // Authenticate this request //-------------------------------------------------------------------------- uid = ImageAllocate::upool->authenticate(session); @@ -101,7 +101,6 @@ void RequestManager::ImageAllocate::execute( } } - //-------------------------------------------------------------------------- // Get the User Name //-------------------------------------------------------------------------- @@ -129,6 +128,9 @@ void RequestManager::ImageAllocate::execute( goto error_allocate; } + //-------------------------------------------------------------------------- + // Register the Image in the repository + //-------------------------------------------------------------------------- if ( imagem->register_image(rc) == -1 ) { goto error_register; diff --git a/src/rm/RequestManagerImageDelete.cc b/src/rm/RequestManagerImageDelete.cc index eadb292402..3a2c812f9d 100644 --- a/src/rm/RequestManagerImageDelete.cc +++ b/src/rm/RequestManagerImageDelete.cc @@ -46,6 +46,8 @@ void RequestManager::ImageDelete::execute( vector arrayData; xmlrpc_c::value_array * arrayresult; + Nebula& nd = Nebula::instance(); + ImageManager * imagem = nd.get_imagem(); NebulaLog::log("ReM",Log::DEBUG,"ImageDelete invoked"); @@ -91,17 +93,8 @@ void RequestManager::ImageDelete::execute( } } - // Get image from the ImagePool - image = ImageDelete::ipool->get(iid,true); - - if ( image == 0 ) - { - goto error_image_get; - } - - rc = ImageDelete::ipool->drop(image); - - image->unlock(); + // Delete the Image from the repository + rc = imagem->delete_image(iid); if ( rc < 0 ) { @@ -133,7 +126,7 @@ error_authorize: error_delete: oss << action_error(method_name, "DELETE", "IMAGE", iid, rc) - << ". Reason: VMs might be running on it."; + << ". Image is in use."; image->unlock(); goto error_common; diff --git a/src/rm/RequestManagerImageEnable.cc b/src/rm/RequestManagerImageEnable.cc index 7172090d8d..41720e3bc9 100644 --- a/src/rm/RequestManagerImageEnable.cc +++ b/src/rm/RequestManagerImageEnable.cc @@ -48,9 +48,9 @@ void RequestManager::ImageEnable::execute( vector arrayData; xmlrpc_c::value_array * arrayresult; - Nebula& nd = Nebula::instance(); + Nebula& nd = Nebula::instance(); ImageManager * imagem = nd.get_imagem(); - + NebulaLog::log("ReM",Log::DEBUG,"ImageEnable invoked"); session = xmlrpc_c::value_string (paramList.getString(0)); @@ -95,26 +95,14 @@ void RequestManager::ImageEnable::execute( } } - // Get image from the ImagePool - image = ImageEnable::ipool->get(iid,true); - - if ( image == 0 ) - { - goto error_image_get; - } - -//TODO rc = image->enable(enable_flag); + // Enable the Image + rc = imagem->enable_image(iid,enable_flag); if ( rc < 0 ) { goto error_enable; - } - ImageEnable::ipool->update(image); - - image->unlock(); - arrayData.push_back(xmlrpc_c::value_boolean(true)); arrayData.push_back(xmlrpc_c::value_int(iid));