diff --git a/register_vms.sh b/register_vms.sh new file mode 100644 index 0000000..fbc85d7 --- /dev/null +++ b/register_vms.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# Varialbes Passed By Rundeck +OS_PROJECT=$1 +WIN_PROJECT=$2 +API_TOKEN=$3 + +# check directory exists +if [ ! -d /deployments/$OS_PROJECT-$WIN_PROJECT/ ]; then + >&2 echo "Directory Doesn't exist" + exit 1 +fi + +RD_JOB_ID=$(cat /deployments/$OS_PROJECT-$WIN_PROJECT/JOB_ID) +RD_EXEC_ID=$(cat /deployments/$OS_PROJECT-$WIN_PROJECT/EXEC_ID) + + +post_request() { + local INPUT=$1 + local TYPE=$2 + + local UUID=$(echo "$INPUT" | awk '{print $1}') + local NAME=$(echo "$INPUT" | awk '{print $2}') + local IPv4=$(echo "$INPUT" | awk '{print $4}' | cut -d '=' -f 2) + + curl \ + -X POST \ + -H "content-type: application/json" \ + -H "accept: application/json" \ + -H "Authorization: Token $API_TOKEN" \ + -d '{ "job_id":"'$RD_JOB_ID'","execution_id":"'$RD_EXEC_ID'", "status":"ok", "data":{"name":"'$NAME'", "ip":"'$IPv4'", "uuid":"'$UUID'", "type":"'$TYPE'"}}' \ + https://projects.eidf.ac.uk/testportal/job/api/notification +} + +main() { + # Get list of VMs within project + local TABLE=$(openstack --os-cloud $OS_PROJECT server list | tail -n +4 | head -n -1 | sed 's/|//g') + + echo "$TABLE" | while read -r line; do + # Pattern to match user VMs + if echo "$line" | grep -qE "$OS_PROJECT\-$WIN_PROJECT\-wb|app|gpu"; then + post_request "$line" "CLIENT" + + # Pattern to match DC01 + elif echo "$line" | grep -qE "$OS_PROJECT\-$WIN_PROJECT\-dc01"; then + post_request "$line" "DC" + + else + continue + fi + done +} + +main