Last active
August 29, 2015 13:58
-
-
Save jtopjian/9955731 to your computer and use it in GitHub Desktop.
Simple script to test new OpenStack clouds
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| INSTANCES=1 | |
| IMAGE="3df92f29-eb96-46e8-98d0-46f0b46fb10e" | |
| KEY="burn-in" | |
| DRIVE="/dev/vdc" | |
| echo "Launching instances" | |
| for i in $(seq 1 $INSTANCES); do | |
| echo -e "\n==== instance $i ==="; | |
| nova boot --poll --flavor 2 --image $IMAGE --key-name $KEY burn-$i | |
| done | |
| echo "Creating a volume for each instance" | |
| for INSTANCE in $(nova list | grep burn | grep ACTIVE | awk '{print $2}'); do | |
| V="" | |
| VOL=$(nova volume-create 2 | grep "^| id" | awk '{print $4}') | |
| echo "created $VOL" | |
| while [ "$V" != "$VOL" ]; do | |
| echo "waiting for $VOL..." | |
| sleep 2 | |
| nova volume-show $VOL | grep "available" >/dev/null | |
| if [ $? -eq 0 ]; then | |
| V=$(nova volume-show $VOL | grep "^| id" | awk '{print $4}') | |
| fi | |
| done | |
| COMMAND="nova volume-attach $INSTANCE $VOL auto" | |
| echo $COMMAND | |
| $COMMAND | |
| done | |
| echo "Sleeping for 30 seconds to let instances boot." | |
| for i in $(seq 1 30); do | |
| echo -n "." | |
| sleep 1 | |
| done | |
| echo "" | |
| echo "Activating volumes in the instance" | |
| for ADDRESS in $(nova list | grep burn | awk '{print $12}' | cut -d= -f2 | tr -d /,/); do | |
| CMD="ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ${KEY}.pem ubuntu@$ADDRESS sudo mkfs.ext4 ${DRIVE}; sudo mount ${DRIVE} /mnt; sudo chmod 777 /mnt" | |
| $CMD | |
| sleep 2 | |
| done | |
| if [ ! -f big-file.bin ]; then | |
| echo "Creating a 1GB file" | |
| dd if=/dev/urandom of=big-file.bin count=1024 bs=1M | |
| fi | |
| echo "Copying the file to each instance" | |
| for ADDRESS in $(nova list | grep burn | awk '{print $12}' | cut -d= -f2 | tr -d /,/); do | |
| scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ${KEY}.pem big-file.bin ubuntu@$ADDRESS:~/; | |
| done | |
| echo "Copying the file to each volume" | |
| for ADDRESS in $(nova list | grep burn | awk '{print $12}' | cut -d= -f2 | tr -d /,/); do | |
| scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ${KEY}.pem big-file.bin ubuntu@$ADDRESS:/mnt; | |
| done | |
| # --------- test done -- tear down --------------- | |
| echo "Terminating instances" | |
| for INSTANCE in $(nova list | grep burn | awk '{print $2}'); do | |
| echo "Terminating ${INSTANCE}" | |
| nova delete $INSTANCE | |
| sleep 5 | |
| done | |
| echo "Deleting volumes" | |
| for VOLUME in $(nova volume-list | grep available | awk '{print $2}'); do | |
| echo "Deleting ${VOLUME}" | |
| nova volume-delete $VOLUME | |
| sleep 5 | |
| done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment