#!/bin/bash # Varialbes Passed By Rundeck OS_PROJECT=$1 WIN_PROJECT=$2 API_TOKEN=$3 export OS_CLIENT_CONFIG_FILE=/deployments/$OS_PROJECT-$WIN_PROJECT/clouds.yaml # 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