#!/bin/bash -e
HOST_NAME=$1
if [ -z "$HOST_NAME" ]; then
    echo "usage: $0 host name"
    exit 1
fi

MACHINES=""
for image in *; do
    if [ -d "$image" ]; then
        for os in $image/configurations/*; do
            if [ -d "$os" ]; then
                osname="$(basename $os)"
                if [ -f "host/configurations/$HOST_NAME/etc/systemd/nspawn/$osname.nspawn" ]; then
                    MACHINES="$MACHINES$osname "
                fi
                echo
                echo "Install machine $image"
                ./install_machine "$HOST_NAME" "$image" "$osname"
            fi
        done
    fi
done
machinectl enable $MACHINES
machinectl start $MACHINES
STARTED=""
DEGRADED=""
found=true
idx=0
while [ $found = true ]; do
    found=false
    echo "tentative $idx"
    for machine in $MACHINES; do
        if ! echo $STARTED | grep -q " $machine "; then
            status=$(machinectl -q shell $machine /usr/bin/systemctl is-system-running || true)
            if echo "$status" | grep -q degraded; then
                STARTED="$STARTED $machine "
                DEGRADED="$DEGRADED $machine"
            elif echo "$status" | grep -q running; then
                STARTED="$STARTED $machine "
            else
                found=true
                echo "status actuel de $machine : $status"
            fi
        fi
    done
    sleep 2
    idx=$((idx+1))
    if [ $idx = 60 ]; then
        break
    fi
done
retcode=0
for machine in $DEGRADED; do
    echo
    echo "========= $machine"
    machinectl -q shell $machine /usr/bin/systemctl --state=failed --no-legend --no-pager
    retcode=1
done

exit $retcode
