#!/bin/bash

source /root/stackrc

i="0"
while tuskar plan-list 2>&1 | grep "Max retries"; do
    i=$[$i+1]
    if [ "$i" -gt "10" ]; then
        echo "Could not connect to tuskar-api service" 1>&2
        exit 1
    fi
done


PLAN_ID=$(tuskar plan-show overcloud | awk '$2=="uuid" {print $4}')

if [ -z "$PLAN_ID" ]; then
    tuskar plan-create overcloud
    PLAN_ID=$(tuskar plan-show overcloud | awk '$2=="uuid" {print $4}')
    NEW_PLAN="yes"
fi

for ROLE_NAME in "Controller" "Compute" "Swift-Storage" "Cinder-Storage" "Ceph-Storage" ; do
    ROLE_ID=$(tuskar role-list | awk '$4==VAR {print $2}' VAR="$ROLE_NAME")
    ROLE_EXISTS=$(tuskar plan-show $PLAN_ID | grep $ROLE_ID)
    if [ -z "$ROLE_EXISTS" ]; then
        tuskar plan-add-role $PLAN_ID -r $ROLE_ID
    fi
done

if [ -n "$NEW_PLAN" ]; then
    # Set defaults
    tuskar plan-update -P Ceph-Storage-1::Flavor=baremetal \
        -P Ceph-Storage-1::count=0 \
        -P Ceph-Storage-1::Image=overcloud-full \
        -P Cinder-Storage-1::CinderISCSIHelper=lioadm \
        -P Cinder-Storage-1::count=0 \
        -P Cinder-Storage-1::Image=overcloud-full \
        -P Cinder-Storage-1::Flavor=baremetal \
        -P Compute-1::count=1 \
        -P Compute-1::Flavor=baremetal \
        -P Compute-1::Image=overcloud-full \
        -P Compute-1::NeutronBridgeMappings=datacentre:br-ex \
        -P Compute-1::NeutronEnableTunnelling=True \
        -P Compute-1::NeutronFlatNetworks=datacentre \
        -P Compute-1::NeutronNetworkType=gre \
        -P Compute-1::NeutronNetworkVLANRanges=datacentre:1:1000 \
        -P Compute-1::NeutronPhysicalBridge=br-ex \
        -P Compute-1::NeutronPublicInterface=nic1 \
        -P Compute-1::NeutronTunnelTypes=gre \
        -P Compute-1::NovaComputeLibvirtType=qemu \
        -P Compute-1::NtpServer= \
        -P Controller-1::CinderISCSIHelper=lioadm \
        -P Controller-1::CloudName=overcloud \
        -P Controller-1::count=1 \
        -P Controller-1::Flavor=baremetal \
        -P Controller-1::Image=overcloud-full \
        -P Controller-1::NeutronBridgeMappings=datacentre:br-ex \
        -P Controller-1::NeutronEnableTunnelling=True \
        -P Controller-1::NeutronFlatNetworks=datacentre \
        -P Controller-1::NeutronNetworkType=gre \
        -P Controller-1::NeutronNetworkVLANRanges=datacentre:1:1000 \
        -P Controller-1::NeutronPublicInterface=nic1 \
        -P Controller-1::NeutronTunnelTypes=gre \
        -P Controller-1::NtpServer= \
        -P Swift-Storage-1::count=0 \
        -P Swift-Storage-1::Flavor=baremetal \
        -P Swift-Storage-1::Image=overcloud-full \
        $PLAN_ID
fi
