#!/bin/bash

#rbt

# resize image size vmid

SRC=$1
SIZE=$2
VM_ID=$3


if [ -z "${ONE_LOCATION}" ]; then
    TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh
else
    TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh
fi

DRIVER_PATH=$(dirname $0)

source $TMCOMMON
source ${DRIVER_PATH}/../../datastore/libfs.sh

# func from scripts_common.sh
LVEXTEND=${LVEXTEND:-lvextend}

#-------------------------------------------------------------------------------
# Set dst path and dir
#-------------------------------------------------------------------------------

SRC_PATH=`arg_path $SRC`
SRC_HOST=`arg_host $SRC`
SRC_DIR=`dirname $SRC_PATH`

DS_SYS_ID=$(echo $SRC_DIR | $AWK -F '/' '{print $(NF-1)}')

#-------------------------------------------------------------------------------
# Get Image information
#-------------------------------------------------------------------------------

DISK_ID=$(basename ${SRC_PATH} | cut -d. -f2)

#-------------------------------------------------------------------------------
# Resize disk
#-------------------------------------------------------------------------------

RESIZE_CMD=$(cat <<EOF
    set -e -o pipefail
    $SYNC
    $SUDO $LVSCAN
    DEV=\$(readlink $SRC_PATH)
    if [ `lcm_state $VM_ID` -ne 62 ]; then
        $SUDO $LVCHANGE -ay \${DEV}
        $QEMU_IMG resize \${DEV} ${SIZE}M
        $SUDO $LVCHANGE -an \${DEV}
    fi
EOF
)

ssh_exec_and_log "$SRC_HOST" "$RESIZE_CMD" \
        "Error resizing LV named $DEV"

ONEVM_XML=$(onevm show $VM_ID -x)
PERS_VM=$(xmlstarlet sel -t -v '/VM/TEMPLATE/DISK/PERSISTENT' <<< "$ONEVM_XML")
IMG_ID=$(xmlstarlet sel -t -v '/VM/TEMPLATE/DISK/IMAGE_ID' <<< "$ONEVM_XML")
if [ "$PERS_VM" == "YES" ]; then
    for img_id in ${IMG_ID[*]}; do
	ONEIMG_XML=$(oneimage show $img_id -x)
	PERS_ID=$(xmlstarlet sel -t -v '/IMAGE/PERSISTENT' <<< "$ONEIMG_XML")
        if [ "$PERS_ID" == "1" ]; then
            onedb change-body image --id $img_id /IMAGE/SIZE ${SIZE}M
        fi
    done
fi

exit 0
