add checks to make sure that services are started
diff --git a/stack.sh b/stack.sh
index 44665c4..28aa4b7 100755
--- a/stack.sh
+++ b/stack.sh
@@ -408,10 +408,33 @@
screen -d -m -S nova -t nova
sleep 1
-screen_it g-api "cd $GLANCE_DIR; bin/glance-api --config-file=etc/glance-api.conf"
-screen_it g-reg "cd $GLANCE_DIR; bin/glance-registry --config-file=etc/glance-registry.conf"
-screen_it key "$KEYSTONE_DIR/bin/keystone --config-file $KEYSTONE_CONF"
-screen_it n-api "$NOVA_DIR/bin/nova-api"
+if [[ "$ENABLED_SERVICES" =~ "g-reg" ]]; then
+ screen_it g-reg "cd $GLANCE_DIR; bin/glance-registry --config-file=etc/glance-registry.conf"
+fi
+
+if [[ "$ENABLED_SERVICES" =~ "g-api" ]]; then
+ screen_it g-api "cd $GLANCE_DIR; bin/glance-api --config-file=etc/glance-api.conf"
+ while ! wget -q -O- http://$GLANCE_HOSTPORT; do
+ echo "Waiting for g-api ($GLANCE_HOSTPORT) to start..."
+ sleep 1
+ done
+fi
+
+if [[ "$ENABLED_SERVICES" =~ "key" ]]; then
+ screen_it key "$KEYSTONE_DIR/bin/keystone --config-file $KEYSTONE_CONF"
+ while ! wget -q -O- http://127.0.0.1:5000; do
+ echo "Waiting for keystone to start..."
+ sleep 1
+ done
+fi
+
+if [[ "$ENABLED_SERVICES" =~ "n-api" ]]; then
+ screen_it n-api "$NOVA_DIR/bin/nova-api"
+ while ! wget -q -O- http://127.0.0.1:8774; do
+ echo "Waiting for nova-api to start..."
+ sleep 1
+ done
+fi
# Launching nova-compute should be as simple as running ``nova-compute`` but
# have to do a little more than that in our script. Since we add the group
# ``libvirtd`` to our user in this script, when nova-compute is run it is