| #!/bin/bash |
| |
| # **get_uec_image.sh** |
| |
| # Download and prepare Ubuntu UEC images |
| |
| CACHEDIR=${CACHEDIR:-/opt/stack/cache} |
| ROOTSIZE=${ROOTSIZE:-2000M} |
| |
| # Keep track of the current directory |
| TOOLS_DIR=$(cd $(dirname "$0") && pwd) |
| TOP_DIR=$(cd $TOOLS_DIR/..; pwd) |
| |
| # Import common functions |
| . $TOP_DIR/functions |
| |
| # Exit on error to stop unexpected errors |
| set -o errexit |
| set -o xtrace |
| |
| usage() { |
| echo "Usage: $0 - Download and prepare Ubuntu UEC images" |
| echo "" |
| echo "$0 [-r rootsize] release imagefile [kernel]" |
| echo "" |
| echo "-r size - root fs size (min 2000MB)" |
| echo "release - Ubuntu release: lucid - quantal" |
| echo "imagefile - output image file" |
| echo "kernel - output kernel" |
| exit 1 |
| } |
| |
| # Clean up any resources that may be in use |
| cleanup() { |
| set +o errexit |
| |
| # Mop up temporary files |
| if [ -n "$IMG_FILE_TMP" -a -e "$IMG_FILE_TMP" ]; then |
| rm -f $IMG_FILE_TMP |
| fi |
| |
| # Kill ourselves to signal any calling process |
| trap 2; kill -2 $$ |
| } |
| |
| while getopts hr: c; do |
| case $c in |
| h) usage |
| ;; |
| r) ROOTSIZE=$OPTARG |
| ;; |
| esac |
| done |
| shift `expr $OPTIND - 1` |
| |
| if [[ ! "$#" -eq "2" && ! "$#" -eq "3" ]]; then |
| usage |
| fi |
| |
| # Default args |
| DIST_NAME=$1 |
| IMG_FILE=$2 |
| IMG_FILE_TMP=`mktemp $IMG_FILE.XXXXXX` |
| KERNEL=$3 |
| |
| case $DIST_NAME in |
| quantal) ;; |
| precise) ;; |
| oneiric) ;; |
| natty) ;; |
| maverick) ;; |
| lucid) ;; |
| *) echo "Unknown release: $DIST_NAME" |
| usage |
| ;; |
| esac |
| |
| trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT |
| |
| # Check dependencies |
| if [ ! -x "`which qemu-img`" -o -z "`dpkg -l | grep cloud-utils`" ]; then |
| # Missing KVM? |
| apt_get install qemu-kvm cloud-utils |
| fi |
| |
| # Find resize script |
| RESIZE=`which resize-part-image || which uec-resize-image` |
| if [ -z "$RESIZE" ]; then |
| echo "resize tool from cloud-utils not found" |
| exit 1 |
| fi |
| |
| # Get the UEC image |
| UEC_NAME=$DIST_NAME-server-cloudimg-amd64 |
| if [ ! -d $CACHEDIR/$DIST_NAME ]; then |
| mkdir -p $CACHEDIR/$DIST_NAME |
| fi |
| if [ ! -e $CACHEDIR/$DIST_NAME/$UEC_NAME.tar.gz ]; then |
| (cd $CACHEDIR/$DIST_NAME && wget -N http://uec-images.ubuntu.com/$DIST_NAME/current/$UEC_NAME.tar.gz) |
| (cd $CACHEDIR/$DIST_NAME && tar Sxvzf $UEC_NAME.tar.gz) |
| fi |
| |
| $RESIZE $CACHEDIR/$DIST_NAME/$UEC_NAME.img ${ROOTSIZE} $IMG_FILE_TMP |
| mv $IMG_FILE_TMP $IMG_FILE |
| |
| # Copy kernel to destination |
| if [ -n "$KERNEL" ]; then |
| cp -p $CACHEDIR/$DIST_NAME/*-vmlinuz-virtual $KERNEL |
| fi |
| |
| trap - SIGHUP SIGINT SIGTERM SIGQUIT EXIT |