#!/bin/bash

set -ex

source /usr/libexec/openstack-tripleo/devtest_variables.sh
export NODE_ARCH=${NODE_ARCH:-amd64}

tripleo devtest_testenv.sh instackenv.json

sudo virsh undefine --remove-all-storage seed

MACS=$(for i in $(seq 0 3); do echo -n $(tripleo get-vm-mac baremetal_$i)" "; done)
cp /usr/share/doc/instack-undercloud/deploy-virt-overcloudrc /tmp/deploy-virt-overcloudrc
sed -i "s/MACS=\"\"/MACS=\"$MACS\"/" /tmp/deploy-virt-overcloudrc

UNDERCLOUD_ROOT_PASSWORD=${UNDERCLOUD_ROOT_PASSWORD:-""}
UNDERCLOUD_PASSWORD_ARG=
if [ $UNDERCLOUD_ROOT_PASSWORD ]; then
  UNDERCLOUD_PASSWORD_ARG="--root-password password:$UNDERCLOUD_ROOT_PASSWORD"
fi

export UNDERCLOUD_VM_NAME=${UNDERCLOUD_VM_NAME:-"instack"}
export UNDERCLOUD_OS=${UNDERCLOUD_OS:-"fedora-20"}

# We must restore the default label for /etc/resolv.conf, hence the 
# --firstboot-command that calls restorecon /etc/resolv.conf, see:
# https://bugzilla.redhat.com/show_bug.cgi?id=1089100
virt-builder $UNDERCLOUD_OS $UNDERCLOUD_PASSWORD_ARG \
  --size 30G \
  --format qcow2 \
  -o $UNDERCLOUD_VM_NAME.qcow2 \
  --install net-tools,yum-utils,git \
  --mkdir /home/stack/.ssh \
  --upload ~/.ssh/id_rsa_virt_power:/home/stack/.ssh/id_rsa_virt_power \
  --upload ~/.ssh/id_rsa_virt_power.pub:/home/stack/.ssh/id_rsa_virt_power.pub \
  --upload /tmp/deploy-virt-overcloudrc:/home/stack/deploy-virt-overcloudrc \
  --upload /usr/share/doc/instack-undercloud/instack-virt.answers.sample:/home/stack/instack.answers \
  --run-command \
    'useradd -m -G wheel -p "" stack ; echo "stack:stack" | chpasswd;
     echo "stack ALL=(root) NOPASSWD:ALL" >> /etc/sudoers.d/stack ; chmod 0440 /etc/sudoers.d/stack;
     chmod 0700 /home/stack/.ssh;
     chmod 0600 /home/stack/.ssh/id_rsa_virt_power /home/stack/.ssh/id_rsa_virt_power.pub;
     cp /etc/skel/.* /home/stack/;
     chown -R stack:stack /home/stack' \
  --firstboot-command \
    'restorecon /etc/resolv.conf' \
  --selinux-relabel

sudo cp $UNDERCLOUD_VM_NAME.qcow2 /var/lib/libvirt/images/$UNDERCLOUD_VM_NAME.qcow2

tripleo configure-vm \
    --name $UNDERCLOUD_VM_NAME \
    --image /var/lib/libvirt/images/$UNDERCLOUD_VM_NAME.qcow2 \
    --seed \
    --libvirt-nic-driver virtio \
    --arch x86_64 \
    --memory 2097152 \
    --cpus 1
