Merge pull request #71 from cloudbuilders/image_config

Allow configuration of glance images
diff --git a/stack.sh b/stack.sh
index dc151a6..a7eacbf 100755
--- a/stack.sh
+++ b/stack.sh
@@ -660,55 +660,41 @@
 # Install Images
 # ==============
 
-# Upload a couple images to glance.  **TTY** is a simple small image that use the 
-# lets you login to it with username/password of user/password.  TTY is useful 
-# for basic functionality.  We all include an Ubuntu cloud build of **Natty**.
-# Natty uses cloud-init, supporting login via keypair and sending scripts as
-# userdata.  
+# Upload an image to glance.
 #
-# Read more about cloud-init at https://help.ubuntu.com/community/CloudInit
+# The default image is a small ***TTY*** testing image, which lets you login
+# the username/password of root/password.
+#
+# TTY also uses cloud-init, supporting login via keypair and sending scripts as
+# userdata.  See https://help.ubuntu.com/community/CloudInit for more on cloud-init
+#
+# Override IMAGE_URLS if you would to launch a different image(s).  
+# Specify IMAGE_URLS as a comma-separated list of uec urls.  Some other options include:
+#   natty: http://uec-images.ubuntu.com/natty/current/natty-server-cloudimg-amd64.tar.gz
+#   oneiric: http://uec-images.ubuntu.com/oneiric/current/oneiric-server-cloudimg-amd64.tar.gz
 
 if [[ "$ENABLED_SERVICES" =~ "g-reg" ]]; then
-    # create a directory for the downloadedthe images tarballs.
+    # Create a directory for the downloaded image tarballs.
     mkdir -p $FILES/images
 
-    # Debug Image (TTY)
-    # -----------------
+    for image_url in ${IMAGE_URLS//,/ }; do
+        # Downloads the image (uec ami+aki style), then extracts it.
+        IMAGE_FNAME=`echo "$image_url" | python -c "import sys; print sys.stdin.read().split('/')[-1]"`
+        IMAGE_NAME=`echo "$IMAGE_FNAME" | python -c "import sys; print sys.stdin.read().split('.tar.gz')[0].split('.tgz')[0]"`
+        if [ ! -f $FILES/$IMAGE_FNAME ]; then
+            wget -c $image_url -O $FILES/$IMAGE_FNAME
+        fi
 
-    # Downloads the image (ami/aki/ari style), then extracts it.  Upon extraction
-    # we upload to glance with the glance cli tool.  TTY is a stripped down 
-    # version of ubuntu.
-    if [ ! -f $FILES/tty.tgz ]; then
-        wget -c http://images.ansolabs.com/tty.tgz -O $FILES/tty.tgz
-    fi
+        # Extract ami and aki files
+        tar -zxf $FILES/$IMAGE_FNAME -C $FILES/images
 
-    # extract ami-tty/image, aki-tty/image & ari-tty/image
-    tar -zxf $FILES/tty.tgz -C $FILES/images
-
-    # Use glance client to add the kernel, ramdisk and finally the root 
-    # filesystem.  We parse the results of the uploads to get glance IDs of the
-    # ramdisk and kernel and use them for the root filesystem.
-    RVAL=`glance add -A $SERVICE_TOKEN name="tty-kernel" is_public=true container_format=aki disk_format=aki < $FILES/images/aki-tty/image`
-    KERNEL_ID=`echo $RVAL | cut -d":" -f2 | tr -d " "`
-    RVAL=`glance add -A $SERVICE_TOKEN name="tty-ramdisk" is_public=true container_format=ari disk_format=ari < $FILES/images/ari-tty/image`
-    RAMDISK_ID=`echo $RVAL | cut -d":" -f2 | tr -d " "`
-    glance add -A $SERVICE_TOKEN name="tty" is_public=true container_format=ami disk_format=ami kernel_id=$KERNEL_ID ramdisk_id=$RAMDISK_ID < $FILES/images/ami-tty/image
-
-    # Ubuntu 11.04 aka Natty
-    # ----------------------
-
-    # Downloaded from ubuntu enterprise cloud images.  This
-    # image doesn't use the ramdisk functionality
-    if [ ! -f $FILES/natty.tgz ]; then
-        wget -c http://uec-images.ubuntu.com/natty/current/natty-server-cloudimg-amd64.tar.gz -O $FILES/natty.tgz
-    fi
-    
-    tar -zxf $FILES/natty.tgz -C $FILES/images
-
-    RVAL=`glance add -A $SERVICE_TOKEN name="uec-natty-kernel" is_public=true container_format=aki disk_format=aki < $FILES/images/natty-server-cloudimg-amd64-vmlinuz-virtual`
-    KERNEL_ID=`echo $RVAL | cut -d":" -f2 | tr -d " "`
-    glance add -A $SERVICE_TOKEN name="uec-natty" is_public=true container_format=ami disk_format=ami kernel_id=$KERNEL_ID < $FILES/images/natty-server-cloudimg-amd64.img
-
+        # Use glance client to add the kernel the root filesystem.
+        # We parse the results of the first upload to get the glance ID of the
+        # kernel for use when uploading the root filesystem.
+        RVAL=`glance add -A $SERVICE_TOKEN name="$IMAGE_NAME-kernel" is_public=true container_format=aki disk_format=aki < $FILES/images/$IMAGE_NAME-vmlinuz*`
+        KERNEL_ID=`echo $RVAL | cut -d":" -f2 | tr -d " "`
+        glance add -A $SERVICE_TOKEN name="$IMAGE_NAME" is_public=true container_format=ami disk_format=ami kernel_id=$KERNEL_ID < $FILES/images/$IMAGE_NAME.img
+    done
 fi
 
 # Fin
diff --git a/stackrc b/stackrc
index 15d73ce..e1b65c3 100644
--- a/stackrc
+++ b/stackrc
@@ -27,6 +27,9 @@
 OPENSTACKX_REPO=https://github.com/cloudbuilders/openstackx.git
 OPENSTACKX_BRANCH=diablo
 
+# Specify a comma-separated list of uec images to download and install into glance.
+IMAGE_URLS=http://smoser.brickies.net/ubuntu/ttylinux-uec/ttylinux-uec-amd64-11.2_2.6.35-15_1.tar.gz
+
 # allow local overrides of env variables
 if [ -f ./localrc ]; then
     source ./localrc