Cleanup some inline comments in network/config
[apex-tripleo-heat-templates.git] / validation-scripts / all-nodes.sh
index 31b4d6b..0b8b352 100644 (file)
@@ -1,6 +1,25 @@
 #!/bin/bash
 set -e
 
+function ping_retry() {
+  local IP_ADDR=$1
+  local TIMES=${2:-'10'}
+  local COUNT=0
+  local PING_CMD=ping
+  if [[ $IP_ADDR =~ ":" ]]; then
+    PING_CMD=ping6
+  fi
+  until [ $COUNT -ge $TIMES ]; do
+    if $PING_CMD -w 300 -c 1 $IP_ADDR &> /dev/null; then
+      echo "Ping to $IP_ADDR succeeded."
+      return 0
+    fi
+    echo "Ping to $IP_ADDR failed. Retrying..."
+    COUNT=$(($COUNT + 1))
+  done
+  return 1
+}
+
 # For each unique remote IP (specified via Heat) we check to
 # see if one of the locally configured networks matches and if so we
 # attempt a ping test the remote network IP.
@@ -9,17 +28,15 @@ function ping_controller_ips() {
   for REMOTE_IP in $(echo $REMOTE_IPS | sed -e "s| |\n|g" | sort -u); do
     if [[ $REMOTE_IP =~ ":" ]]; then
       networks=$(ip -6 r | grep -v default | cut -d " " -f 1 | grep -v "unreachable")
-      ping=ping6
     else
       networks=$(ip r | grep -v default | cut -d " " -f 1)
-      ping=ping
     fi
     for LOCAL_NETWORK in $networks; do
       in_network=$(python -c "import ipaddr; net=ipaddr.IPNetwork('$LOCAL_NETWORK'); addr=ipaddr.IPAddress('$REMOTE_IP'); print(addr in net)")
       if [[ $in_network == "True" ]]; then
-        echo -n "Trying to ping $REMOTE_IP for local network $LOCAL_NETWORK..."
+        echo "Trying to ping $REMOTE_IP for local network ${LOCAL_NETWORK}."
         set +e
-        if ! $ping -W 300 -c 1 $REMOTE_IP &> /dev/null; then
+        if ! ping_retry $REMOTE_IP; then
           echo "FAILURE"
           echo "$REMOTE_IP is not pingable. Local Network: $LOCAL_NETWORK" >&2
           exit 1
@@ -40,7 +57,7 @@ function ping_default_gateways() {
   set +e
   for GW in $DEFAULT_GW; do
     echo -n "Trying to ping default gateway ${GW}..."
-    if ! ping -c 1 $GW &> /dev/null; then
+    if ! ping_retry $GW; then
       echo "FAILURE"
       echo "$GW is not pingable."
       exit 1