maas/charts/maas/templates/bin/_register-rack-controller.s...

82 lines
1.8 KiB
Smarty

#!/bin/bash
set -x
# Path where the host's cloud-init data is mounted
# to source the maas system_id
HOST_MOUNT_PATH=${HOST_MOUNT_PATH:-"/host_cloud-init/"}
unregister_maas_rack() {
sys_id="$1"
echo "Deregister this pod as MAAS rack controller ${sys_id}."
maas login local "$MAAS_ENDPOINT" "$MAAS_API_KEY"
maas local rack-controller delete "$sys_id"
rm -f ~maas/maas_id
rm -f ~maas/secret
}
register_maas_rack() {
sys_id=${1:-""}
echo "register-rack-controller URL: ${MAAS_ENDPOINT}"
if [[ ! -z "$sys_id" ]]
then
echo "Using provided system id ${sys_id}."
echo "$sys_id" > ~maas/maas_id
fi
# register forever
while [ 1 ];
do
if maas-rack register --url=${MAAS_ENDPOINT} --secret="${MAAS_REGION_SECRET}";
then
echo "Successfully registered with MaaS Region Controller"
break
else
echo "Unable to register with ${MAAS_ENDPOINT}... will try again"
sleep 30
fi;
done;
}
get_host_identity() {
# Check if the underlying host was deployed by MAAS
if [[ -r "${HOST_MOUNT_PATH}/instance-data.json" ]]
then
grep -E 'instance-id' "${HOST_MOUNT_PATH}/instance-data.json" | head -1 | tr -d ' ",' | cut -d: -f 2
else
echo ""
fi
}
get_pod_identity() {
if [[ -r ~maas/maas_id ]]
then
cat ~maas/maas_id
else
echo ""
fi
}
HOST_SYSTEM_ID=$(get_host_identity)
POD_SYSTEM_ID=$(get_pod_identity)
# This Pod state already has a MAAS identity
if [[ ! -z "$POD_SYSTEM_ID" ]]
then
# If the pod maas identity doesn't match the
# host maas identity, unregister the pod identity
# as a rack controller
if [[ "$HOST_SYSTEM_ID" != "$POD_SYSTEM_ID" ]]
then
unregister_maas_rack "$POD_SYSTEM_ID"
register_maas_rack "$HOST_SYTEM_ID"
else
echo "Found existing maas_id, assuming already registered."
fi
exit 0
else
register_maas_rack
fi