diff --git a/src/datastore_mad/remotes/common/clone b/src/datastore_mad/remotes/common/clone index e6fa699ceb..078985bdc5 100755 --- a/src/datastore_mad/remotes/common/clone +++ b/src/datastore_mad/remotes/common/clone @@ -46,20 +46,29 @@ unset i XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ + /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BRIDGE_LIST \ /DS_DRIVER_ACTION_DATA/IMAGE/PATH) -BASE_PATH="${XPATH_ELEMENTS[0]}" -SRC="${XPATH_ELEMENTS[1]}" +unset i + +BASE_PATH="${XPATH_ELEMENTS[i++]}" +BRIDGE_LIST="${XPATH_ELEMENTS[i++]}" +SRC="${XPATH_ELEMENTS[i++]}" -mkdir -p "$BASE_PATH" set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" DST=`generate_image_path` # ------------ Copy the image to the repository ------------- -log "Copying local image $SRC to the image repository" - -exec_and_log "cp -f $SRC $DST" "Error copying $SRC to $DST" +if [ -n "$BRIDGE_LIST" ]; then + log "Copying remotely local image $SRC to the image repository" + DST_HOST=`get_destination_host $ID` + ssh_exec_and_log "$DST_HOST" "mkdir -p $BASE_PATH; cp -f $SRC $DST" "Error copying $SRC to $DST in $DST_HOST" +else + log "Copying local image $SRC to the image repository" + mkdir -p "$BASE_PATH" + exec_and_log "cp -f $SRC $DST" "Error copying $SRC to $DST" +fi echo "$DST" diff --git a/src/datastore_mad/remotes/fs/cp b/src/datastore_mad/remotes/fs/cp index 3da6ea64f1..4f60d6ec8a 100755 --- a/src/datastore_mad/remotes/fs/cp +++ b/src/datastore_mad/remotes/fs/cp @@ -71,12 +71,11 @@ SHA1="${XPATH_ELEMENTS[i++]}" NO_DECOMPRESS="${XPATH_ELEMENTS[i++]}" LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[i++]}" -mkdir -p "$BASE_PATH" -set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" - DST=`generate_image_path` IMAGE_HASH=`basename $DST` +set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" + if [ -n "$BRIDGE_LIST" ]; then DOWNLOADER_ARGS=`set_downloader_args "$MD5" "$SHA1" "$NO_DECOMPRESS" "$LIMIT_TRANSFER_BW" "$SRC" -` else @@ -107,6 +106,7 @@ if [ -n "$BRIDGE_LIST" ]; then ssh_exec_and_log "$DST_HOST" "mkdir -p $BASE_PATH; mv -f $TMP_DST $DST" \ "Error moving $TMP_DST to $DST in $DST_HOST" else + mkdir -p "$BASE_PATH" exec_and_log "$COPY_COMMAND" "Error copying $SRC to $DST" fi diff --git a/src/datastore_mad/remotes/fs/mkfs b/src/datastore_mad/remotes/fs/mkfs index a3e46daba1..2d181763e1 100755 --- a/src/datastore_mad/remotes/fs/mkfs +++ b/src/datastore_mad/remotes/fs/mkfs @@ -48,17 +48,19 @@ while IFS= read -r -d '' element; do done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/RESTRICTED_DIRS \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/SAFE_DIRS \ + /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BRIDGE_LIST \ /DS_DRIVER_ACTION_DATA/IMAGE/FSTYPE \ /DS_DRIVER_ACTION_DATA/IMAGE/SIZE) +unset i -BASE_PATH="${XPATH_ELEMENTS[0]}" -RESTRICTED_DIRS="${XPATH_ELEMENTS[1]}" -SAFE_DIRS="${XPATH_ELEMENTS[2]}" -FSTYPE="${XPATH_ELEMENTS[3]}" -SIZE="${XPATH_ELEMENTS[4]}" +BASE_PATH="${XPATH_ELEMENTS[i++]}" +RESTRICTED_DIRS="${XPATH_ELEMENTS[i++]}" +SAFE_DIRS="${XPATH_ELEMENTS[i++]}" +BRIDGE_LIST="${XPATH_ELEMENTS[i++]}" +FSTYPE="${XPATH_ELEMENTS[i++]}" +SIZE="${XPATH_ELEMENTS[i++]}" -mkdir -p "$BASE_PATH" set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" DST=`generate_image_path` @@ -74,9 +76,29 @@ fi MKFS_CMD=`mkfs_command $DST $FSTYPE $SIZE` -exec_and_log "$DD if=/dev/zero of=$DST bs=1 count=1 seek=${SIZE}M" \ - "Could not create image $DST" -exec_and_log "$MKFS_CMD" \ - "Unable to create filesystem $FSTYPE in $DST" +REMOTE_REGISTER_CMD=$(cat <