[CORD-1305] PPPoE Client
Change-Id: Id5ae5ba0ce0cbb89d434fb34d4c42796c61c059e
diff --git a/extensions/pppoe/scripts/nova_vsg_monitor.sh b/extensions/pppoe/scripts/nova_vsg_monitor.sh
new file mode 100755
index 0000000..e62c46a
--- /dev/null
+++ b/extensions/pppoe/scripts/nova_vsg_monitor.sh
@@ -0,0 +1,120 @@
+#!/usr/bin/env bash
+#************************************************************/
+#** File: nova_vsg_monitor.sh */
+#** Contents: Contains shell script to periodically */
+#** (every minute) check VSG status. If VSG is*/
+#** up calls, prepare vSG with the */
+#** necessary packages and start vCPE */
+#** program inside VSG. When vCPE comes up */
+#** execute vsg_vcep_setup.sh script */
+#************************************************************/
+function is_vsg_active() {
+
+ echo "Checking vSG status..."
+ vcpe=0
+ ping=0
+ active=0
+
+ # check if vsg is active, if vsg is not active return
+ if [ 'nova list --all-tenants | grep $1 | grep ACTIVE' ]; then
+ active=1
+ #echo "VSG is ACTIVE"
+ else
+ #echo "VSG is not active, exit"
+ return 0
+ fi
+
+ # check if ping is ok
+ if ssh ubuntu@$MGMTIP "ping -c 3 8.8.8.8" > /dev/null; then
+ ping=1
+ #echo "PING OK"
+ fi
+
+ # if all the above checks are ok then vsg is active
+ if [[ "$active" == 1 && "$ping" == 1 ]]; then
+ #echo "VSG is ACTIVE"
+ return 1
+ else
+ return 0
+ fi
+
+}
+
+# Read the temp_id.txt file and fill the array named "array"
+getArray() {
+ array=() # Create array
+ while IFS= read -r line # Read a line
+ do
+ array+=("$line") # Append line to the array
+ done < "$1"
+}
+
+function check_vsg_status() {
+
+ source ${HOME_DIR}/admin-openrc.sh
+
+ echo "Checking for new VSG..."
+
+ file_temp="${HOME_DIR}/temp_id.txt"
+ file_id="${HOME_DIR}/$PPPOE_VSG_ID_FILE_NAME"
+
+ nova list --all-tenants|grep mysite_vsg|awk '{print $2}' > $file_temp
+
+ getArray $file_temp
+
+ for id in "${array[@]}"
+ do
+ # if VSG Id does not exist, add it if VSG is active
+ if ! grep -q $id "$file_id" > /dev/null; then
+ echo "Found new VSG"
+ echo "VSG ID=$id"
+
+ MGMTIP=$( nova interface-list $id|grep 172.27|awk '{print $8}' )
+
+ echo "MGMTIP: $MGMTIP"
+ if [ ! "$MGMTIP" ];then
+ echo "MGMTIP:$MGMTIP is null, continue"
+ continue
+ fi
+
+ is_vsg_active $MGMTIP $id
+ is_active=$?
+
+ if [[ $is_active -eq 1 ]]; then
+ echo "VSG is active"
+ # add vsg ID to the file
+ echo "$id" >> $file_id
+
+ echo "Calling VSG Setup script"
+ vsg_id=`cat $file_id|wc -l`
+ echo "Setting up vsg_id:.....$vsg_id CP_PREFIX= $VCPEPROXY_CP_IP_PREFIX"
+ source ./nova_vsg_setup.sh $MGMTIP $vsg_id
+ echo "VSG Instance $vsg_id setup is complete"
+ else
+ echo "VSG is not active"
+ fi
+ fi
+ done
+}
+
+echo "nova_vsg_monitor: Execution Begin"
+
+if [ -z $HOME_DIR ]; then
+ echo "HOME_DIR env variable is not...Using current directory as home"
+ HOME_DIR=`pwd`
+fi
+
+while true
+do
+ echo "Periodically checking for new VSG"
+
+ MGMTIP=""
+ #echo "BEFORE: $MGMTIP"
+ check_vsg_status
+
+ date
+ printf "\n"
+ sleep 60
+
+done
+echo "nova_vsg_monitor.sh: Execution End"