exit 1
fi
}
+
+function cirros_network_init() {
+ rootdir=$1
+ ifile=`mktemp`
+ # Create static network config
+ cat >$ifile <<EOF
+auto lo
+iface lo inet loopback
+
+auto eth0
+iface eth0 inet static
+ address 169.254.0.2
+ network 169.254.0.0
+ broadcast 169.254.0.255
+ netmask 255.255.255.0
+EOF
+ $SUDO mv -f $ifile $rootdir/etc/network/interfaces
+ # Disable cloud-init
+ $SUDO rm -f ${rootdir}/etc/rc3.d/S*cirros*ds*
+ $SUDO rm -f ${rootdir}/etc/rc3.d/S*-cirros-userdata
+}
+
+function get_cirros_kernel() {
+ bootdir=$1
+ basename `find $bootdir -name vmlinuz* 2>/dev/null | head -1`
+}
+
+function get_cirros_initrd() {
+ bootdir=$1
+ basename `find $bootdir -name initrd* 2>/dev/null | head -1`
+}
+
+function cirros_grub_cfg() {
+ rootdir=$1
+ get-pvgrub $CIRROS_ARCH
+ grubroot="`echo $CIRROS_GRUB_CFG | cut -d ')' -f 1`)"
+ grubcfg="`echo $CIRROS_GRUB_CFG | cut -d ')' -f 2`"
+ grubdir=`dirname $grubcfg`
+ bootdir=`dirname $grubdir`
+ tmpgrubcfg=`mktemp`
+ cat > $tmpgrubcfg <<EOF
+root="$grubroot"
+insmod xzio
+insmod gzio
+insmod btrfs
+insmod ext2
+set timeout=1
+set default=0
+menuentry Cirros {
+ linux `echo $bootdir`/`get_cirros_kernel ${rootdir}/${bootdir}` root=/dev/xvda1 ro
+ initrd `echo $bootdir`/`get_cirros_initrd ${rootdir}/${bootdir}`
+}
+EOF
+ $SUDO mv -f $tmpgrubcfg ${rootdir}/${grubcfg}
+}
+
+function download_cirros_components() {
+ . tests-configs/config-cirros_$RAISIN_ARCH
+ mkdir -p $CIRROS_DOWNLOADS
+ if [[ ! -f $CIRROS_DOWNLOADS/$CIRROS_KERNEL_FILE ]]
+ then
+ verbose_echo "Downloading cirros kernel"
+ wget -q $CIRROS_KERNEL_URL -P $CIRROS_DOWNLOADS
+ fi
+ if [[ ! -f $CIRROS_DOWNLOADS/$CIRROS_INITRD_FILE ]]
+ then
+ verbose_echo "Downloading cirros initrd"
+ wget -q $CIRROS_INITRD_URL -P $CIRROS_DOWNLOADS
+ fi
+ if [[ ! -f $CIRROS_DOWNLOADS/$CIRROS_ROOTFS_FILE ]]
+ then
+ verbose_echo "Downloading cirros rootfs"
+ wget -q $CIRROS_ROOTFS_URL -P $CIRROS_DOWNLOADS
+ gunzip $CIRROS_DOWNLOADS/$CIRROS_ROOTFS_FILE.gz
+ local cirros_rootfs_loop=`create_loop $CIRROS_DOWNLOADS/$CIRROS_ROOTFS_FILE`
+ local cirros_rootfs_mntpt=`mktemp -d`
+ $SUDO mount $cirros_rootfs_loop $cirros_rootfs_mntpt
+ cirros_network_init $cirros_rootfs_mntpt
+ $SUDO umount $cirros_rootfs_mntpt
+ $SUDO rmdir $cirros_rootfs_mntpt
+ $SUDO losetup -d $cirros_rootfs_loop
+ fi
+ if [[ ! -f $CIRROS_DOWNLOADS/$CIRROS_DISK_FILE ]]
+ then
+ verbose_echo "Downloading cirros disk"
+ wget -q $CIRROS_DISK_URL -P $CIRROS_DOWNLOADS
+ mv $CIRROS_DOWNLOADS/$CIRROS_DISK_FILE $CIRROS_DOWNLOADS/$CIRROS_DISK_FILE.qcow2
+ get-qemu-img
+ $QEMU_IMG convert -f qcow2 -O raw $CIRROS_DOWNLOADS/$CIRROS_DISK_FILE.qcow2 $CIRROS_DOWNLOADS/$CIRROS_DISK_FILE
+ local cirros_disk_loop=`$SUDO $BASEDIR/scripts/lopartsetup $CIRROS_DOWNLOADS/$CIRROS_DISK_FILE | head -1 |
+ cut -d ":" -f 1`
+ local cirros_disk_mntpt=`mktemp -d`
+ $SUDO mount $cirros_disk_loop $cirros_disk_mntpt
+ cirros_network_init $cirros_disk_mntpt
+ $SUDO umount $cirros_disk_mntpt
+ $SUDO rmdir $cirros_disk_mntpt
+ $SUDO losetup -d $cirros_disk_loop
+ fi
+}
+
+function tear_down_cirros_test() {
+ testdir=$1
+ if [[ `$SUDO xl vm-list | grep "raisin-test" | wc -l` -gt 0 ]]
+ then
+ $SUDO xl destroy "raisin-test"
+ fi
+ verbose_echo "$PREPEND deleting environment of cirros test"
+ $SUDO rm -rf $testdir
+}
--- /dev/null
+CIRROS_ARCH=i386
+CIRROS_BASE_URL="https://download.cirros-cloud.net/"
+CIRROS_VERSION="0.3.5"
+CIRROS_DOWNLOADS=$BASEDIR/downloads
+CIRROS_KERNEL_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-kernel
+CIRROS_INITRD_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-initramfs
+CIRROS_ROOTFS_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-rootfs.img
+CIRROS_DISK_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-disk.img
+CIRROS_KERNEL_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_KERNEL_FILE
+CIRROS_INITRD_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_INITRD_FILE
+CIRROS_ROOTFS_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_ROOTFS_FILE.gz
+CIRROS_DISK_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_DISK_FILE
+CIRROS_GRUB_CFG="(xen/xvda,msdos1)/boot/grub/grub.cfg"
--- /dev/null
+CIRROS_ARCH=x86_64
+CIRROS_BASE_URL="https://download.cirros-cloud.net/"
+CIRROS_VERSION="0.3.5"
+CIRROS_DOWNLOADS=$BASEDIR/downloads
+CIRROS_KERNEL_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-kernel
+CIRROS_INITRD_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-initramfs
+CIRROS_ROOTFS_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-rootfs.img
+CIRROS_DISK_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-disk.img
+CIRROS_KERNEL_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_KERNEL_FILE
+CIRROS_INITRD_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_INITRD_FILE
+CIRROS_ROOTFS_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_ROOTFS_FILE.gz
+CIRROS_DISK_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_DISK_FILE
+CIRROS_GRUB_CFG="(xen/xvda,msdos1)/boot/grub/grub.cfg"