case "$1" in
	usage)
		echo "--libvirt <uri>    Add resulting VM to the libvirt hypervisor at <uri>."
		echo "--templates <dir>  Look for libvirt VM XML templates in <dir> instead"
		echo "                   of /usr/share/ubuntu-vm-builder/templates"
		echo
		;;
esac

vm_getopt_args="libvirt:,templates:,"

vm_getopt() {
	# We don't really handle -a, but getopt complains if it doesn't get any short
	# options to handle. 
	TEMP=`getopt -q -o a --long $vm_getopt_args -- "$@"`
	eval set -- "$TEMP"
	case "$1" in
		--libvirt)
			info "Using libvirt uri '$2'"
			LIBVIRT="$2"
			argsused=$(($argsused + 2))
		;;
		--templates)
			TEMPLATEDIR="$2"
			shift 2
		;;
	esac
}


qemu_common_target_conversion() {
	QEMU_IMG_CONVERT_OPTS="-O qcow2"
	QEMU_IMG_CONVERT_EXTENSION=".qcow2"

	if [ -n "$LIBVIRT" ]
	then
		LIBVIRTXML=`mktemp -p $TMPDIR vm-builder-XXXXXXXXXX` || exit 1
		LIBVIRTNAME="$VMHOSTNAME"
		MAC="52:54:00$(hexdump -e '/1 ":%02x"' -n 3 /dev/urandom)"
		while virsh -c "$LIBVIRT" dumpxml "$LIBVIRTNAME" > /dev/null 2>&1
		do
			LIBVIRTNAME="${LIBVIRTNAME}_"
		done

		#retrieve the device part of the templace
		device=$(cat $TEMPLATEDIR/libvirt.tmpl | sed -n "/%loop%/,/%\/loop%/p" | sed -e "s/%loop%//g;s/%\/loop%//g")

		#fill it in for each disk
		let diskindex=-1
		devices=""
		curdisk=""
		for ((i=0;i<${#MOUNTPOINTS[@]};i++)); do
			if [ "$curdisk" != "${MOUNTDISKS[$i]}" ]; then
				let diskindex++
				img="${DISKIMGS[$diskindex]}"
				curdisk=${MOUNTDISKS[$i]}
   	           	FILES="$FILES $img.qcow2"

				curdev=$(echo $device | sed -e "s|%DESTINATION%|${DESTINATION}|g" \
					-e "s|%img%|${img}|g" \
					-e "s|%curdisk%|${curdisk}|g")

				devices="$devices $curdev" 
			fi

		done

		#fill the final template
		cat $TEMPLATEDIR/libvirt.tmpl | \
			sed -e "s/%VM%/${VM}/g" \
			-e "s/%LIBVIRTNAME%/${LIBVIRTNAME}/g" \
			-e "s/%MEM%/$(( $MEM * 1024 ))/g" \
			-e "s/%MAC%/${MAC}/g" | \
			awk -vrep="$devices" '/%loop%/{print rep}
/%loop/,/%\/loop%/{next}
1'> ${LIBVIRTXML} 

		virsh -c "${LIBVIRT}" define "${LIBVIRTXML}"
		rm $LIBVIRTXML
	else
   		FILES="$VMHOSTNAME.$CMD" 
		IMGFILES=""
		let diskindex=-1
		curdisk=""
		for ((i=0;i<${#MOUNTPOINTS[@]};i++)); do
			if [ "$curdisk" != "${MOUNTDISKS[$i]}" ]; then
				let diskindex++
				img="${DISKIMGS[$diskindex]}"
				curdisk=${MOUNTDISKS[$i]}
				FILES="$FILES $img.qcow2"
				IMGFILES="$IMGFILES -hd$curdisk $img.qcow2" 
			fi
		done
		cat > $VMHOSTNAME.$CMD <<EOF
#!/bin/sh
$CMD -m $MEM $IMGFILES "\$@"
EOF
			chmod +x $VMHOSTNAME.$CMD
	fi
}

#
# Add package names to PKGS
#
vm_extra_packages() {
	:
}

