From c9cc70dc814061090894ff485f0bd4aae6fd8ce1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Tue, 6 Mar 2012 18:08:20 +0100 Subject: [PATCH] Feature #1112: Fix save_as in mkfs datastore_mad drivers --- src/datastore_mad/remotes/fs/mkfs | 8 ++++++++ src/datastore_mad/remotes/vmware/mkfs | 11 +++++++++-- src/image/Image.cc | 17 +++++++++++++++++ src/rm/RequestManagerVirtualMachine.cc | 1 - 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/datastore_mad/remotes/fs/mkfs b/src/datastore_mad/remotes/fs/mkfs index 7f27552ad6..4d3bda68e4 100755 --- a/src/datastore_mad/remotes/fs/mkfs +++ b/src/datastore_mad/remotes/fs/mkfs @@ -65,6 +65,14 @@ SIZE="${XPATH_ELEMENTS[6]}" set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK" DST=`generate_image_path` + +# ------------ Image to save_as disk, no need to create a FS ------------ + +if [ "$FSTYPE" = "save_as" ]; then + echo "$DST $SIZE" + exit 0 +fi + # ------------ Create the image to the repository ------------ MKFS_CMD=`mkfs_command $DST $FSTYPE` diff --git a/src/datastore_mad/remotes/vmware/mkfs b/src/datastore_mad/remotes/vmware/mkfs index f48f2535d8..0872965591 100755 --- a/src/datastore_mad/remotes/vmware/mkfs +++ b/src/datastore_mad/remotes/vmware/mkfs @@ -65,13 +65,20 @@ set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK" DST=`generate_image_path` +# ------------ Image to save_as disk, no need to create a FS ------------ + +if [ "$FSTYPE" = "save_as" ]; then + echo "$DST $SIZE" + exit 0 +fi + +# ------------ Create the image to the repository ------------ + DISK=$DST/disk.vmdk DISK_TMP=$DISK.tmp IMAGE_FORMAT=vmdk -# ------------ Create the image to the repository ------------ - MKFS_CMD=`mkfs_command $DISK_TMP $FSTYPE` exec_and_log "mkdir -p $DST" \ diff --git a/src/image/Image.cc b/src/image/Image.cc index 058d8551a0..dfa867ee24 100644 --- a/src/image/Image.cc +++ b/src/image/Image.cc @@ -190,6 +190,23 @@ int Image::insert(SqlDB *db, string& error_str) goto error_path_and_source; } } + else + { + string size_attr; + istringstream iss; + + fs_type = "save_as"; + erase_template_attribute("SIZE", size_attr); + + iss.str(size_attr); + + iss >> size_mb; + + if (iss.fail() == true) + { + goto error_size_format; + } + } state = LOCKED; //LOCKED till the ImageManager copies it to the Repository diff --git a/src/rm/RequestManagerVirtualMachine.cc b/src/rm/RequestManagerVirtualMachine.cc index 828178bff8..82c3f91640 100644 --- a/src/rm/RequestManagerVirtualMachine.cc +++ b/src/rm/RequestManagerVirtualMachine.cc @@ -496,7 +496,6 @@ void VirtualMachineSaveDisk::request_execute(xmlrpc_c::paramList const& paramLis oss << "NAME = \"" << img_name << "\"" << endl; oss << "SIZE = " << size << endl; - oss << "FS_TYPE = save_as" << endl; oss << "SAVED_IMAGE_ID = " << iid_orig << endl; oss << "SAVED_DISK_ID = " << disk_id << endl;