more converting sleep -> timeouts
diff --git a/exercise.sh b/exercise.sh
index feecfaf..b79dc3c 100755
--- a/exercise.sh
+++ b/exercise.sh
@@ -82,11 +82,11 @@
 # Waiting for boot
 # ----------------
 
-# let's give it 5 seconds to launch
-sleep 5
-
-# check that the status is active
-nova show $NAME | grep status | grep -q ACTIVE
+# check that the status is active within 10 seconds
+if ! timeout 10 sh -c "while ! nova show $NAME | grep status | grep -q ACTIVE; do sleep 1; done"; then
+    echo "server didn't become active!"
+    exit 1
+fi
 
 # get the IP of the server
 IP=`nova show $NAME | grep "private network" | cut -d"|" -f3`
@@ -121,21 +121,21 @@
 # add floating ip to our server
 nova add-floating-ip $NAME $FLOATING_IP
 
-# sleep for a smidge
-sleep 5
+# test we can ping our floating ip within 10 seconds
+if ! timeout 10 sh -c "while ! ping -c1 -w1 $FLOATING_IP; do sleep 1; done"; then
+    echo "Couldn't ping server with floating ip"
+    exit 1
+fi
 
-# ping our floating ip
 ping -c1 -w1 $FLOATING_IP
 
 # dis-allow icmp traffic (ping)
 nova secgroup-delete-rule $SECGROUP icmp -1 -1 0.0.0.0/0
 
-# sleep for a smidge
-sleep 5
-
-# ping our floating ip
-if ( ping -c1 -w1 $FLOATING_IP ); then
+# test we can aren't able to ping our floating ip within 10 seconds
+if ! timeout 10 sh -c "while ping -c1 -w1 $FLOATING_IP; do sleep 1; done"; then
     print "Security group failure - ping should not be allowed!"
+    echo "Couldn't ping server with floating ip"
     exit 1
 fi