remove old build scripts and clean for those that work
Change-Id: I5c156879f3c85f1555a1411695ac43cefbbf3b99
diff --git a/tools/get_uec_image.sh b/tools/get_uec_image.sh
index 7b95aab..7fa920e 100755
--- a/tools/get_uec_image.sh
+++ b/tools/get_uec_image.sh
@@ -1,14 +1,8 @@
#!/bin/bash
-# get_uec_image.sh - Prepare Ubuntu images in various formats
-#
-# Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc), raw
-#
-# Required to run as root
+# get_uec_image.sh - Prepare Ubuntu UEC images
-CACHEDIR=${CACHEDIR:-/var/cache/devstack}
-FORMAT=${FORMAT:-qcow2}
+CACHEDIR=${CACHEDIR:-/opt/stack/cache}
ROOTSIZE=${ROOTSIZE:-2000}
-MIN_PKGS=${MIN_PKGS:-"apt-utils gpgv openssh-server"}
# Keep track of the current directory
TOOLS_DIR=$(cd $(dirname "$0") && pwd)
@@ -18,14 +12,14 @@
set -o errexit
usage() {
- echo "Usage: $0 - Prepare Ubuntu images"
+ echo "Usage: $0 - Fetch and prepare Ubuntu images"
echo ""
- echo "$0 [-f format] [-r rootsize] release imagefile"
+ echo "$0 [-r rootsize] release imagefile [kernel]"
echo ""
- echo "-f format - image format: qcow2 (default), vmdk, vdi, vhd, xen, raw, fs"
- echo "-r size - root fs size in MB (min 2000MB)"
+ echo "-r size - root fs size (min 2000MB)"
echo "release - Ubuntu release: jaunty - oneric"
echo "imagefile - output image file"
+ echo "kernel - output kernel"
exit 1
}
@@ -38,42 +32,21 @@
rm -f $IMG_FILE_TMP
fi
- # Release NBD devices
- if [ -n "$NBD" ]; then
- qemu-nbd -d $NBD
- fi
-
# Kill ourselves to signal any calling process
trap 2; kill -2 $$
}
-# apt-get wrapper to just get arguments set correctly
-function apt_get() {
- local sudo="sudo"
- [ "$(id -u)" = "0" ] && sudo="env"
- $sudo DEBIAN_FRONTEND=noninteractive apt-get \
- --option "Dpkg::Options::=--force-confold" --assume-yes "$@"
-}
-
-while getopts f:hmr: c; do
+while getopts hr: c; do
case $c in
- f) FORMAT=$OPTARG
- ;;
h) usage
;;
- m) MINIMAL=1
- ;;
r) ROOTSIZE=$OPTARG
- if [[ $ROOTSIZE < 2000 ]]; then
- echo "root size must be greater than 2000MB"
- exit 1
- fi
;;
esac
done
shift `expr $OPTIND - 1`
-if [ ! "$#" -eq "2" ]; then
+if [[ ! "$#" -eq "2" && ! "$#" -eq "3" ]]; then
usage
fi
@@ -81,134 +54,49 @@
DIST_NAME=$1
IMG_FILE=$2
IMG_FILE_TMP=`mktemp $IMG_FILE.XXXXXX`
-
-case $FORMAT in
- kvm|qcow2) FORMAT=qcow2
- QFORMAT=qcow2
- ;;
- vmserver|vmdk)
- FORMAT=vmdk
- QFORMAT=vmdk
- ;;
- vbox|vdi) FORMAT=vdi
- QFORMAT=vdi
- ;;
- vhd|vpc) FORMAT=vhd
- QFORMAT=vpc
- ;;
- xen) FORMAT=raw
- QFORMAT=raw
- ;;
- raw) FORMAT=raw
- QFORMAT=raw
- ;;
- *) echo "Unknown format: $FORMAT"
- usage
-esac
+KERNEL=$3
case $DIST_NAME in
oneiric) ;;
natty) ;;
maverick) ;;
lucid) ;;
- karmic) ;;
- jaunty) ;;
*) echo "Unknown release: $DIST_NAME"
usage
;;
esac
-trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT
+trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT
-# Check for dependencies
-
-if [ ! -x "`which qemu-img`" -o ! -x "`which qemu-nbd`" ]; then
+# Check dependencies
+if [ ! -x "`which qemu-img`" -o -z "`dpkg -l | grep cloud-utils`" ]; then
# Missing KVM?
- apt_get install qemu-kvm
+ apt_get install qemu-kvm cloud-utils
fi
-# Prepare the base image
+# 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 [ ! -e $CACHEDIR/$UEC_NAME-disk1.img ]; then
- mkdir -p $CACHEDIR
- (cd $CACHEDIR && wget -N http://uec-images.ubuntu.com/$DIST_NAME/current/$UEC_NAME-disk1.img)
+if [ ! -d $CACHEDIR ]; 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
-if [ "$FORMAT" = "qcow2" ]; then
- # Just copy image
- cp -p $CACHEDIR/$UEC_NAME-disk1.img $IMG_FILE_TMP
-else
- # Convert image
- qemu-img convert -O $QFORMAT $CACHEDIR/$UEC_NAME-disk1.img $IMG_FILE_TMP
-fi
-
-# Resize the image if necessary
-if [ $ROOTSIZE -gt 2000 ]; then
- # Resize the container
- qemu-img resize $IMG_FILE_TMP +$((ROOTSIZE - 2000))M
-fi
-
-# Finds the next available NBD device
-# Exits script if error connecting or none free
-# map_nbd image
-# returns full nbd device path
-function map_nbd {
- for i in `seq 0 15`; do
- if [ ! -e /sys/block/nbd$i/pid ]; then
- NBD=/dev/nbd$i
- # Connect to nbd and wait till it is ready
- qemu-nbd -c $NBD $1
- if ! timeout 60 sh -c "while ! [ -e ${NBD}p1 ]; do sleep 1; done"; then
- echo "Couldn't connect $NBD"
- exit 1
- fi
- break
- fi
- done
- if [ -z "$NBD" ]; then
- echo "No free NBD slots"
- exit 1
- fi
- echo $NBD
-}
-
-# Set up nbd
-modprobe nbd max_part=63
-NBD=`map_nbd $IMG_FILE_TMP`
-
-# Resize partition 1 to full size of the disk image
-echo "d
-n
-p
-1
-2
-
-t
-83
-a
-1
-w
-" | fdisk $NBD
-e2fsck -f -p ${NBD}p1
-resize2fs ${NBD}p1
-
-# Do some preliminary installs
-MNTDIR=`mktemp -d mntXXXXXXXX`
-mount -t ext4 ${NBD}p1 $MNTDIR
-
-# Install our required packages
-cp -p files/sources.list $MNTDIR/etc/apt/sources.list
-sed -e "s,%DIST%,$DIST_NAME,g" -i $MNTDIR/etc/apt/sources.list
-cp -p /etc/resolv.conf $MNTDIR/etc/resolv.conf
-chroot $MNTDIR apt-get update
-chroot $MNTDIR apt-get install -y $MIN_PKGS
-rm -f $MNTDIR/etc/resolv.conf
-
-umount $MNTDIR
-rmdir $MNTDIR
-qemu-nbd -d $NBD
-NBD=""
-
+$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