#!/bin/bash

#####################################################
#
#    Create Xen VM disk images
#
#    VM disk image files are named as follows:
#     -main partition:   /var/xen/images/vm-${vm_label}.img
#     -swap partition:   /var/xen/images/vmsw-${vm_label}.img
#
#####################################################

usage() {
cat << EOF
usage: $0  <vm label> <swap size in Mbytes> <template filename>

EOF
}


function cleanup_on_error() {
	if [  -f "/var/xen/images/vm-$1.img" ]; then
	 rm  /var/xen/images/vm-$1.img
	fi
	if [  -f "/var/xen/images/vmsw-$1.img" ]; then
	 rm  /var/xen/images/vmsw-$1.img
	fi
}

set -e
trap cleanup_on_error ERR

if [ ! -f $3 ]; then
	echo Cannot find image $3
	exit 1
fi

filename=/var/xen/images/vm-$1.img
echo Copying image $3 ....
cp $3  $filename


filesize=$(stat -c%s $filename) 
size=$(( $2 * 1024 *1024 ))

if [ $filesize -lt $size ]; then
	echo Resizing image....
	loopdev=`losetup -f`
	dd if=/dev/zero of=/var/xen/images/vm-$1.img bs=1M conv=notrunc count=1 seek=$2
	losetup ${loopdev} /var/xen/images/vm-$1.img
	e2fsck -yf ${loopdev}
	resize2fs ${loopdev}
	e2fsck -yf ${loopdev}
	losetup -d ${loopdev}
fi


dd if=/dev/zero of=/var/xen/images/vmsw-$1.img bs=1M count=1 seek=$4
mkswap /var/xen/images/vmsw-$1.img


