#!/bin/bash

# Required:
# The corresponding test tenant/user needs to be created
# provide keystonerc
# along it's network/subnet/router/gateway and floating IP

function get_id () {
  echo `"$@" | awk '/ id / {print $4}'`
}

vm_name=test-$$-$(date +%s)
image='rhel-guest-image-6-6.5-20140116.1-1'
image='rhel-guest-image-6-6.5-20131115.0-1'
flavor=m1.xsmall
floatingip=10.16.18.96
keystonerc=/etc/nagios/keystonerc_nagios

source $keystonerc

BOOT=$(nova boot --flavor=${flavor} --image=${image} ${vm_name}) # 2>&1 > /dev/null
rp=$?
if [[ "$rp" -ne 0 ]]
then
  echo "Neutron network KO:"
  echo $BOOT
  exit 2
fi

vm_id=$(get_id nova show ${vm_name})
sleep 5

while ! nova show ${vm_id} | grep 'ACTIVE' 2>&1 > /dev/null
do
  sleep 3
done

FLOATINGIP=$(nova add-floating-ip ${vm_id} ${floatingip}) # 2>&1 > /dev/null
rp=$?
if [[ "$rp" -ne 0 ]]
then
  echo "Neutron network KO:"
  echo $FLOATINGIP
  exit 2
fi

PING=$(ping -c 3 $floatingip)
rp=$?
nova delete  ${vm_id}
if [[ "$rp" -ne 0 ]]
then
  echo "Neutron network KO:"
  echo $PING
  exit 2
fi

echo "Neutron: Floating IP responding"
echo $PING
exit 0
