#!/bin/bash
# Launch a cloud image locally with kvm
#
# First, change ##YOUR_USERID_HERE## to your launchpad user id.
# Then, launch the instance with:
#
#    ./go image_file.img
# 
# Login to the instance with:
#
#    ssh -p 2222 ubuntu@localhost
#

set +e
if [ -z "$1" ] ; then
    IMAGE_TO_LAUNCH="livecd.ubuntu-cpc.img"
else
    IMAGE_TO_LAUNCH="$1"
fi

RANDOMSEED=$(petname)
echo $RANDOMSEED

cat <<EOF > meta-data-$RANDOMSEED
instance-id: iid-local01
local-hostname: cloudimg
EOF

cat <<EOF > user-data-$RANDOMSEED
#cloud-config
ssh_import_id: [ ##YOUR_USERID_HERE## ]
system_info:
  default_user:
    lock_passwd: false
    plain_text_passwd: passw0rd
    ssh_pwauth: true
users:
  - default
disable_root: true
EOF

cloud-localds seed-$RANDOMSEED.img user-data-$RANDOMSEED meta-data-$RANDOMSEED

echo "Removing the metadata and userdata..."
rm user-data-$RANDOMSEED meta-data-$RANDOMSEED

echo "Creating a disk backed by the image..."
qemu-img create -f qcow2 -b $IMAGE_TO_LAUNCH boot-disk-$RANDOMSEED.img

echo "Launching the instance..."

CONSOLE_OPTS=""
if [ "${CONSOLE:-}" ]; then
    CONSOLE_OPTS="-nographic -vga none"
fi

kvm -m 4G -net nic,model=virtio -net user,hostfwd=tcp::2222-:22 \
    -drive file=boot-disk-$RANDOMSEED.img,if=virtio \
    -drive file=seed-$RANDOMSEED.img,if=virtio,format=raw ${CONSOLE_OPTS}

echo "Boot Disk boot-disk-$RANDOMSEED.img"
echo "Seed Disk seed-$RANDOMSEED.img"
