* Replace die_if_error() with the simpler die()
* Attempt to clean up unnecessary trace output
* Formatting cleanups on all exercise scripts
Change-Id: I72a542b3a59ee9bf12bee6bcc605edd7579205e0
| ... | ... |
@@ -1,6 +1,13 @@ |
| 1 | 1 |
#!/usr/bin/env bash |
| 2 | 2 |
|
| 3 |
-source ./stackrc |
|
| 3 |
+# **exercise.sh** |
|
| 4 |
+ |
|
| 5 |
+# Keep track of the current devstack directory. |
|
| 6 |
+TOP_DIR=$(cd $(dirname "$0") && pwd) |
|
| 7 |
+ |
|
| 8 |
+# Load local configuration |
|
| 9 |
+source $TOP_DIR/stackrc |
|
| 10 |
+ |
|
| 4 | 11 |
# Run everything in the exercises/ directory that isn't explicitly disabled |
| 5 | 12 |
|
| 6 | 13 |
# comma separated list of script basenames to skip |
| ... | ... |
@@ -21,9 +28,9 @@ for script in $basenames; do |
| 21 | 21 |
if [[ "$SKIP_EXERCISES" =~ $script ]] ; then |
| 22 | 22 |
skips="$skips $script" |
| 23 | 23 |
else |
| 24 |
- echo ========================= |
|
| 24 |
+ echo "=====================================================================" |
|
| 25 | 25 |
echo Running $script |
| 26 |
- echo ========================= |
|
| 26 |
+ echo "=====================================================================" |
|
| 27 | 27 |
$EXERCISE_DIR/$script.sh |
| 28 | 28 |
if [[ $? -ne 0 ]] ; then |
| 29 | 29 |
failures="$failures $script" |
| ... | ... |
@@ -34,8 +41,7 @@ for script in $basenames; do |
| 34 | 34 |
done |
| 35 | 35 |
|
| 36 | 36 |
# output status of exercise run |
| 37 |
-echo ========================= |
|
| 38 |
-echo ========================= |
|
| 37 |
+echo "=====================================================================" |
|
| 39 | 38 |
for script in $skips; do |
| 40 | 39 |
echo SKIP $script |
| 41 | 40 |
done |
| ... | ... |
@@ -45,6 +51,7 @@ done |
| 45 | 45 |
for script in $failures; do |
| 46 | 46 |
echo FAILED $script |
| 47 | 47 |
done |
| 48 |
+echo "=====================================================================" |
|
| 48 | 49 |
|
| 49 | 50 |
if [ -n "$failures" ] ; then |
| 50 | 51 |
exit 1 |
| ... | ... |
@@ -8,9 +8,9 @@ |
| 8 | 8 |
# * Format and install an os onto the volume |
| 9 | 9 |
# * Detach volume from builder, and then boot volume-backed instance |
| 10 | 10 |
|
| 11 |
-echo "**************************************************" |
|
| 11 |
+echo "*********************************************************************" |
|
| 12 | 12 |
echo "Begin DevStack Exercise: $0" |
| 13 |
-echo "**************************************************" |
|
| 13 |
+echo "*********************************************************************" |
|
| 14 | 14 |
|
| 15 | 15 |
# This script exits on an error so that errors don't compound and you see |
| 16 | 16 |
# only the first error that occured. |
| ... | ... |
@@ -46,9 +46,12 @@ DEFAULT_INSTANCE_TYPE=${DEFAULT_INSTANCE_TYPE:-m1.tiny}
|
| 46 | 46 |
# Default floating IP pool name |
| 47 | 47 |
DEFAULT_FLOATING_POOL=${DEFAULT_FLOATING_POOL:-nova}
|
| 48 | 48 |
|
| 49 |
+ |
|
| 50 |
+# Launching servers |
|
| 51 |
+# ================= |
|
| 52 |
+ |
|
| 49 | 53 |
# Grab the id of the image to launch |
| 50 | 54 |
IMAGE=`glance -f index | egrep $DEFAULT_IMAGE_NAME | head -1 | cut -d" " -f1` |
| 51 |
- |
|
| 52 | 55 |
die_if_not_set IMAGE "Failure getting image" |
| 53 | 56 |
|
| 54 | 57 |
# Instance and volume names |
| ... | ... |
@@ -88,7 +91,8 @@ nova keypair-add $KEY_NAME > $KEY_FILE |
| 88 | 88 |
chmod 600 $KEY_FILE |
| 89 | 89 |
|
| 90 | 90 |
# Boot our instance |
| 91 |
-VM_UUID=`nova boot --flavor $INSTANCE_TYPE --image $IMAGE --security_groups=$SECGROUP --key_name $KEY_NAME $INSTANCE_NAME | grep ' id ' | cut -d"|" -f3 | sed 's/ //g'` |
|
| 91 |
+VM_UUID=`nova boot --flavor $INSTANCE_TYPE --image $IMAGE --security_groups=$SECGROUP --key_name $KEY_NAME $INSTANCE_NAME | grep ' id ' | get_field 2` |
|
| 92 |
+die_if_not_set VM_UUID "Failure launching $INSTANCE_NAME" |
|
| 92 | 93 |
|
| 93 | 94 |
# check that the status is active within ACTIVE_TIMEOUT seconds |
| 94 | 95 |
if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova show $VM_UUID | grep status | grep -q ACTIVE; do sleep 1; done"; then |
| ... | ... |
@@ -105,7 +109,7 @@ if [ "$FREE_ALL_FLOATING_IPS" = "True" ]; then |
| 105 | 105 |
fi |
| 106 | 106 |
|
| 107 | 107 |
# Allocate floating ip |
| 108 |
-FLOATING_IP=`nova floating-ip-create | grep $DEFAULT_FLOATING_POOL | cut -d '|' -f2 | tr -d ' '` |
|
| 108 |
+FLOATING_IP=`nova floating-ip-create | grep $DEFAULT_FLOATING_POOL | get_field 1` |
|
| 109 | 109 |
|
| 110 | 110 |
# Make sure the ip gets allocated |
| 111 | 111 |
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! nova floating-ip-list | grep -q $FLOATING_IP; do sleep 1; done"; then |
| ... | ... |
@@ -133,7 +137,7 @@ fi |
| 133 | 133 |
|
| 134 | 134 |
# FIXME (anthony) - python-novaclient should accept a volume_name for the attachment param? |
| 135 | 135 |
DEVICE=/dev/vdb |
| 136 |
-VOLUME_ID=`nova volume-list | grep $VOL_NAME | cut -d '|' -f 2 | tr -d ' '` |
|
| 136 |
+VOLUME_ID=`nova volume-list | grep $VOL_NAME | get_field 1` |
|
| 137 | 137 |
nova volume-attach $INSTANCE_NAME $VOLUME_ID $DEVICE |
| 138 | 138 |
|
| 139 | 139 |
# Wait till volume is attached |
| ... | ... |
@@ -192,7 +196,8 @@ nova volume-detach $INSTANCE_NAME $VOLUME_ID |
| 192 | 192 |
# The format of mapping is: |
| 193 | 193 |
# <dev_name>=<id>:<type>:<size(GB)>:<delete_on_terminate> |
| 194 | 194 |
# Leaving the middle two fields blank appears to do-the-right-thing |
| 195 |
-VOL_VM_UUID=`nova boot --flavor $INSTANCE_TYPE --image $IMAGE --block_device_mapping vda=$VOLUME_ID:::0 --security_groups=$SECGROUP --key_name $KEY_NAME $VOL_INSTANCE_NAME | grep ' id ' | cut -d"|" -f3 | sed 's/ //g'` |
|
| 195 |
+VOL_VM_UUID=`nova boot --flavor $INSTANCE_TYPE --image $IMAGE --block_device_mapping vda=$VOLUME_ID:::0 --security_groups=$SECGROUP --key_name $KEY_NAME $VOL_INSTANCE_NAME | grep ' id ' | get_field 2` |
|
| 196 |
+die_if_not_set VOL_VM_UUID "Failure launching $VOL_INSTANCE_NAME" |
|
| 196 | 197 |
|
| 197 | 198 |
# Check that the status is active within ACTIVE_TIMEOUT seconds |
| 198 | 199 |
if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova show $VOL_VM_UUID | grep status | grep -q ACTIVE; do sleep 1; done"; then |
| ... | ... |
@@ -201,7 +206,7 @@ if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova show $VOL_VM_UUID | grep status |
| 201 | 201 |
fi |
| 202 | 202 |
|
| 203 | 203 |
# Add floating ip to our server |
| 204 |
-nova remove-floating-ip $VM_UUID $FLOATING_IP |
|
| 204 |
+nova remove-floating-ip $VM_UUID $FLOATING_IP |
|
| 205 | 205 |
|
| 206 | 206 |
# Gratuitous sleep, probably hiding a race condition :/ |
| 207 | 207 |
sleep 1 |
| ... | ... |
@@ -221,7 +226,8 @@ echo "success!" |
| 221 | 221 |
EOF |
| 222 | 222 |
|
| 223 | 223 |
# Delete volume backed instance |
| 224 |
-nova delete $VOL_INSTANCE_NAME |
|
| 224 |
+nova delete $VOL_INSTANCE_NAME || \ |
|
| 225 |
+ die "Failure deleting instance volume $VOL_INSTANCE_NAME" |
|
| 225 | 226 |
|
| 226 | 227 |
# Wait till our volume is no longer in-use |
| 227 | 228 |
if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova volume-list | grep $VOL_NAME | grep available; do sleep 1; done"; then |
| ... | ... |
@@ -230,10 +236,12 @@ if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova volume-list | grep $VOL_NAME | |
| 230 | 230 |
fi |
| 231 | 231 |
|
| 232 | 232 |
# Delete the volume |
| 233 |
-nova volume-delete $VOL_NAME |
|
| 233 |
+nova volume-delete $VOL_NAME || \ |
|
| 234 |
+ die "Failure deleting volume $VOLUME_NAME" |
|
| 234 | 235 |
|
| 235 | 236 |
# Delete instance |
| 236 |
-nova delete $INSTANCE_NAME |
|
| 237 |
+nova delete $INSTANCE_NAME || \ |
|
| 238 |
+ die "Failure deleting instance $INSTANCE_NAME" |
|
| 237 | 239 |
|
| 238 | 240 |
# Wait for termination |
| 239 | 241 |
if ! timeout $ACTIVE_TIMEOUT sh -c "while nova show $INSTANCE_NAME; do sleep 1; done"; then |
| ... | ... |
@@ -242,12 +250,14 @@ if ! timeout $ACTIVE_TIMEOUT sh -c "while nova show $INSTANCE_NAME; do sleep 1; |
| 242 | 242 |
fi |
| 243 | 243 |
|
| 244 | 244 |
# De-allocate the floating ip |
| 245 |
-nova floating-ip-delete $FLOATING_IP |
|
| 245 |
+nova floating-ip-delete $FLOATING_IP || \ |
|
| 246 |
+ die "Failure deleting floating IP $FLOATING_IP" |
|
| 246 | 247 |
|
| 247 |
-# Delete secgroup |
|
| 248 |
-nova secgroup-delete $SECGROUP |
|
| 248 |
+# Delete a secgroup |
|
| 249 |
+nova secgroup-delete $SECGROUP || \ |
|
| 250 |
+ die "Failure deleting security group $SECGROUP" |
|
| 249 | 251 |
|
| 250 | 252 |
set +o xtrace |
| 251 |
-echo "**************************************************" |
|
| 252 |
-echo "End DevStack Exercise: $0" |
|
| 253 |
-echo "**************************************************" |
|
| 253 |
+echo "*********************************************************************" |
|
| 254 |
+echo "SUCCESS: End DevStack Exercise: $0" |
|
| 255 |
+echo "*********************************************************************" |
| ... | ... |
@@ -1,11 +1,13 @@ |
| 1 | 1 |
#!/usr/bin/env bash |
| 2 | 2 |
|
| 3 |
+# **bundle.sh** |
|
| 4 |
+ |
|
| 3 | 5 |
# we will use the ``euca2ools`` cli tool that wraps the python boto |
| 4 |
-# library to test ec2 compatibility |
|
| 6 |
+# library to test ec2 bundle upload compatibility |
|
| 5 | 7 |
|
| 6 |
-echo "**************************************************" |
|
| 8 |
+echo "*********************************************************************" |
|
| 7 | 9 |
echo "Begin DevStack Exercise: $0" |
| 8 |
-echo "**************************************************" |
|
| 10 |
+echo "*********************************************************************" |
|
| 9 | 11 |
|
| 10 | 12 |
# This script exits on an error so that errors don't compound and you see |
| 11 | 13 |
# only the first error that occured. |
| ... | ... |
@@ -46,12 +48,9 @@ REGISTER_TIMEOUT=${REGISTER_TIMEOUT:-15}
|
| 46 | 46 |
BUCKET=testbucket |
| 47 | 47 |
IMAGE=bundle.img |
| 48 | 48 |
truncate -s 5M /tmp/$IMAGE |
| 49 |
-euca-bundle-image -i /tmp/$IMAGE |
|
| 50 |
-die_if_error "Failure bundling image $IMAGE" |
|
| 51 |
- |
|
| 49 |
+euca-bundle-image -i /tmp/$IMAGE || die "Failure bundling image $IMAGE" |
|
| 52 | 50 |
|
| 53 |
-euca-upload-bundle -b $BUCKET -m /tmp/$IMAGE.manifest.xml |
|
| 54 |
-die_if_error "Failure uploading bundle $IMAGE to $BUCKET" |
|
| 51 |
+euca-upload-bundle -b $BUCKET -m /tmp/$IMAGE.manifest.xml || die "Failure uploading bundle $IMAGE to $BUCKET" |
|
| 55 | 52 |
|
| 56 | 53 |
AMI=`euca-register $BUCKET/$IMAGE.manifest.xml | cut -f2` |
| 57 | 54 |
die_if_not_set AMI "Failure registering $BUCKET/$IMAGE" |
| ... | ... |
@@ -63,10 +62,9 @@ if ! timeout $REGISTER_TIMEOUT sh -c "while euca-describe-images | grep $AMI | g |
| 63 | 63 |
fi |
| 64 | 64 |
|
| 65 | 65 |
# Clean up |
| 66 |
-euca-deregister $AMI |
|
| 67 |
-die_if_error "Failure deregistering $AMI" |
|
| 66 |
+euca-deregister $AMI || die "Failure deregistering $AMI" |
|
| 68 | 67 |
|
| 69 | 68 |
set +o xtrace |
| 70 |
-echo "**************************************************" |
|
| 71 |
-echo "End DevStack Exercise: $0" |
|
| 72 |
-echo "**************************************************" |
|
| 69 |
+echo "*********************************************************************" |
|
| 70 |
+echo "SUCCESS: End DevStack Exercise: $0" |
|
| 71 |
+echo "*********************************************************************" |
| ... | ... |
@@ -2,9 +2,9 @@ |
| 2 | 2 |
|
| 3 | 3 |
# Test OpenStack client authentication aguemnts handling |
| 4 | 4 |
|
| 5 |
-echo "**************************************************" |
|
| 5 |
+echo "*********************************************************************" |
|
| 6 | 6 |
echo "Begin DevStack Exercise: $0" |
| 7 |
-echo "**************************************************" |
|
| 7 |
+echo "*********************************************************************" |
|
| 8 | 8 |
|
| 9 | 9 |
# Settings |
| 10 | 10 |
# ======== |
| ... | ... |
@@ -135,8 +135,8 @@ report "Nova" $STATUS_NOVA |
| 135 | 135 |
report "Glance" $STATUS_GLANCE |
| 136 | 136 |
report "Swift" $STATUS_SWIFT |
| 137 | 137 |
|
| 138 |
-echo "**************************************************" |
|
| 139 |
-echo "End DevStack Exercise: $0" |
|
| 140 |
-echo "**************************************************" |
|
| 138 |
+echo "*********************************************************************" |
|
| 139 |
+echo "SUCCESS: End DevStack Exercise: $0" |
|
| 140 |
+echo "*********************************************************************" |
|
| 141 | 141 |
|
| 142 | 142 |
exit $RETURN |
| ... | ... |
@@ -2,9 +2,9 @@ |
| 2 | 2 |
|
| 3 | 3 |
# Test OpenStack client enviroment variable handling |
| 4 | 4 |
|
| 5 |
-echo "**************************************************" |
|
| 5 |
+echo "*********************************************************************" |
|
| 6 | 6 |
echo "Begin DevStack Exercise: $0" |
| 7 |
-echo "**************************************************" |
|
| 7 |
+echo "*********************************************************************" |
|
| 8 | 8 |
|
| 9 | 9 |
# Verify client workage |
| 10 | 10 |
VERIFY=${1:-""}
|
| ... | ... |
@@ -149,8 +149,8 @@ report "EC2" $STATUS_EC2 |
| 149 | 149 |
report "Glance" $STATUS_GLANCE |
| 150 | 150 |
report "Swift" $STATUS_SWIFT |
| 151 | 151 |
|
| 152 |
-echo "**************************************************" |
|
| 153 |
-echo "End DevStack Exercise: $0" |
|
| 154 |
-echo "**************************************************" |
|
| 152 |
+echo "*********************************************************************" |
|
| 153 |
+echo "SUCCESS: End DevStack Exercise: $0" |
|
| 154 |
+echo "*********************************************************************" |
|
| 155 | 155 |
|
| 156 | 156 |
exit $RETURN |
| ... | ... |
@@ -1,11 +1,13 @@ |
| 1 | 1 |
#!/usr/bin/env bash |
| 2 | 2 |
|
| 3 |
+# **euca.sh** |
|
| 4 |
+ |
|
| 3 | 5 |
# we will use the ``euca2ools`` cli tool that wraps the python boto |
| 4 | 6 |
# library to test ec2 compatibility |
| 5 | 7 |
|
| 6 |
-echo "**************************************************" |
|
| 8 |
+echo "*********************************************************************" |
|
| 7 | 9 |
echo "Begin DevStack Exercise: $0" |
| 8 |
-echo "**************************************************" |
|
| 10 |
+echo "*********************************************************************" |
|
| 9 | 11 |
|
| 10 | 12 |
# This script exits on an error so that errors don't compound and you see |
| 11 | 13 |
# only the first error that occured. |
| ... | ... |
@@ -15,6 +17,7 @@ set -o errexit |
| 15 | 15 |
# an error. It is also useful for following allowing as the install occurs. |
| 16 | 16 |
set -o xtrace |
| 17 | 17 |
|
| 18 |
+ |
|
| 18 | 19 |
# Settings |
| 19 | 20 |
# ======== |
| 20 | 21 |
|
| ... | ... |
@@ -34,6 +37,10 @@ source $TOP_DIR/exerciserc |
| 34 | 34 |
# Instance type to create |
| 35 | 35 |
DEFAULT_INSTANCE_TYPE=${DEFAULT_INSTANCE_TYPE:-m1.tiny}
|
| 36 | 36 |
|
| 37 |
+ |
|
| 38 |
+# Launching a server |
|
| 39 |
+# ================== |
|
| 40 |
+ |
|
| 37 | 41 |
# Find a machine image to boot |
| 38 | 42 |
IMAGE=`euca-describe-images | grep machine | cut -f2 | head -n1` |
| 39 | 43 |
|
| ... | ... |
@@ -64,12 +71,12 @@ FLOATING_IP=`euca-allocate-address | cut -f2` |
| 64 | 64 |
die_if_not_set FLOATING_IP "Failure allocating floating IP" |
| 65 | 65 |
|
| 66 | 66 |
# Associate floating address |
| 67 |
-euca-associate-address -i $INSTANCE $FLOATING_IP |
|
| 68 |
-die_if_error "Failure associating address $FLOATING_IP to $INSTANCE" |
|
| 67 |
+euca-associate-address -i $INSTANCE $FLOATING_IP || \ |
|
| 68 |
+ die "Failure associating address $FLOATING_IP to $INSTANCE" |
|
| 69 | 69 |
|
| 70 | 70 |
# Authorize pinging |
| 71 |
-euca-authorize -P icmp -s 0.0.0.0/0 -t -1:-1 $SECGROUP |
|
| 72 |
-die_if_error "Failure authorizing rule in $SECGROUP" |
|
| 71 |
+euca-authorize -P icmp -s 0.0.0.0/0 -t -1:-1 $SECGROUP || \ |
|
| 72 |
+ die "Failure authorizing rule in $SECGROUP" |
|
| 73 | 73 |
|
| 74 | 74 |
# Test we can ping our floating ip within ASSOCIATE_TIMEOUT seconds |
| 75 | 75 |
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! ping -c1 -w1 $FLOATING_IP; do sleep 1; done"; then |
| ... | ... |
@@ -78,12 +85,12 @@ if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! ping -c1 -w1 $FLOATING_IP; do sle |
| 78 | 78 |
fi |
| 79 | 79 |
|
| 80 | 80 |
# Revoke pinging |
| 81 |
-euca-revoke -P icmp -s 0.0.0.0/0 -t -1:-1 $SECGROUP |
|
| 82 |
-die_if_error "Failure revoking rule in $SECGROUP" |
|
| 81 |
+euca-revoke -P icmp -s 0.0.0.0/0 -t -1:-1 $SECGROUP || \ |
|
| 82 |
+ die "Failure revoking rule in $SECGROUP" |
|
| 83 | 83 |
|
| 84 | 84 |
# Release floating address |
| 85 |
-euca-disassociate-address $FLOATING_IP |
|
| 86 |
-die_if_error "Failure disassociating address $FLOATING_IP" |
|
| 85 |
+euca-disassociate-address $FLOATING_IP || \ |
|
| 86 |
+ die "Failure disassociating address $FLOATING_IP" |
|
| 87 | 87 |
|
| 88 | 88 |
# Wait just a tick for everything above to complete so release doesn't fail |
| 89 | 89 |
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while euca-describe-addresses | grep $INSTANCE | grep -q $FLOATING_IP; do sleep 1; done"; then |
| ... | ... |
@@ -92,8 +99,8 @@ if ! timeout $ASSOCIATE_TIMEOUT sh -c "while euca-describe-addresses | grep $INS |
| 92 | 92 |
fi |
| 93 | 93 |
|
| 94 | 94 |
# Release floating address |
| 95 |
-euca-release-address $FLOATING_IP |
|
| 96 |
-die_if_error "Failure releasing address $FLOATING_IP" |
|
| 95 |
+euca-release-address $FLOATING_IP || \ |
|
| 96 |
+ die "Failure releasing address $FLOATING_IP" |
|
| 97 | 97 |
|
| 98 | 98 |
# Wait just a tick for everything above to complete so terminate doesn't fail |
| 99 | 99 |
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while euca-describe-addresses | grep -q $FLOATING_IP; do sleep 1; done"; then |
| ... | ... |
@@ -102,8 +109,8 @@ if ! timeout $ASSOCIATE_TIMEOUT sh -c "while euca-describe-addresses | grep -q $ |
| 102 | 102 |
fi |
| 103 | 103 |
|
| 104 | 104 |
# Terminate instance |
| 105 |
-euca-terminate-instances $INSTANCE |
|
| 106 |
-die_if_error "Failure terminating instance $INSTANCE" |
|
| 105 |
+euca-terminate-instances $INSTANCE || \ |
|
| 106 |
+ die "Failure terminating instance $INSTANCE" |
|
| 107 | 107 |
|
| 108 | 108 |
# Assure it has terminated within a reasonable time |
| 109 | 109 |
if ! timeout $TERMINATE_TIMEOUT sh -c "while euca-describe-instances $INSTANCE | grep -q running; do sleep 1; done"; then |
| ... | ... |
@@ -112,10 +119,10 @@ if ! timeout $TERMINATE_TIMEOUT sh -c "while euca-describe-instances $INSTANCE | |
| 112 | 112 |
fi |
| 113 | 113 |
|
| 114 | 114 |
# Delete group |
| 115 |
-euca-delete-group $SECGROUP |
|
| 116 |
-die_if_error "Failure deleting security group $SECGROUP" |
|
| 115 |
+euca-delete-group $SECGROUP || \ |
|
| 116 |
+ die "Failure deleting security group $SECGROUP" |
|
| 117 | 117 |
|
| 118 | 118 |
set +o xtrace |
| 119 |
-echo "**************************************************" |
|
| 120 |
-echo "End DevStack Exercise: $0" |
|
| 121 |
-echo "**************************************************" |
|
| 119 |
+echo "*********************************************************************" |
|
| 120 |
+echo "SUCCESS: End DevStack Exercise: $0" |
|
| 121 |
+echo "*********************************************************************" |
| ... | ... |
@@ -1,15 +1,13 @@ |
| 1 | 1 |
#!/usr/bin/env bash |
| 2 | 2 |
|
| 3 |
-# **exercise.sh** - using the cloud can be fun |
|
| 3 |
+# **floating_ips.sh** - using the cloud can be fun |
|
| 4 | 4 |
|
| 5 | 5 |
# we will use the ``nova`` cli tool provided by the ``python-novaclient`` |
| 6 |
-# package |
|
| 7 |
-# |
|
| 6 |
+# package to work out the instance connectivity |
|
| 8 | 7 |
|
| 9 |
- |
|
| 10 |
-echo "**************************************************" |
|
| 8 |
+echo "*********************************************************************" |
|
| 11 | 9 |
echo "Begin DevStack Exercise: $0" |
| 12 |
-echo "**************************************************" |
|
| 10 |
+echo "*********************************************************************" |
|
| 13 | 11 |
|
| 14 | 12 |
# This script exits on an error so that errors don't compound and you see |
| 15 | 13 |
# only the first error that occured. |
| ... | ... |
@@ -51,6 +49,7 @@ DEFAULT_FLOATING_POOL=${DEFAULT_FLOATING_POOL:-nova}
|
| 51 | 51 |
# Additional floating IP pool and range |
| 52 | 52 |
TEST_FLOATING_POOL=${TEST_FLOATING_POOL:-test}
|
| 53 | 53 |
|
| 54 |
+ |
|
| 54 | 55 |
# Launching a server |
| 55 | 56 |
# ================== |
| 56 | 57 |
|
| ... | ... |
@@ -162,8 +161,8 @@ if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! nova floating-ip-list | grep -q $ |
| 162 | 162 |
fi |
| 163 | 163 |
|
| 164 | 164 |
# add floating ip to our server |
| 165 |
-nova add-floating-ip $VM_UUID $FLOATING_IP |
|
| 166 |
-die_if_error "Failure adding floating IP $FLOATING_IP to $NAME" |
|
| 165 |
+nova add-floating-ip $VM_UUID $FLOATING_IP || \ |
|
| 166 |
+ die "Failure adding floating IP $FLOATING_IP to $NAME" |
|
| 167 | 167 |
|
| 168 | 168 |
# test we can ping our floating ip within ASSOCIATE_TIMEOUT seconds |
| 169 | 169 |
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! ping -c1 -w1 $FLOATING_IP; do sleep 1; done"; then |
| ... | ... |
@@ -182,8 +181,7 @@ if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! nova floating-ip-list | grep $TES |
| 182 | 182 |
fi |
| 183 | 183 |
|
| 184 | 184 |
# dis-allow icmp traffic (ping) |
| 185 |
-nova secgroup-delete-rule $SECGROUP icmp -1 -1 0.0.0.0/0 |
|
| 186 |
-die_if_error "Failure deleting security group rule from $SECGROUP" |
|
| 185 |
+nova secgroup-delete-rule $SECGROUP icmp -1 -1 0.0.0.0/0 || die "Failure deleting security group rule from $SECGROUP" |
|
| 187 | 186 |
|
| 188 | 187 |
# FIXME (anthony): make xs support security groups |
| 189 | 188 |
if [ "$VIRT_DRIVER" != "xenserver" ]; then |
| ... | ... |
@@ -196,16 +194,13 @@ if [ "$VIRT_DRIVER" != "xenserver" ]; then |
| 196 | 196 |
fi |
| 197 | 197 |
|
| 198 | 198 |
# de-allocate the floating ip |
| 199 |
-nova floating-ip-delete $FLOATING_IP |
|
| 200 |
-die_if_error "Failure deleting floating IP $FLOATING_IP" |
|
| 199 |
+nova floating-ip-delete $FLOATING_IP || die "Failure deleting floating IP $FLOATING_IP" |
|
| 201 | 200 |
|
| 202 | 201 |
# Delete second floating IP |
| 203 |
-nova floating-ip-delete $TEST_FLOATING_IP |
|
| 204 |
-die_if_error "Failure deleting floating IP $TEST_FLOATING_IP" |
|
| 202 |
+nova floating-ip-delete $TEST_FLOATING_IP || die "Failure deleting floating IP $TEST_FLOATING_IP" |
|
| 205 | 203 |
|
| 206 | 204 |
# shutdown the server |
| 207 |
-nova delete $VM_UUID |
|
| 208 |
-die_if_error "Failure deleting instance $NAME" |
|
| 205 |
+nova delete $VM_UUID || die "Failure deleting instance $NAME" |
|
| 209 | 206 |
|
| 210 | 207 |
# make sure the VM shuts down within a reasonable time |
| 211 | 208 |
if ! timeout $TERMINATE_TIMEOUT sh -c "while nova show $VM_UUID | grep status | grep -q ACTIVE; do sleep 1; done"; then |
| ... | ... |
@@ -214,10 +209,9 @@ if ! timeout $TERMINATE_TIMEOUT sh -c "while nova show $VM_UUID | grep status | |
| 214 | 214 |
fi |
| 215 | 215 |
|
| 216 | 216 |
# Delete a secgroup |
| 217 |
-nova secgroup-delete $SECGROUP |
|
| 218 |
-die_if_error "Failure deleting security group $SECGROUP" |
|
| 217 |
+nova secgroup-delete $SECGROUP || die "Failure deleting security group $SECGROUP" |
|
| 219 | 218 |
|
| 220 | 219 |
set +o xtrace |
| 221 |
-echo "**************************************************" |
|
| 222 |
-echo "End DevStack Exercise: $0" |
|
| 223 |
-echo "**************************************************" |
|
| 220 |
+echo "*********************************************************************" |
|
| 221 |
+echo "SUCCESS: End DevStack Exercise: $0" |
|
| 222 |
+echo "*********************************************************************" |
| ... | ... |
@@ -1,10 +1,12 @@ |
| 1 | 1 |
#!/usr/bin/env bash |
| 2 | 2 |
|
| 3 |
+# **swift.sh** |
|
| 4 |
+ |
|
| 3 | 5 |
# Test swift via the command line tools that ship with it. |
| 4 | 6 |
|
| 5 |
-echo "**************************************************" |
|
| 7 |
+echo "*********************************************************************" |
|
| 6 | 8 |
echo "Begin DevStack Exercise: $0" |
| 7 |
-echo "**************************************************" |
|
| 9 |
+echo "*********************************************************************" |
|
| 8 | 10 |
|
| 9 | 11 |
# This script exits on an error so that errors don't compound and you see |
| 10 | 12 |
# only the first error that occured. |
| ... | ... |
@@ -39,27 +41,22 @@ CONTAINER=ex-swift |
| 39 | 39 |
# ============= |
| 40 | 40 |
|
| 41 | 41 |
# Check if we have to swift via keystone |
| 42 |
-swift stat |
|
| 43 |
-die_if_error "Failure geting status" |
|
| 42 |
+swift stat || die "Failure geting status" |
|
| 44 | 43 |
|
| 45 | 44 |
# We start by creating a test container |
| 46 |
-swift post $CONTAINER |
|
| 47 |
-die_if_error "Failure creating container $CONTAINER" |
|
| 45 |
+swift post $CONTAINER || die "Failure creating container $CONTAINER" |
|
| 48 | 46 |
|
| 49 | 47 |
# add some files into it. |
| 50 |
-swift upload $CONTAINER /etc/issue |
|
| 51 |
-die_if_error "Failure uploading file to container $CONTAINER" |
|
| 48 |
+swift upload $CONTAINER /etc/issue || die "Failure uploading file to container $CONTAINER" |
|
| 52 | 49 |
|
| 53 | 50 |
# list them |
| 54 |
-swift list $CONTAINER |
|
| 55 |
-die_if_error "Failure listing contents of container $CONTAINER" |
|
| 51 |
+swift list $CONTAINER || die "Failure listing contents of container $CONTAINER" |
|
| 56 | 52 |
|
| 57 | 53 |
# And we may want to delete them now that we have tested that |
| 58 | 54 |
# everything works. |
| 59 |
-swift delete $CONTAINER |
|
| 60 |
-die_if_error "Failure deleting container $CONTAINER" |
|
| 55 |
+swift delete $CONTAINER || die "Failure deleting container $CONTAINER" |
|
| 61 | 56 |
|
| 62 | 57 |
set +o xtrace |
| 63 |
-echo "**************************************************" |
|
| 64 |
-echo "End DevStack Exercise: $0" |
|
| 65 |
-echo "**************************************************" |
|
| 58 |
+echo "*********************************************************************" |
|
| 59 |
+echo "SUCCESS: End DevStack Exercise: $0" |
|
| 60 |
+echo "*********************************************************************" |
| ... | ... |
@@ -1,10 +1,12 @@ |
| 1 | 1 |
#!/usr/bin/env bash |
| 2 | 2 |
|
| 3 |
+# **volumes.sh** |
|
| 4 |
+ |
|
| 3 | 5 |
# Test nova volumes with the nova command from python-novaclient |
| 4 | 6 |
|
| 5 |
-echo "**************************************************" |
|
| 7 |
+echo "*********************************************************************" |
|
| 6 | 8 |
echo "Begin DevStack Exercise: $0" |
| 7 |
-echo "**************************************************" |
|
| 9 |
+echo "*********************************************************************" |
|
| 8 | 10 |
|
| 9 | 11 |
# This script exits on an error so that errors don't compound and you see |
| 10 | 12 |
# only the first error that occured. |
| ... | ... |
@@ -37,6 +39,7 @@ DEFAULT_INSTANCE_TYPE=${DEFAULT_INSTANCE_TYPE:-m1.tiny}
|
| 37 | 37 |
# Boot this image, use first AMi image if unset |
| 38 | 38 |
DEFAULT_IMAGE_NAME=${DEFAULT_IMAGE_NAME:-ami}
|
| 39 | 39 |
|
| 40 |
+ |
|
| 40 | 41 |
# Launching a server |
| 41 | 42 |
# ================== |
| 42 | 43 |
|
| ... | ... |
@@ -136,8 +139,8 @@ die_if_not_set VOL_ID "Failure retrieving volume ID for $VOL_NAME" |
| 136 | 136 |
|
| 137 | 137 |
# Attach to server |
| 138 | 138 |
DEVICE=/dev/vdb |
| 139 |
-nova volume-attach $VM_UUID $VOL_ID $DEVICE |
|
| 140 |
-die_if_error "Failure attaching volume $VOL_NAME to $NAME" |
|
| 139 |
+nova volume-attach $VM_UUID $VOL_ID $DEVICE || \ |
|
| 140 |
+ die "Failure attaching volume $VOL_NAME to $NAME" |
|
| 141 | 141 |
if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova volume-list | grep $VOL_NAME | grep in-use; do sleep 1; done"; then |
| 142 | 142 |
echo "Volume $VOL_NAME not attached to $NAME" |
| 143 | 143 |
exit 1 |
| ... | ... |
@@ -151,26 +154,23 @@ if [[ "$VOL_ATTACH" != $VM_UUID ]]; then |
| 151 | 151 |
fi |
| 152 | 152 |
|
| 153 | 153 |
# Detach volume |
| 154 |
-nova volume-detach $VM_UUID $VOL_ID |
|
| 155 |
-die_if_error "Failure detaching volume $VOL_NAME from $NAME" |
|
| 154 |
+nova volume-detach $VM_UUID $VOL_ID || die "Failure detaching volume $VOL_NAME from $NAME" |
|
| 156 | 155 |
if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova volume-list | grep $VOL_NAME | grep available; do sleep 1; done"; then |
| 157 | 156 |
echo "Volume $VOL_NAME not detached from $NAME" |
| 158 | 157 |
exit 1 |
| 159 | 158 |
fi |
| 160 | 159 |
|
| 161 | 160 |
# Delete volume |
| 162 |
-nova volume-delete $VOL_ID |
|
| 163 |
-die_if_error "Failure deleting volume $VOL_NAME" |
|
| 161 |
+nova volume-delete $VOL_ID || die "Failure deleting volume $VOL_NAME" |
|
| 164 | 162 |
if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova volume-list | grep $VOL_NAME; do sleep 1; done"; then |
| 165 | 163 |
echo "Volume $VOL_NAME not deleted" |
| 166 | 164 |
exit 1 |
| 167 | 165 |
fi |
| 168 | 166 |
|
| 169 | 167 |
# shutdown the server |
| 170 |
-nova delete $NAME |
|
| 171 |
-die_if_error "Failure deleting instance $NAME" |
|
| 168 |
+nova delete $NAME || die "Failure deleting instance $NAME" |
|
| 172 | 169 |
|
| 173 | 170 |
set +o xtrace |
| 174 |
-echo "**************************************************" |
|
| 175 |
-echo "End DevStack Exercise: $0" |
|
| 176 |
-echo "**************************************************" |
|
| 171 |
+echo "*********************************************************************" |
|
| 172 |
+echo "SUCCESS: End DevStack Exercise: $0" |
|
| 173 |
+echo "*********************************************************************" |
| ... | ... |
@@ -1,5 +1,9 @@ |
| 1 | 1 |
# functions - Common functions used by DevStack components |
| 2 | 2 |
|
| 3 |
+# Save trace setting |
|
| 4 |
+XTRACE=$(set +o | grep xtrace) |
|
| 5 |
+set +o xtrace |
|
| 6 |
+ |
|
| 3 | 7 |
|
| 4 | 8 |
# apt-get wrapper to set arguments correctly |
| 5 | 9 |
# apt_get package [package ...] |
| ... | ... |
@@ -22,15 +26,13 @@ function cp_it {
|
| 22 | 22 |
} |
| 23 | 23 |
|
| 24 | 24 |
|
| 25 |
-# Checks the exit code of the last command and prints "message" |
|
| 26 |
-# if it is non-zero and exits |
|
| 27 |
-# die_if_error "message" |
|
| 28 |
-function die_if_error() {
|
|
| 25 |
+# Prints "message" and exits |
|
| 26 |
+# die "message" |
|
| 27 |
+function die() {
|
|
| 29 | 28 |
local exitcode=$? |
| 30 |
- if [ $exitcode != 0 ]; then |
|
| 31 |
- echo $@ |
|
| 32 |
- exit $exitcode |
|
| 33 |
- fi |
|
| 29 |
+ set +o xtrace |
|
| 30 |
+ echo $@ |
|
| 31 |
+ exit $exitcode |
|
| 34 | 32 |
} |
| 35 | 33 |
|
| 36 | 34 |
|
| ... | ... |
@@ -39,12 +41,16 @@ function die_if_error() {
|
| 39 | 39 |
# NOTE: env-var is the variable name without a '$' |
| 40 | 40 |
# die_if_not_set env-var "message" |
| 41 | 41 |
function die_if_not_set() {
|
| 42 |
- local exitcode=$? |
|
| 43 |
- local evar=$1; shift |
|
| 44 |
- if ! is_set $evar || [ $exitcode != 0 ]; then |
|
| 45 |
- echo $@ |
|
| 46 |
- exit 99 |
|
| 47 |
- fi |
|
| 42 |
+ ( |
|
| 43 |
+ local exitcode=$? |
|
| 44 |
+ set +o xtrace |
|
| 45 |
+ local evar=$1; shift |
|
| 46 |
+ if ! is_set $evar || [ $exitcode != 0 ]; then |
|
| 47 |
+ set +o xtrace |
|
| 48 |
+ echo $@ |
|
| 49 |
+ exit -1 |
|
| 50 |
+ fi |
|
| 51 |
+ ) |
|
| 48 | 52 |
} |
| 49 | 53 |
|
| 50 | 54 |
|
| ... | ... |
@@ -143,3 +149,6 @@ function trueorfalse() {
|
| 143 | 143 |
[[ "1 yes true True TRUE" =~ "$testval" ]] && { echo "True"; return; }
|
| 144 | 144 |
echo "$default" |
| 145 | 145 |
} |
| 146 |
+ |
|
| 147 |
+# Restore xtrace |
|
| 148 |
+$XTRACE |
|
| 146 | 149 |
\ No newline at end of file |
| ... | ... |
@@ -133,8 +133,7 @@ if [[ $EUID -eq 0 ]]; then |
| 133 | 133 |
exit 1 |
| 134 | 134 |
else |
| 135 | 135 |
# We're not root, make sure sudo is available |
| 136 |
- dpkg -l sudo |
|
| 137 |
- die_if_error "Sudo is required. Re-run stack.sh as root ONE TIME ONLY to set up sudo." |
|
| 136 |
+ dpkg -l sudo || die "Sudo is required. Re-run stack.sh as root ONE TIME ONLY to set up sudo." |
|
| 138 | 137 |
|
| 139 | 138 |
# UEC images /etc/sudoers does not have a '#includedir'. add one. |
| 140 | 139 |
sudo grep -q "^#includedir.*/etc/sudoers.d" /etc/sudoers || |
| ... | ... |
@@ -11,43 +11,28 @@ source $TOP/functions |
| 11 | 11 |
source $TOP/openrc |
| 12 | 12 |
|
| 13 | 13 |
|
| 14 |
-echo "Testing die_if_error()" |
|
| 15 |
- |
|
| 16 |
-bash -c "source $TOP/functions; true; die_if_error 'not OK'" |
|
| 17 |
-if [[ $? != 0 ]]; then |
|
| 18 |
- echo "die_if_error [true] Failed" |
|
| 19 |
-fi |
|
| 20 |
- |
|
| 21 |
-bash -c "source $TOP/functions; false; die_if_error 'OK'" |
|
| 22 |
-if [[ $? = 0 ]]; then |
|
| 23 |
- echo "die_if_error [false] Failed" |
|
| 24 |
-else |
|
| 25 |
- echo 'OK' |
|
| 26 |
-fi |
|
| 27 |
- |
|
| 28 |
- |
|
| 29 | 14 |
echo "Testing die_if_not_set()" |
| 30 | 15 |
|
| 31 |
-bash -c "source $TOP/functions; X=`echo Y && true`; die_if_not_set X 'not OK'" |
|
| 16 |
+bash -cx "source $TOP/functions; X=`echo Y && true`; die_if_not_set X 'not OK'" |
|
| 32 | 17 |
if [[ $? != 0 ]]; then |
| 33 | 18 |
echo "die_if_not_set [X='Y' true] Failed" |
| 34 | 19 |
else |
| 35 | 20 |
echo 'OK' |
| 36 | 21 |
fi |
| 37 | 22 |
|
| 38 |
-bash -c "source $TOP/functions; X=`true`; die_if_not_set X 'OK'" |
|
| 23 |
+bash -cx "source $TOP/functions; X=`true`; die_if_not_set X 'OK'" |
|
| 39 | 24 |
if [[ $? = 0 ]]; then |
| 40 | 25 |
echo "die_if_not_set [X='' true] Failed" |
| 41 | 26 |
fi |
| 42 | 27 |
|
| 43 |
-bash -c "source $TOP/functions; X=`echo Y && false`; die_if_not_set X 'not OK'" |
|
| 28 |
+bash -cx "source $TOP/functions; X=`echo Y && false`; die_if_not_set X 'not OK'" |
|
| 44 | 29 |
if [[ $? != 0 ]]; then |
| 45 | 30 |
echo "die_if_not_set [X='Y' false] Failed" |
| 46 | 31 |
else |
| 47 | 32 |
echo 'OK' |
| 48 | 33 |
fi |
| 49 | 34 |
|
| 50 |
-bash -c "source $TOP/functions; X=`false`; die_if_not_set X 'OK'" |
|
| 35 |
+bash -cx "source $TOP/functions; X=`false`; die_if_not_set X 'OK'" |
|
| 51 | 36 |
if [[ $? = 0 ]]; then |
| 52 | 37 |
echo "die_if_not_set [X='' false] Failed" |
| 53 | 38 |
fi |