| ... | ... |
@@ -12,6 +12,27 @@ if [ ! "oneiric" = "$UBUNTU_VERSION" ]; then |
| 12 | 12 |
fi |
| 13 | 13 |
fi |
| 14 | 14 |
|
| 15 |
+# Clean up any resources that may be in use |
|
| 16 |
+cleanup() {
|
|
| 17 |
+ set +o errexit |
|
| 18 |
+ unmount_images |
|
| 19 |
+ |
|
| 20 |
+ if [ -n "$ROOTFS" ]; then |
|
| 21 |
+ umount $ROOTFS/dev |
|
| 22 |
+ umount $ROOTFS |
|
| 23 |
+ fi |
|
| 24 |
+ |
|
| 25 |
+ # Release NBD devices |
|
| 26 |
+ if [ -n "$NBD" ]; then |
|
| 27 |
+ qemu-nbd -d $NBD |
|
| 28 |
+ fi |
|
| 29 |
+ |
|
| 30 |
+ # Kill ourselves to signal any calling process |
|
| 31 |
+ trap 2; kill -2 $$ |
|
| 32 |
+} |
|
| 33 |
+ |
|
| 34 |
+trap cleanup SIGHUP SIGINT SIGTERM |
|
| 35 |
+ |
|
| 15 | 36 |
# Echo commands |
| 16 | 37 |
set -o xtrace |
| 17 | 38 |
|
| ... | ... |
@@ -100,9 +121,6 @@ function kill_unmount() {
|
| 100 | 100 |
# Install deps if needed |
| 101 | 101 |
dpkg -l kvm libvirt-bin kpartx || apt-get install -y --force-yes kvm libvirt-bin kpartx |
| 102 | 102 |
|
| 103 |
-# Let Ctrl-c kill tail and exit |
|
| 104 |
-trap kill_unmount SIGINT |
|
| 105 |
- |
|
| 106 | 103 |
# Where Openstack code will live in image |
| 107 | 104 |
DEST=${DEST:-/opt/stack}
|
| 108 | 105 |
|
| ... | ... |
@@ -390,7 +408,9 @@ sed -e 's/^PasswordAuthentication.*$/PasswordAuthentication yes/' -i $ROOTFS/etc |
| 390 | 390 |
|
| 391 | 391 |
# Unmount |
| 392 | 392 |
umount $ROOTFS || echo 'ok' |
| 393 |
+ROOTFS="" |
|
| 393 | 394 |
qemu-nbd -d $NBD |
| 395 |
+NBD="" |
|
| 394 | 396 |
|
| 395 | 397 |
# Create the instance |
| 396 | 398 |
cd $VM_DIR && virsh create libvirt.xml |
| ... | ... |
@@ -11,6 +11,22 @@ PXEDIR=${PXEDIR:-/var/cache/devstack/pxe}
|
| 11 | 11 |
OPWD=`pwd` |
| 12 | 12 |
PROGDIR=`dirname $0` |
| 13 | 13 |
|
| 14 |
+# Clean up any resources that may be in use |
|
| 15 |
+cleanup() {
|
|
| 16 |
+ set +o errexit |
|
| 17 |
+ |
|
| 18 |
+ # Mop up temporary files |
|
| 19 |
+ if [ -n "$MNTDIR" -a -d "$MNTDIR" ]; then |
|
| 20 |
+ umount $MNTDIR |
|
| 21 |
+ rmdir $MNTDIR |
|
| 22 |
+ fi |
|
| 23 |
+ |
|
| 24 |
+ # Kill ourselves to signal any calling process |
|
| 25 |
+ trap 2; kill -2 $$ |
|
| 26 |
+} |
|
| 27 |
+ |
|
| 28 |
+trap cleanup SIGHUP SIGINT SIGTERM |
|
| 29 |
+ |
|
| 14 | 30 |
mkdir -p $DEST_DIR/pxelinux.cfg |
| 15 | 31 |
cd $DEST_DIR |
| 16 | 32 |
for i in memdisk menu.c32 pxelinux.0; do |
| ... | ... |
@@ -10,6 +10,33 @@ if [ ! "$#" -eq "1" ]; then |
| 10 | 10 |
exit 1 |
| 11 | 11 |
fi |
| 12 | 12 |
|
| 13 |
+# Clean up any resources that may be in use |
|
| 14 |
+cleanup() {
|
|
| 15 |
+ set +o errexit |
|
| 16 |
+ |
|
| 17 |
+ # Mop up temporary files |
|
| 18 |
+ if [ -n "$MNTDIR" -a -d "$MNTDIR" ]; then |
|
| 19 |
+ umount $MNTDIR |
|
| 20 |
+ rmdir $MNTDIR |
|
| 21 |
+ fi |
|
| 22 |
+ if [ -n "$DEV_FILE_TMP" -a -e "$DEV_FILE_TMP "]; then |
|
| 23 |
+ rm -f $DEV_FILE_TMP |
|
| 24 |
+ fi |
|
| 25 |
+ if [ -n "$IMG_FILE_TMP" -a -e "$IMG_FILE_TMP" ]; then |
|
| 26 |
+ rm -f $IMG_FILE_TMP |
|
| 27 |
+ fi |
|
| 28 |
+ |
|
| 29 |
+ # Release NBD devices |
|
| 30 |
+ if [ -n "$NBD" ]; then |
|
| 31 |
+ qemu-nbd -d $NBD |
|
| 32 |
+ fi |
|
| 33 |
+ |
|
| 34 |
+ # Kill ourselves to signal any calling process |
|
| 35 |
+ trap 2; kill -2 $$ |
|
| 36 |
+} |
|
| 37 |
+ |
|
| 38 |
+trap cleanup SIGHUP SIGINT SIGTERM |
|
| 39 |
+ |
|
| 13 | 40 |
# Set up nbd |
| 14 | 41 |
modprobe nbd max_part=63 |
| 15 | 42 |
|
| ... | ... |
@@ -107,6 +134,7 @@ if [ ! -r $DEV_FILE ]; then |
| 107 | 107 |
umount $MNTDIR |
| 108 | 108 |
rmdir $MNTDIR |
| 109 | 109 |
qemu-nbd -d $NBD |
| 110 |
+ NBD="" |
|
| 110 | 111 |
mv $DEV_FILE_TMP $DEV_FILE |
| 111 | 112 |
fi |
| 112 | 113 |
rm -f $DEV_FILE_TMP |
| ... | ... |
@@ -127,6 +155,7 @@ if [ ! -r $IMG_FILE ]; then |
| 127 | 127 |
dd if=${NBD}p1 of=$IMG_FILE_TMP bs=1M
|
| 128 | 128 |
|
| 129 | 129 |
qemu-nbd -d $NBD |
| 130 |
+ NBD="" |
|
| 130 | 131 |
mv $IMG_FILE_TMP $IMG_FILE |
| 131 | 132 |
fi |
| 132 | 133 |
rm -f $IMG_FILE_TMP |
| ... | ... |
@@ -11,6 +11,26 @@ PXEDIR=${PXEDIR:-/var/cache/devstack/pxe}
|
| 11 | 11 |
OPWD=`pwd` |
| 12 | 12 |
PROGDIR=`dirname $0` |
| 13 | 13 |
|
| 14 |
+# Clean up any resources that may be in use |
|
| 15 |
+cleanup() {
|
|
| 16 |
+ set +o errexit |
|
| 17 |
+ |
|
| 18 |
+ # Mop up temporary files |
|
| 19 |
+ if [ -n "$DEST_DEV" ]; then |
|
| 20 |
+ umount $DEST_DIR |
|
| 21 |
+ rmdir $DEST_DIR |
|
| 22 |
+ fi |
|
| 23 |
+ if [ -n "$MNTDIR" -a -d "$MNTDIR" ]; then |
|
| 24 |
+ umount $MNTDIR |
|
| 25 |
+ rmdir $MNTDIR |
|
| 26 |
+ fi |
|
| 27 |
+ |
|
| 28 |
+ # Kill ourselves to signal any calling process |
|
| 29 |
+ trap 2; kill -2 $$ |
|
| 30 |
+} |
|
| 31 |
+ |
|
| 32 |
+trap cleanup SIGHUP SIGINT SIGTERM |
|
| 33 |
+ |
|
| 14 | 34 |
if [ -b $DEST_DIR ]; then |
| 15 | 35 |
# We have a block device, install syslinux and mount it |
| 16 | 36 |
DEST_DEV=$DEST_DIR |
| ... | ... |
@@ -26,6 +26,24 @@ usage() {
|
| 26 | 26 |
exit 1 |
| 27 | 27 |
} |
| 28 | 28 |
|
| 29 |
+# Clean up any resources that may be in use |
|
| 30 |
+cleanup() {
|
|
| 31 |
+ set +o errexit |
|
| 32 |
+ |
|
| 33 |
+ # Mop up temporary files |
|
| 34 |
+ if [ -n "$IMG_FILE_TMP" -a -e "$IMG_FILE_TMP" ]; then |
|
| 35 |
+ rm -f $IMG_FILE_TMP |
|
| 36 |
+ fi |
|
| 37 |
+ |
|
| 38 |
+ # Release NBD devices |
|
| 39 |
+ if [ -n "$NBD" ]; then |
|
| 40 |
+ qemu-nbd -d $NBD |
|
| 41 |
+ fi |
|
| 42 |
+ |
|
| 43 |
+ # Kill ourselves to signal any calling process |
|
| 44 |
+ trap 2; kill -2 $$ |
|
| 45 |
+} |
|
| 46 |
+ |
|
| 29 | 47 |
while getopts f:hmr: c; do |
| 30 | 48 |
case $c in |
| 31 | 49 |
f) FORMAT=$OPTARG |
| ... | ... |
@@ -89,6 +107,8 @@ case $DIST_NAME in |
| 89 | 89 |
;; |
| 90 | 90 |
esac |
| 91 | 91 |
|
| 92 |
+trap cleanup SIGHUP SIGINT SIGTERM |
|
| 93 |
+ |
|
| 92 | 94 |
# Prepare the base image |
| 93 | 95 |
|
| 94 | 96 |
# Get the UEC image |
| ... | ... |
@@ -170,5 +190,6 @@ rm -f $MNTDIR/etc/resolv.conf |
| 170 | 170 |
umount $MNTDIR |
| 171 | 171 |
rmdir $MNTDIR |
| 172 | 172 |
qemu-nbd -d $NBD |
| 173 |
+NBD="" |
|
| 173 | 174 |
|
| 174 | 175 |
mv $IMG_FILE_TMP $IMG_FILE |