This repository has been archived on 2022-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
DevOpsOpenHack/support/resources/validate-deployment.sh
2022-11-03 16:41:13 -04:00

113 lines
4.1 KiB
Bash

#!/bin/bash
# This script verifies the successfull deployment of the resources needed for the DevOps OpenHack.
# You need to provide the CSV file with all the credentials of the Azure subscriptions from the classroom management portal and a private / public SSH keypair that will be used to access the provisioning VMs
# The error log file is where will be logged the informations regarding the failed deployments. If not provided, it defaults to error.log.
#
# EXAMPLE
# ./validate-deployment.sh ./credentials.csv
# ./validate-deployment.sh ./credentials.csv --force
OLD_IFS=$IFS
CREDENTIALS_FILE_PATH=$1
FORCE_OVERWRITE=$2
RESULTS_FILE_PATH="./classcheckresults.csv"
IFS=','
[ ! -f $CREDENTIALS_FILE_PATH ] && { echo "$CREDENTIALS_FILE_PATH file not found"; exit 99; }
[ -f $RESULTS_FILE_PATH ] && {
[ -z $FORCE_OVERWRITE ] && {
echo "Found previous output ($RESULTS_FILE_PATH). Would you like to delete it?"
select yn in "Yes" "No"; do
case $yn in
Yes ) rm $RESULTS_FILE_PATH; break;;
No ) break;;
esac
done
}
[ ! -z $FORCE_OVERWRITE ] && {
rm $RESULTS_FILE_PATH
}
}
echo "Storing validation results at $RESULTS_FILE_PATH"
echo '"SiteFound","POIFound","TripsFound","UserFound","UserJavaFound","TripViewerUrl","AzureUsername","AzurePassword","SubscriptionId","TenantURL"' >> $RESULTS_FILE_PATH
while read PortalUsername PortalPassword AzureSubscriptionId AzureDisplayName AzureUsername AzurePassword
do
if [[ $PortalUsername = *Portal* ]]
then
echo "This is the header, skipping..."
elif [[ $AzureUserName = *hacker* ]]
then
echo "This is a hacker user, skipping..."
else
echo "PortalUsername $PortalUsername"
echo "PortalPassword $PortalPassword"
echo "AzureSubscriptionId $AzureSubscriptionId"
echo "AzureDisplayName $AzureDisplayName"
echo "AzureUsername $AzureUsername"
echo "AzurePassword $AzurePassword"
az login -u $AzureUsername -p $AzurePassword --output none
TENANT_URL="https://portal.azure.com/"
TENANT_URL+=`echo "$AzureUsername" | awk -F"@" '{print $2}'`
RESOURCE_GROUP_NAME=`az group list --query "[?starts_with(name,'openhack')]|[0]" | jq -r '.name'`
TEAM_NAME=${RESOURCE_GROUP_NAME%??}
ROW_TO_APPEND="\"True\","
FQDN_POI=`az webapp show --resource-group "$RESOURCE_GROUP_NAME" --name "${TEAM_NAME}poi" --query "[].{hostName:defaultHostName}|[0]" --output tsv`
FQDN_TRIPS=`az webapp list --resource-group "$RESOURCE_GROUP_NAME" --name "${TEAM_NAME}trips" --query "[].{hostName:defaultHostName}|[0]" --output tsv`
FQDN_USER_JAVA=`az webapp list --resource-group "$RESOURCE_GROUP_NAME" --name "${TEAM_NAME}userjava" --query "[].{hostName:defaultHostName}|[0]" --output tsv`
FQDN_USER_PROFILE=`az webapp list --resource-group "$RESOURCE_GROUP_NAME" --name "${TEAM_NAME}userprofile" --query "[].{hostName:defaultHostName}|[0]" --output tsv`
FQDN_TRIP_VIEWER=`az webapp list --resource-group "$RESOURCE_GROUP_NAME" --name "${TEAM_NAME}tripviewer" --query "[].{hostName:defaultHostName}|[0]" --output tsv`
STATUS=$(curl --write-out %{http_code} --silent --output /dev/null $FQDN_POI/api/healthcheck/poi)
if [ $STATUS -eq 200 ]
then
ROW_TO_APPEND+="\"True\","
else
ROW_TO_APPEND+="\"False\","
fi
STATUS=$(curl --write-out %{http_code} --silent --output /dev/null $FQDN_TRIPS/api/healthcheck/trips)
if [ $STATUS -eq 200 ]
then
ROW_TO_APPEND+="\"True\","
else
ROW_TO_APPEND+="\"False\","
fi
STATUS=$(curl --write-out %{http_code} --silent --output /dev/null $FQDN_USER_PROFILE/api/healthcheck/user)
if [ $STATUS -eq 200 ]
then
ROW_TO_APPEND+="\"True\","
else
ROW_TO_APPEND+="\"False\","
fi
STATUS=$(curl --write-out %{http_code} --silent --output /dev/null $FQDN_USER_JAVA/api/healthcheck/user-java)
if [ $STATUS -eq 200 ]
then
ROW_TO_APPEND+="\"True\","
else
ROW_TO_APPEND+="\"False\","
fi
ROW_TO_APPEND+="\"$FQDN_TRIP_VIEWER\",\"$PortalUsername\",\"$PortalPassword\",\"$AzureSubscriptionId\",\"$TENANT_URL\""
echo $ROW_TO_APPEND >> $RESULTS_FILE_PATH
echo "Done for $AzureUsername"
fi
done < $CREDENTIALS_FILE_PATH
IFS=$OLD_IFS