#!/bin/bash
#
# This is a helper to get tripleo-cd admins to deploy testenvs repeatably.
set -eux
set -o pipefail

source $1

export ELEMENTS_PATH=$TRIPLEO_ROOT/tripleo-image-elements/elements:$TRIPLEO_ROOT/tripleo-ci/elements
IMG=$TRIPLEO_ROOT/testenv-worker.qcow2

ANS=n
if [ -e $IMG ] ; then
    read -p "Would you like to generate a new test env image? [n/y] " ANS
fi

if [ ! -e $IMG -o "${ANS,,}" = "y" ] ; then
    $TRIPLEO_ROOT/diskimage-builder/bin/disk-image-create -a amd64 -o $IMG \
        stackuser $TE_DISTRO $TE_EXTRA_ELEMENTS testenv-worker dhcp-all-interfaces hosts baremetal -u
fi

$TRIPLEO_ROOT/tripleo-incubator/scripts/load-image -d $IMG

if heat stack-show testenv > /dev/null; then
    HEAT_OP=update
else
    HEAT_OP=create
fi

python $TRIPLEO_ROOT/tripleo-heat-templates/tripleo_heat_merge/merge.py \
    --scale testenv=$TE_COUNT --output $TRIPLEO_ROOT/testenv-workers-built.yaml \
    $TRIPLEO_ROOT/tripleo-ci/heat-templates/testenv-workers.yaml

heat stack-$HEAT_OP \
    -f $TRIPLEO_ROOT/testenv-workers-built.yaml \
    -P AuthUser=$TE_AUTHUSER \
    -P AuthTenant=$TE_AUTHTENANT \
    -P AuthPassword=$TE_OVERCLOUDPASSWD \
    -P AuthUrl=$TE_AUTHURL \
    -P GearmanHost=$TE_GEARMANHOST \
    -P NetworkName=$TE_NETWORK \
    -P PublicInterface=$TE_PUBLICINTERFACE \
    -P Hosts="$TE_OVERCLOUDIP $TE_OVERCLOUDDNS" \
    -P CPUPerEnv=$TE_CPUPERENV \
    -P DiskPerEnv=$TE_DISKPERENV \
    -P MemPerEnv=$TE_MEMPERENV \
    testenv
