#!/bin/bash

if true; then
	KIWI_BUILD_RESULT=/tmp/myimage/ALP-VM.x86_64-kvm.qcow2

	UEFI_VARS_FILE=$PWD/ovmf-x86_64-smm-alp-vars.bin
else
	KIWI_BUILD_RESULT=/tmp/myimage/alp-fde-demo.x86_64-1.15.4.install.iso
	UEFI_VARS_FILE=$PWD/ovmf-x86_64-smm-suse-vars.bin
fi

SYSTEM_IMAGE_SIZE=2048

case "$(virsh net-info default | grep -i active)" in
*yes*) echo "Network \"default\" is already active; good";;
*)
	virsh net-start default;;
esac

UEFI_BOOT_OPTIONS=",uefi,loader=/usr/share/qemu/ovmf-x86_64-smm-devel-code.bin,nvram_template=/usr/share/qemu/ovmf-x86_64-smm-devel-vars.bin"
UEFI_BOOT_OPTIONS=",uefi,loader=/usr/share/qemu/ovmf-x86_64-smm-suse-code.bin,nvram_template=/usr/share/qemu/ovmf-x86_64-smm-suse-vars.bin"
UEFI_BOOT_OPTIONS=",uefi,loader=/usr/share/qemu/ovmf-x86_64-smm-suse-code.bin,nvram_template=$UEFI_VARS_FILE"

function install_from_iso {

	SYSTEM_IMAGE=/tmp/build/system-image
	INSTALL_IMAGE=/tmp/build/install-image

	set -x
	dd if=/dev/zero of=$SYSTEM_IMAGE bs=1MiB count=$SYSTEM_IMAGE_SIZE  status=none

	if [ -e "$KIWI_BUILD_RESULT" -a "$KIWI_BUILD_RESULT" -nt "$INSTALL_IMAGE" ]; then
		ln -vf "$KIWI_BUILD_RESULT" "$INSTALL_IMAGE" ||
		cp -v "$KIWI_BUILD_RESULT" "$INSTALL_IMAGE"
	else
		echo
		echo "WARNING: no new image found" >&2
		echo
	fi

	exec virt-install --name vm-1 \
		--os-variant=opensuse15.3 \
		--boot hd,cdrom$UEFI_BOOT_OPTIONS \
		--disk $SYSTEM_IMAGE \
		--cdrom  "$INSTALL_IMAGE" \
		--memory 2048 \
		--console pty,target_type=virtio \
		--tpm backend.type=emulator,backend.version=2.0,model=tpm-tis \
		--network network=default
}

function install_from_disk {

	set -x

	suffix=${KIWI_BUILD_RESULT//*.}

	IMAGE="/tmp/build/image.$suffix"
	cp -v "$KIWI_BUILD_RESULT" "$IMAGE"

	ls -l $IMAGE
	exec virt-install --name vm-1 \
		--os-variant=opensuse15.3 \
		--boot hd$UEFI_BOOT_OPTIONS \
		--import \
		--disk $IMAGE,bus=sata \
		--memory 2048 \
		--console pty,target_type=virtio \
		--tpm backend.type=emulator,backend.version=2.0,model=tpm-tis \
		--network network=default \
		--autoconsole graphical
}

case $KIWI_BUILD_RESULT in
*.iso)
	install_from_iso $KIWI_BUILD_RESULT;;
*.raw|*.qcow2)
	install_from_disk $KIWI_BUILD_RESULT;;
*)
	echo "Unsupported image format in $KIWI_BUILD_RESULT" >&2
	exit 1;;
esac
