77#
88
99
10+ echo " **************************************************"
11+ echo " Begin DevStack Exercise: $0 "
12+ echo " **************************************************"
13+
1014# This script exits on an error so that errors don't compound and you see
1115# only the first error that occured.
1216set -o errexit
@@ -20,9 +24,14 @@ set -o xtrace
2024# ========
2125
2226# Use openrc + stackrc + localrc for settings
23- pushd $( cd $( dirname " $0 " ) /.. && pwd)
27+ pushd $( cd $( dirname " $0 " ) /.. && pwd) > /dev/null
28+
29+ # Import common functions
30+ source ./functions
31+
32+ # Import configuration
2433source ./openrc
25- popd
34+ popd > /dev/null
2635
2736# Max time to wait while vm goes from build to active state
2837ACTIVE_TIMEOUT=${ACTIVE_TIMEOUT:- 30}
8796# List of instance types:
8897nova flavor-list
8998
90- INSTANCE_TYPE=` nova flavor-list | grep $DEFAULT_INSTANCE_TYPE | cut -d " | " -f2 `
99+ INSTANCE_TYPE=` nova flavor-list | grep $DEFAULT_INSTANCE_TYPE | get_field 1 `
91100if [[ -z " $INSTANCE_TYPE " ]]; then
92101 # grab the first flavor in the list to launch if default doesn't exist
93- INSTANCE_TYPE=` nova flavor-list | head -n 4 | tail -n 1 | cut -d " | " -f2 `
102+ INSTANCE_TYPE=` nova flavor-list | head -n 4 | tail -n 1 | get_field 1 `
94103fi
95104
96- NAME=" myserver "
105+ NAME=" ex-float "
97106
98- VM_UUID=` nova boot --flavor $INSTANCE_TYPE --image $IMAGE $NAME --security_groups=$SECGROUP | grep ' id ' | cut -d" |" -f3 | sed ' s/ //g' `
107+ VM_UUID=` nova boot --flavor $INSTANCE_TYPE --image $IMAGE $NAME --security_groups=$SECGROUP | grep ' id ' | get_field 2`
108+ die_if_not_set VM_UUID " Failure launching $NAME "
99109
100110# Testing
101111# =======
@@ -114,7 +124,8 @@ if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova show $VM_UUID | grep status | g
114124fi
115125
116126# get the IP of the server
117- IP=` nova show $VM_UUID | grep " private network" | cut -d" |" -f3`
127+ IP=` nova show $VM_UUID | grep " private network" | get_field 2`
128+ die_if_not_set IP " Failure retrieving IP address"
118129
119130# for single node deployments, we can ping private ips
120131MULTI_HOST=${MULTI_HOST:- 0}
147158nova secgroup-list-rules $SECGROUP
148159
149160# allocate a floating ip from default pool
150- FLOATING_IP=` nova floating-ip-create | grep $DEFAULT_FLOATING_POOL | cut -d ' |' -f2`
161+ FLOATING_IP=` nova floating-ip-create | grep $DEFAULT_FLOATING_POOL | get_field 1`
162+ die_if_not_set FLOATING_IP " Failure creating floating IP"
151163
152164# list floating addresses
153165if ! timeout $ASSOCIATE_TIMEOUT sh -c " while ! nova floating-ip-list | grep -q $FLOATING_IP ; do sleep 1; done" ; then
157169
158170# add floating ip to our server
159171nova add-floating-ip $VM_UUID $FLOATING_IP
172+ die_if_error " Failure adding floating IP $FLOATING_IP to $NAME "
160173
161174# test we can ping our floating ip within ASSOCIATE_TIMEOUT seconds
162175if ! timeout $ASSOCIATE_TIMEOUT sh -c " while ! ping -c1 -w1 $FLOATING_IP ; do sleep 1; done" ; then
@@ -165,7 +178,8 @@ if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! ping -c1 -w1 $FLOATING_IP; do sle
165178fi
166179
167180# Allocate an IP from second floating pool
168- TEST_FLOATING_IP=` nova floating-ip-create $TEST_FLOATING_POOL | grep $TEST_FLOATING_POOL | cut -d ' |' -f2`
181+ TEST_FLOATING_IP=` nova floating-ip-create $TEST_FLOATING_POOL | grep $TEST_FLOATING_POOL | get_field 1`
182+ die_if_not_set TEST_FLOATING_IP " Failure creating floating IP in $TEST_FLOATING_POOL "
169183
170184# list floating addresses
171185if ! timeout $ASSOCIATE_TIMEOUT sh -c " while ! nova floating-ip-list | grep $TEST_FLOATING_POOL | grep -q $TEST_FLOATING_IP ; do sleep 1; done" ; then
175189
176190# dis-allow icmp traffic (ping)
177191nova secgroup-delete-rule $SECGROUP icmp -1 -1 0.0.0.0/0
192+ die_if_error " Failure deleting security group rule from $SECGROUP "
178193
179194# FIXME (anthony): make xs support security groups
180195if [ " $VIRT_DRIVER " != " xenserver" ]; then
188203
189204# de-allocate the floating ip
190205nova floating-ip-delete $FLOATING_IP
206+ die_if_error " Failure deleting floating IP $FLOATING_IP "
191207
192208# Delete second floating IP
193209nova floating-ip-delete $TEST_FLOATING_IP
210+ die_if_error " Failure deleting floating IP $TEST_FLOATING_IP "
194211
195212# shutdown the server
196213nova delete $VM_UUID
214+ die_if_error " Failure deleting instance $NAME "
197215
198216# make sure the VM shuts down within a reasonable time
199217if ! timeout $TERMINATE_TIMEOUT sh -c " while nova show $VM_UUID | grep status | grep -q ACTIVE; do sleep 1; done" ; then
203221
204222# Delete a secgroup
205223nova secgroup-delete $SECGROUP
224+ die_if_error " Failure deleting security group $SECGROUP "
225+
226+ set +o xtrace
227+ echo " **************************************************"
228+ echo " End DevStack Exercise: $0 "
229+ echo " **************************************************"
0 commit comments