From afe9ee93242703b6d6dca9ee077fb54ae3913bb1 Mon Sep 17 00:00:00 2001
From: Krish Moodbidri <krish94@uab.edu>
Date: Wed, 2 Oct 2024 11:19:37 -0500
Subject: [PATCH] add floating IP validation and error handling

- Added validation to check if `PROXY_IP` is set before attempting to assign it
---
 .gitlab-ci.yml | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index cadedd5..086851b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -60,11 +60,25 @@ deploy_ood_proxy_node:
         --column id \
         $OOD_PROXY_NAME)
       
-      # Log the created instance ID for debugging
       echo "Created PROXY_INSTANCE_ID: $PROXY_INSTANCE_ID"
 
-      # Add a floating IP to the created server
-      openstack server add floating ip $OOD_PROXY_NAME $PROXY_IP
+      # Check if the PROXY_IP is set and exists
+      if [ -z "$PROXY_IP" ]; then
+        echo "ERROR: PROXY_IP variable is not set"
+        exit 1
+      fi
+
+      # Check if the floating IP is available
+      FLOATING_IP=$(openstack floating ip list --format value --column Floating_IP_Address | grep -w "$PROXY_IP")
+
+      if [ -z "$FLOATING_IP" ]; then
+        echo "ERROR: No Floating IP found for ${PROXY_IP}"
+        exit 1
+      else
+        # Add the floating IP to the created server
+        openstack server add floating ip $OOD_PROXY_NAME $PROXY_IP
+        echo "Successfully assigned Floating IP: $PROXY_IP to the server"
+      fi
 
       # Store the instance ID in variables.env for later use
       echo "PROXY_INSTANCE_ID=$PROXY_INSTANCE_ID" >> $CI_PROJECT_DIR/variables.env
@@ -72,3 +86,4 @@ deploy_ood_proxy_node:
     - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
     - if: $CI_PIPELINE_SOURCE == 'schedule'
     - when: manual
+
-- 
GitLab