#!/bin/bash


# see https://forums.rancher.com/t/proposal-to-install-on-qemu/1236

set -x -e

cd $(dirname $0)/..
source ./scripts/version
BASE=$(pwd)

STATE=/tmp
DISK=${STATE}/rancheros.img
CONFIG=${STATE}/cloud-config.yml
export LOOPBACK=$(losetup -f)
PARTITION=$(echo "${LOOPBACK}p1" | sed 's/dev/dev\/mapper/')
DISPLAY_OPTS="-curses"
# default
#DISPLAY_OPTS="-nographic -serial stdio -display none"

function clean_up {
    sudo umount mount || true
    sudo kpartx -d ${DISK} || true
    sudo losetup -d ${LOOPBACK} || true
    sudo rm ${DISK} || true
}
trap "clean_up; exit" SIGHUP SIGINT SIGTERM EXIT


echo "writing to ${CONFIG} in ${STATE}"
echo "#cloud-config" > ${CONFIG}
echo "ssh_authorized_keys:" >> ${CONFIG}
echo "- $(<${BASE}/assets/rancher.key.pub)" >> ${CONFIG}

qemu-img create ${DISK} 1G
sudo losetup ${LOOPBACK} ${DISK}

echo "n
p
1


a
w" | sudo fdisk ${LOOPBACK} || true

sudo kpartx -a ${DISK}

docker run --privileged -it --rm \
    -v /dev/mapper:/dev/mapper \
    -v ${STATE}:/cluster \
    rancher/os:${VERSION} \
    --isoinstallerloaded=1 \
    --force \
    --no-reboot \
    --debug \
    -c /cluster/cloud-config.yml \
    -t generic \
    -d ${LOOPBACK} \
    -p ${PARTITION} \
    --append "rancher.autologin=tty1"
    #-f /cluster/images.tar.xz:var/lib/system-docker/preload/images.tar.xz


sync

qemu-system-x86_64 -enable-kvm \
    ${DISPLAY_OPTS} \
    -m 1024 \
    -net nic,model=virtio \
    -net user,hostfwd=tcp::2222-:22 \
    -drive if=virtio,file=${DISK},format=raw
