Browse code

Image script cleanups

Dean Troyer authored on 2011/09/17 06:16:34
Showing 3 changed files
... ...
@@ -9,7 +9,6 @@ Tool to build (nfs export) openstack dev environments
9 9
 * check openstack-puppet recipes to see if anything else is missing
10 10
 * allow rabbit connection to be specified via environment variables with sensible defaults
11 11
 * Add volume support
12
-* extract image upload to a seperate script that supports generating images via debootstrap (ubuntu-vm-builder?)
13 12
 * allow changing of git locations (specify different tag/branch or repos)
14 13
 * change method of invoking stack.sh to ./stack.sh all _or_ ./stack.sh nova-compute,nova-network,nova-api,nova-volume
15 14
 * Add quantum support
... ...
@@ -19,6 +18,7 @@ Tool to build (nfs export) openstack dev environments
19 19
 * sqlconn can be set via env
20 20
 * move back to using sudo
21 21
 * move nova to mysql
22
+* create images via vmbuilder and upload images via glance
22 23
 
23 24
 # Future
24 25
 
... ...
@@ -19,14 +19,14 @@ usage() {
19 19
 
20 20
 while getopts hm:r:s: c; do
21 21
     case $c in
22
-        h)	usage
23
-		;;
24
-	m)	MIRROR=$OPTARG
25
-		;;
26
-	r)	ROOTSIZE=$OPTARG
27
-		;;
28
-	s)	SWAPSIZE=$OPTARG
29
-		;;
22
+        h)  usage
23
+            ;;
24
+        m)  MIRROR=$OPTARG
25
+            ;;
26
+        r)  ROOTSIZE=$OPTARG
27
+            ;;
28
+        s)  SWAPSIZE=$OPTARG
29
+            ;;
30 30
     esac
31 31
 done
32 32
 shift `expr $OPTIND - 1`
... ...
@@ -34,38 +34,43 @@ shift `expr $OPTIND - 1`
34 34
 RELEASE=$1
35 35
 FORMAT=$2
36 36
 
37
-case $RELEASE in
38
-    natty)	;;
39
-    maverick)	;;
40
-    lucid)	;;
41
-    karmic)	;;
42
-    jaunty)	;;
43
-    *)		echo "Unknown release: $RELEASE"
44
-		usage
37
+case $FORMAT in
38
+    kvm|qcow2)  FORMAT=qcow2
39
+                TARGET=kvm
40
+                ;;
41
+    vmserver|vmdk)
42
+                FORMAT=vmdk
43
+                TARGET=vmserver
44
+                ;;
45
+    vbox|vdi)   FORMAT=qcow2
46
+                TARGET=kvm
47
+                FINAL_FORMAT=vdi
48
+                ;;
49
+    vhd|vpc)    FORMAT=qcow2
50
+                TARGET=kvm
51
+                FINAL_FORMAT=vhd
52
+                ;;
53
+    xen)        FORMAT=raw
54
+                TARGET=xen
55
+                ;;
56
+    *)          echo "Unknown format: $FORMAT"
57
+                usage
45 58
 esac
46 59
 
47
-case $FORMAT in
48
-    kvm|qcow2)	FORMAT=qcow2
49
-		TARGET=kvm
50
-		;;
51
-    vmserver|vmdk)	FORMAT=vmdk
52
-		TARGET=vmserver
53
-		;;
54
-    vbox|vdi)	FORMAT=qcow2
55
-		TARGET=kvm
56
-		FINAL_FORMAT=vdi
57
-		;;
58
-    vhd|vpc)	FORMAT=qcow2
59
-		TARGET=kvm
60
-		FINAL_FORMAT=vpc
61
-		;;
62
-    *)		echo "Unknown format: $FORMAT"
63
-		usage
60
+case $RELEASE in
61
+    natty)      ;;
62
+    maverick)   ;;
63
+    lucid)      ;;
64
+    karmic)     ;;
65
+    jaunty)     ;;
66
+    *)          echo "Unknown release: $RELEASE"
67
+                usage
68
+                ;;
64 69
 esac
65 70
 
66 71
 # Install stuff if necessary
67 72
 if [ -z `which vmbuilder` ]; then
68
-	sudo apt-get install ubuntu-vm-builder
73
+    sudo apt-get install ubuntu-vm-builder
69 74
 fi
70 75
 
71 76
 # Build the image
... ...
@@ -83,6 +88,10 @@ if [ -z "$FINAL_FORMAT" ]; then
83 83
     mv ubuntu-$TARGET/tmp*.$FORMAT $RELEASE.$FORMAT
84 84
 else
85 85
     # Convert image
86
-    qemu-img convert -O $FINAL_FORMAT ubuntu-$TARGET/tmp*.$FORMAT $RELEASE.$FINAL_FORMAT
86
+    tgt=$FINAL_FORMAT
87
+    if [ "$tgt" = "vhd" ]; then
88
+        tgt=vpc
89
+    fi
90
+    qemu-img convert -O $tgt ubuntu-$TARGET/tmp*.$FORMAT $RELEASE.$FINAL_FORMAT
87 91
 fi
88 92
 rm -rf ubuntu-$TARGET
... ...
@@ -1,30 +1,24 @@
1 1
 #!/bin/bash
2 2
 # upload_image.sh - Upload Ubuntu images (create if necessary) in various formats
3
-#
4
-# upload_image.sh release format
5
-#
6
-# format   target
7
-# qcow2    kvm,qemu
8
-# vmdk     vmw6
9
-# vbox     vdi
10
-# vhd      vpc
11
-
12
-HOST=${HOST:-demo.rcb.me}
13
-PORT=${PORT:-9292}
3
+# Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc)
4
+# Requires sudo to root
14 5
 
15 6
 usage() {
16
-    echo "$0 - Upload Ubuntu images"
7
+    echo "$0 - Upload images to OpenStack"
17 8
     echo ""
18 9
     echo "$0 [-h host] [-p port] release format"
19 10
     exit 1
20 11
 }
21 12
 
13
+HOST=${HOST:-localhost}
14
+PORT=${PORT:-9292}
15
+
22 16
 while getopts h:p: c; do
23 17
     case $c in
24
-        h)      HOST=$OPTARG
25
-                ;;
26
-	p)	PORT=$OPTARG
27
-		;;
18
+        h)  HOST=$OPTARG
19
+            ;;
20
+        p)  PORT=$OPTARG
21
+            ;;
28 22
     esac
29 23
 done
30 24
 shift `expr $OPTIND - 1`
... ...
@@ -32,50 +26,61 @@ shift `expr $OPTIND - 1`
32 32
 RELEASE=$1
33 33
 FORMAT=$2
34 34
 
35
-case $RELEASE in
36
-    natty)	;;
37
-    maverick)	;;
38
-    lucid)	;;
39
-    karmic)	;;
40
-    jaunty)	;;
41
-    *)		echo "Unknown release: $RELEASE"
42
-		usage
35
+case $FORMAT in
36
+    kvm|qcow2)  FORMAT=qcow2
37
+                TARGET=kvm
38
+                ;;
39
+    vmserver|vmdk)
40
+                FORMAT=vmdk
41
+                TARGET=vmserver
42
+                ;;
43
+    vbox|vdi)   TARGET=kvm
44
+                FORMAT=vdi
45
+                ;;
46
+    vhd|vpc)    TARGET=kvm
47
+                FORMAT=vhd
48
+                ;;
49
+    *)          echo "Unknown format: $FORMAT"
50
+                usage
43 51
 esac
44 52
 
45
-case $FORMAT in
46
-    kvm|qcow2)	FORMAT=qcow2
47
-		TARGET=kvm
48
-		;;
49
-    vmserver|vmdk)	FORMAT=vmdk
50
-		TARGET=vmserver
51
-		;;
52
-    vbox|vdi)	TARGET=kvm
53
-		FORMAT=vdi
54
-		;;
55
-    vhd|vpc)	TARGET=kvm
56
-		FORMAT=vpc
57
-		;;
58
-    *)		echo "Unknown format: $FORMAT"
59
-		usage
53
+case $RELEASE in
54
+    natty)      ;;
55
+    maverick)   ;;
56
+    lucid)      ;;
57
+    karmic)     ;;
58
+    jaunty)     ;;
59
+    *)          if [ ! -r $RELEASE.$FORMAT ]; then
60
+                    echo "Unknown release: $RELEASE"
61
+                    usage
62
+                fi
63
+                ;;
60 64
 esac
61 65
 
62 66
 GLANCE=`which glance`
63 67
 if [ -z "$GLANCE" ]; then
64
-	echo "Glance not found, must install client"
65
-	sudo apt-get install python-pip python-eventlet python-routes python-greenlet python-argparse python-sqlalchemy python-wsgiref python-pastedeploy python-xattr
66
-	sudo pip install kombu
67
-	git clone https://github.com/cloudbuilders/glance.git
68
-	cd glance
69
-	sudo python setup.py develop
70
-	cd ..
71
-	GLANCE=`which glance`
68
+    if [ -x "/opt/glance/bin/glance" ]; then
69
+        # Look for stack.sh's install
70
+        GLANCE="/opt/glance/bin/glance"
71
+    else
72
+        echo "Glance not found, must install client"
73
+        OWD=`pwd`
74
+        cd /opt
75
+        sudo apt-get install python-pip python-eventlet python-routes python-greenlet python-argparse python-sqlalchemy python-wsgiref python-pastedeploy python-xattr
76
+        sudo pip install kombu
77
+        sudo git clone https://github.com/cloudbuilders/glance.git
78
+        cd glance
79
+        sudo python setup.py develop
80
+        cd $OWD
81
+        GLANCE=`which glance`
82
+    fi
72 83
 fi
73 84
 
74 85
 # Create image if it doesn't exist
75 86
 if [ ! -r $RELEASE.$FORMAT ]; then
76
-	DIR=`dirname $0`
77
-	echo "$RELEASE.$FORMAT not found, creating...must be root to do this:"
78
-	$DIR/make_image.sh $RELEASE $FORMAT
87
+    DIR=`dirname $0`
88
+    echo "$RELEASE.$FORMAT not found, creating...must be root to do this:"
89
+    $DIR/make_image.sh $RELEASE $FORMAT
79 90
 fi
80 91
 
81 92
 # Upload the image