Browse code

Add raw image support

Dean Troyer authored on 2011/09/17 07:22:23
Showing 2 changed files
... ...
@@ -3,7 +3,7 @@
3 3
 #
4 4
 # make_image.sh release format
5 5
 #
6
-# Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc)
6
+# Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc), raw
7 7
 #
8 8
 # Requires sudo to root
9 9
 
... ...
@@ -36,22 +36,29 @@ FORMAT=$2
36 36
 
37 37
 case $FORMAT in
38 38
     kvm|qcow2)  FORMAT=qcow2
39
-                TARGET=kvm
39
+                QFORMAT=qcow2
40
+                HYPER=kvm
40 41
                 ;;
41 42
     vmserver|vmdk)
42 43
                 FORMAT=vmdk
43
-                TARGET=vmserver
44
+                QFORMAT=vmdk
45
+                HYPER=vmserver
44 46
                 ;;
45
-    vbox|vdi)   FORMAT=qcow2
46
-                TARGET=kvm
47
-                FINAL_FORMAT=vdi
47
+    vbox|vdi)   FORMAT=vdi
48
+                QFORMAT=vdi
49
+                HYPER=kvm
48 50
                 ;;
49
-    vhd|vpc)    FORMAT=qcow2
50
-                TARGET=kvm
51
-                FINAL_FORMAT=vhd
51
+    vhd|vpc)    FORMAT=vhd
52
+                QFORMAT=vpc
53
+                HYPER=kvm
52 54
                 ;;
53 55
     xen)        FORMAT=raw
54
-                TARGET=xen
56
+                QFORMAT=raw
57
+                HYPER=xen
58
+                ;;
59
+    raw)        FORMAT=raw
60
+                QFORMAT=raw
61
+                HYPER=kvm
55 62
                 ;;
56 63
     *)          echo "Unknown format: $FORMAT"
57 64
                 usage
... ...
@@ -74,24 +81,23 @@ if [ -z `which vmbuilder` ]; then
74 74
 fi
75 75
 
76 76
 # Build the image
77
-sudo vmbuilder $TARGET ubuntu --suite $RELEASE \
77
+TMPDISK=`mktemp imgXXXXXXXX`
78
+SIZE=$[$ROOTSIZE+$SWAPSIZE+1]
79
+dd if=/dev/null of=$TMPDISK bs=1M seek=$SIZE
80
+sudo vmbuilder $HYPER ubuntu --suite $RELEASE \
78 81
   -o \
79 82
   --rootsize=$ROOTSIZE \
80 83
   --swapsize=$SWAPSIZE \
81 84
   --tmpfs - \
82 85
   --addpkg=openssh-server \
86
+  --raw=$TMPDISK \
83 87
 
84
-#  --mirror=$MIRROR \
85
-
86
-if [ -z "$FINAL_FORMAT" ]; then
88
+if [ "$FORMAT" = "raw" ]; then
87 89
     # Get image
88
-    mv ubuntu-$TARGET/tmp*.$FORMAT $RELEASE.$FORMAT
90
+    mv $TMPDISK $RELEASE.$FORMAT
89 91
 else
90 92
     # Convert image
91
-    tgt=$FINAL_FORMAT
92
-    if [ "$tgt" = "vhd" ]; then
93
-        tgt=vpc
94
-    fi
95
-    qemu-img convert -O $tgt ubuntu-$TARGET/tmp*.$FORMAT $RELEASE.$FINAL_FORMAT
93
+    qemu-img convert -O $QFORMAT $TMPDISK $RELEASE.$FORMAT
94
+    rm $TMPDISK
96 95
 fi
97
-rm -rf ubuntu-$TARGET
96
+rm -rf ubuntu-$HYPER
... ...
@@ -63,6 +63,7 @@ if [ -z "$GLANCE" ]; then
63 63
         # Look for stack.sh's install
64 64
         GLANCE="/opt/glance/bin/glance"
65 65
     else
66
+        # Install Glance client in /opt
66 67
         echo "Glance not found, must install client"
67 68
         OWD=`pwd`
68 69
         cd /opt
... ...
@@ -79,9 +80,10 @@ fi
79 79
 # Create image if it doesn't exist
80 80
 if [ ! -r $RELEASE.$FORMAT ]; then
81 81
     DIR=`dirname $0`
82
-    echo "$RELEASE.$FORMAT not found, creating...must be root to do this:"
82
+    echo "$RELEASE.$FORMAT not found, creating..."
83 83
     $DIR/make_image.sh $RELEASE $FORMAT
84 84
 fi
85 85
 
86 86
 # Upload the image
87
+echo "Uploading image $RELEASE.$FORMAT to $HOST"
87 88
 $GLANCE add name=$RELEASE.$FORMAT is_public=true disk_format=$FORMAT --host $HOST --port $PORT <$RELEASE.$FORMAT