Browse code

remove old build scripts and clean for those that work

Change-Id: I5c156879f3c85f1555a1411695ac43cefbbf3b99

Jesse Andrews authored on 2011/11/21 03:02:26
Showing 20 changed files
... ...
@@ -6,7 +6,7 @@
6 6
 function usage {
7 7
     echo "$0 - Build config.ini for openstack-integration-tests"
8 8
     echo ""
9
-    echo "Usage: $0 configfile"
9
+    echo "Usage: $0 configdir"
10 10
     exit 1
11 11
 }
12 12
 
... ...
@@ -14,22 +14,27 @@ if [ ! "$#" -eq "1" ]; then
14 14
     usage
15 15
 fi
16 16
 
17
-CONFIG_FILE=$1
17
+CONFIG_DIR=$1
18
+CONFIG_CONF=$CONFIG_DIR/storm.conf
19
+CONFIG_INI=$CONFIG_DIR/config.ini
18 20
 
19 21
 # Clean up any resources that may be in use
20 22
 cleanup() {
21 23
     set +o errexit
22 24
 
23 25
     # Mop up temporary files
24
-    if [ -n "$CONFIG_FILE_TMP" -a -e "$CONFIG_FILE_TMP" ]; then
25
-        rm -f $CONFIG_FILE_TMP
26
+    if [ -n "$CONFIG_CONF_TMP" -a -e "$CONFIG_CONF_TMP" ]; then
27
+        rm -f $CONFIG_CONF_TMP
28
+    fi
29
+    if [ -n "$CONFIG_INI_TMP" -a -e "$CONFIG_INI_TMP" ]; then
30
+        rm -f $CONFIG_INI_TMP
26 31
     fi
27 32
 
28 33
     # Kill ourselves to signal any calling process
29 34
     trap 2; kill -2 $$
30 35
 }
31 36
 
32
-trap cleanup SIGHUP SIGINT SIGTERM
37
+trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT
33 38
 
34 39
 # Keep track of the current directory
35 40
 TOOLS_DIR=$(cd $(dirname "$0") && pwd)
... ...
@@ -50,17 +55,19 @@ DEST=${DEST:-/opt/stack}
50 50
 
51 51
 DIST_NAME=${DIST_NAME:-oneiric}
52 52
 
53
-# Process network configuration vars
54
-GUEST_NETWORK=${GUEST_NETWORK:-1}
55
-GUEST_RECREATE_NET=${GUEST_RECREATE_NET:-yes}
56
-
57
-GUEST_IP=${GUEST_IP:-192.168.$GUEST_NETWORK.50}
58
-GUEST_CIDR=${GUEST_CIDR:-$GUEST_IP/24}
59
-GUEST_NETMASK=${GUEST_NETMASK:-255.255.255.0}
60
-GUEST_GATEWAY=${GUEST_GATEWAY:-192.168.$GUEST_NETWORK.1}
61
-GUEST_MAC=${GUEST_MAC:-"02:16:3e:07:69:`printf '%02X' $GUEST_NETWORK`"}
62
-GUEST_RAM=${GUEST_RAM:-1524288}
63
-GUEST_CORES=${GUEST_CORES:-1}
53
+if [ ! -f $DEST/.ramdisk ]; then
54
+    # Process network configuration vars
55
+    GUEST_NETWORK=${GUEST_NETWORK:-1}
56
+    GUEST_RECREATE_NET=${GUEST_RECREATE_NET:-yes}
57
+
58
+    GUEST_IP=${GUEST_IP:-192.168.$GUEST_NETWORK.50}
59
+    GUEST_CIDR=${GUEST_CIDR:-$GUEST_IP/24}
60
+    GUEST_NETMASK=${GUEST_NETMASK:-255.255.255.0}
61
+    GUEST_GATEWAY=${GUEST_GATEWAY:-192.168.$GUEST_NETWORK.1}
62
+    GUEST_MAC=${GUEST_MAC:-"02:16:3e:07:69:`printf '%02X' $GUEST_NETWORK`"}
63
+    GUEST_RAM=${GUEST_RAM:-1524288}
64
+    GUEST_CORES=${GUEST_CORES:-1}
65
+fi
64 66
 
65 67
 # Use the GUEST_IP unless an explicit IP is set by ``HOST_IP``
66 68
 HOST_IP=${HOST_IP:-$GUEST_IP}
... ...
@@ -77,34 +84,75 @@ set `echo $GLANCE_HOSTPORT | tr ':' ' '`
77 77
 GLANCE_HOST=$1
78 78
 GLANCE_PORT=$2
79 79
 
80
-CONFIG_FILE_TMP=$(mktemp $CONFIG_FILE.XXXXXX)
80
+# Create storm.conf
81
+
82
+CONFIG_CONF_TMP=$(mktemp $CONFIG_CONF.XXXXXX)
83
+    cat >$CONFIG_CONF_TMP <<EOF
84
+[nova]
85
+auth_url=http://$HOST_IP:5000/v2.0/tokens
86
+user=admin
87
+api_key=$ADMIN_PASSWORD
88
+tenant_name=admin
89
+ssh_timeout=300
90
+build_interval=10
91
+build_timeout=600
92
+
93
+[environment]
94
+image_ref=3
95
+image_ref_alt=4
96
+flavor_ref=1
97
+flavor_ref_alt=2
98
+create_image_enabled=true
99
+resize_available=true
100
+authentication=keystone_v2
101
+EOF
102
+mv $CONFIG_CONF_TMP $CONFIG_CONF
103
+CONFIG_CONF_TMP=""
104
+
105
+# Create config.ini
106
+
107
+CONFIG_INI_TMP=$(mktemp $CONFIG_INI.XXXXXX)
81 108
 if [ "$UPLOAD_LEGACY_TTY" ]; then
82
-    cat >$CONFIG_FILE_TMP <<EOF
109
+    cat >$CONFIG_INI_TMP <<EOF
83 110
 [environment]
84 111
 aki_location = $DEST/devstack/files/images/aki-tty/image
85 112
 ari_location = $DEST/devstack/files/images/ari-tty/image
86 113
 ami_location = $DEST/devstack/files/images/ami-tty/image
87
-image_ref = 1
114
+image_ref = 3
115
+image_ref_alt = 3
88 116
 flavor_ref = 1
117
+flavor_ref_alt = 2
118
+
119
+[glance]
120
+host = $GLANCE_HOST
121
+apiver = v1
122
+port = $GLANCE_PORT
123
+image_id = 3
124
+image_id_alt = 3
125
+tenant_id = 1
89 126
 EOF
90 127
 else
91
-    cat >$CONFIG_FILE_TMP <<EOF
128
+    cat >$CONFIG_INI_TMP <<EOF
92 129
 [environment]
93 130
 aki_location = $DEST/openstack-integration-tests/include/sample_vm/$DIST_NAME-server-cloudimg-amd64-vmlinuz-virtual
94 131
 #ari_location = $DEST/openstack-integration-tests/include/sample_vm/$DIST_NAME-server-cloudimg-amd64-loader
95 132
 ami_location = $DEST/openstack-integration-tests/include/sample_vm/$DIST_NAME-server-cloudimg-amd64.img
96
-image_ref = 1
133
+image_ref = 2
134
+image_ref_alt = 2
97 135
 flavor_ref = 1
98
-EOF
99
-fi
136
+flavor_ref_alt = 2
100 137
 
101
-cat >>$CONFIG_FILE_TMP <<EOF
102 138
 [glance]
103 139
 host = $GLANCE_HOST
104 140
 apiver = v1
105 141
 port = $GLANCE_PORT
106 142
 image_id = 1
143
+image_id_alt = 1
107 144
 tenant_id = 1
145
+EOF
146
+fi
147
+
148
+cat >>$CONFIG_INI_TMP <<EOF
108 149
 
109 150
 [keystone]
110 151
 service_host = $HOST_IP
... ...
@@ -125,6 +173,7 @@ ssh_timeout = 300
125 125
 build_timeout = 300
126 126
 flavor_ref = 1
127 127
 flavor_ref_alt = 2
128
+multi_node = no
128 129
 
129 130
 [rabbitmq]
130 131
 host = $RABBIT_HOST
... ...
@@ -141,4 +190,7 @@ username = root
141 141
 password = password
142 142
 
143 143
 EOF
144
-mv $CONFIG_FILE_TMP $CONFIG_FILE
144
+mv $CONFIG_INI_TMP $CONFIG_INI
145
+CONFIG_INI_TMP=""
146
+
147
+trap - SIGHUP SIGINT SIGTERM SIGQUIT EXIT
145 148
deleted file mode 100755
... ...
@@ -1,489 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-# exit on error to stop unexpected errors
4
-set -o errexit
5
-
6
-# Make sure that we have the proper version of ubuntu
7
-UBUNTU_VERSION=`cat /etc/lsb-release | grep CODENAME | sed 's/.*=//g'`
8
-if [ ! "oneiric" = "$UBUNTU_VERSION" ]; then
9
-    if [ ! "natty" = "$UBUNTU_VERSION" ]; then
10
-        echo "This script only works with oneiric and natty"
11
-        exit 1
12
-    fi
13
-fi
14
-
15
-# Clean up any resources that may be in use
16
-cleanup() {
17
-    set +o errexit
18
-    unmount_images
19
-
20
-    if [ -n "$COPY_DIR" ]; then
21
-        umount $COPY_DIR/dev
22
-        umount $COPY_DIR
23
-    fi
24
-
25
-    if [ -n "$ROOTFS" ]; then
26
-        umount $ROOTFS/dev
27
-        umount $ROOTFS
28
-    fi
29
-
30
-    # Release NBD devices
31
-    if [ -n "$NBD" ]; then
32
-        qemu-nbd -d $NBD
33
-    fi
34
-
35
-    # Kill ourselves to signal any calling process
36
-    trap 2; kill -2 $$
37
-}
38
-
39
-trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT
40
-
41
-# Echo commands
42
-set -o xtrace
43
-
44
-# Keep track of the current directory
45
-TOOLS_DIR=$(cd $(dirname "$0") && pwd)
46
-TOP_DIR=`cd $TOOLS_DIR/..; pwd`
47
-
48
-# Where to store files and instances
49
-WORK_DIR=${WORK_DIR:-/opt/kvmstack}
50
-
51
-# Where to store images
52
-IMAGES_DIR=$WORK_DIR/images
53
-
54
-# Create images dir
55
-mkdir -p $IMAGES_DIR
56
-
57
-# Abort if localrc is not set
58
-if [ ! -e $TOP_DIR/localrc ]; then
59
-    echo "You must have a localrc with ALL necessary passwords defined before proceeding."
60
-    echo "See stack.sh for required passwords."
61
-    exit 1
62
-fi
63
-
64
-cd $TOP_DIR
65
-
66
-# Source params
67
-source ./stackrc
68
-
69
-# Configure the root password of the vm to be the same as ``ADMIN_PASSWORD``
70
-ROOT_PASSWORD=${ADMIN_PASSWORD:-password}
71
-
72
-# Base image (natty by default)
73
-DIST_NAME=${DIST_NAME:-natty}
74
-IMAGE_FNAME=$DIST_NAME.raw
75
-
76
-# Name of our instance, used by libvirt
77
-GUEST_NAME=${GUEST_NAME:-devstack}
78
-
79
-# Original version of built image
80
-BASE_IMAGE=$IMAGES_DIR/$DIST_NAME.raw
81
-
82
-# Copy of base image, which we pre-install with tasty treats
83
-VM_IMAGE=$IMAGES_DIR/$DIST_NAME.$GUEST_NAME.raw
84
-
85
-# Mop up after previous runs
86
-virsh destroy $GUEST_NAME || true
87
-
88
-# Where this vm is stored
89
-VM_DIR=$WORK_DIR/instances/$GUEST_NAME
90
-
91
-# Create vm dir
92
-mkdir -p $VM_DIR
93
-
94
-# Mount point into copied base image
95
-COPY_DIR=$VM_DIR/copy
96
-mkdir -p $COPY_DIR
97
-
98
-# Get the base image if it does not yet exist
99
-if [ ! -e $BASE_IMAGE ]; then
100
-    $TOOLS_DIR/get_uec_image.sh -f raw -r 5000 $DIST_NAME $BASE_IMAGE
101
-fi
102
-
103
-# Create a copy of the base image
104
-if [ ! -e $VM_IMAGE ]; then
105
-    cp -p $BASE_IMAGE $VM_IMAGE
106
-fi
107
-
108
-# Unmount the copied base image
109
-function unmount_images() {
110
-    # unmount the filesystem
111
-    while df | grep -q $COPY_DIR; do
112
-        umount $COPY_DIR || echo 'ok'
113
-        sleep 1
114
-    done
115
-}
116
-
117
-# Unmount from failed runs
118
-unmount_images
119
-
120
-# Ctrl-c catcher
121
-function kill_unmount() {
122
-    unmount_images
123
-    exit 1
124
-}
125
-
126
-# Install deps if needed
127
-dpkg -l kvm libvirt-bin kpartx || apt-get install -y --force-yes kvm libvirt-bin kpartx
128
-
129
-# Where Openstack code will live in image
130
-DEST=${DEST:-/opt/stack}
131
-
132
-# Mount the file system
133
-# For some reason, UEC-based images want 255 heads * 63 sectors * 512 byte sectors = 8225280
134
-mount -t ext4 -o loop,offset=8225280 $VM_IMAGE $COPY_DIR
135
-mount -o bind /dev $COPY_DIR/dev
136
-
137
-# git clone only if directory doesn't exist already.  Since ``DEST`` might not
138
-# be owned by the installation user, we create the directory and change the
139
-# ownership to the proper user.
140
-function git_clone {
141
-    if [ ! -d $2 ]; then
142
-        sudo mkdir $2
143
-        sudo chown `whoami` $2
144
-        git clone $1 $2
145
-        cd $2
146
-        # This checkout syntax works for both branches and tags
147
-        git checkout $3
148
-    fi
149
-}
150
-
151
-# Make sure that base requirements are installed
152
-cp /etc/resolv.conf $COPY_DIR/etc/resolv.conf
153
-chroot $COPY_DIR apt-get update
154
-chroot $COPY_DIR apt-get install -y --download-only `cat files/apts/* | grep NOPRIME | cut -d\# -f1`
155
-chroot $COPY_DIR apt-get install -y --force-yes `cat files/apts/* | grep -v NOPRIME | cut -d\# -f1`
156
-chroot $COPY_DIR pip install `cat files/pips/*`
157
-
158
-umount $COPY_DIR/dev
159
-
160
-# Clean out code repos if directed to do so
161
-if [ "$CLEAN" = "1" ]; then
162
-    rm -rf $COPY_DIR/$DEST
163
-fi
164
-
165
-# Cache openstack code
166
-mkdir -p $COPY_DIR/$DEST
167
-git_clone $NOVA_REPO $COPY_DIR/$DEST/nova $NOVA_BRANCH
168
-git_clone $GLANCE_REPO $COPY_DIR/$DEST/glance $GLANCE_BRANCH
169
-git_clone $KEYSTONE_REPO $COPY_DIR/$DESTkeystone $KEYSTONE_BRANCH
170
-git_clone $NOVNC_REPO $COPY_DIR/$DEST/noVNC $NOVNC_BRANCH
171
-git_clone $HORIZON_REPO $COPY_DIR/$DEST/horizon $HORIZON_BRANCH $HORIZON_TAG
172
-git_clone $NOVACLIENT_REPO $COPY_DIR/$DEST/python-novaclient $NOVACLIENT_BRANCH
173
-git_clone $OPENSTACKX_REPO $COPY_DIR/$DEST/openstackx $OPENSTACKX_BRANCH
174
-git_clone $KEYSTONE_REPO $COPY_DIR/$DEST/keystone $KEYSTONE_BRANCH
175
-git_clone $NOVNC_REPO $COPY_DIR/$DEST/noVNC $NOVNC_BRANCH
176
-git_clone $CITEST_REPO $COPY_DIR/$DEST/openstack-integration-tests $CITEST_BRANCH
177
-
178
-if [ -z "$UPLOAD_LEGACY_TTY" =; then
179
-    # Pre-load an image for testing
180
-    UEC_NAME=$DIST_NAME-server-cloudimg-amd64
181
-    CIVMDIR=${COPY_DIR}${DEST}/openstack-integration-tests/include/sample_vm
182
-    if [ ! -e $CIVMDIR/$UEC_NAME.tar.gz ]; then
183
-        mkdir -p $CIVMDIR
184
-        (cd $CIVMDIR && wget -N http://uec-images.ubuntu.com/$DIST_NAME/current/$UEC_NAME.tar.gz;
185
-            tar xzf $UEC_NAME.tar.gz;)
186
-    fi
187
-fi
188
-
189
-# Back to devstack
190
-cd $TOP_DIR
191
-
192
-# Unmount the filesystems
193
-unmount_images
194
-
195
-# Network configuration variables
196
-GUEST_NETWORK=${GUEST_NETWORK:-1}
197
-GUEST_RECREATE_NET=${GUEST_RECREATE_NET:-yes}
198
-
199
-GUEST_IP=${GUEST_IP:-192.168.$GUEST_NETWORK.50}
200
-GUEST_CIDR=${GUEST_CIDR:-$GUEST_IP/24}
201
-GUEST_NETMASK=${GUEST_NETMASK:-255.255.255.0}
202
-GUEST_GATEWAY=${GUEST_GATEWAY:-192.168.$GUEST_NETWORK.1}
203
-GUEST_MAC=${GUEST_MAC:-"02:16:3e:07:69:`printf '%02X' $GUEST_NETWORK`"}
204
-GUEST_RAM=${GUEST_RAM:-1524288}
205
-GUEST_CORES=${GUEST_CORES:-1}
206
-
207
-# libvirt.xml configuration
208
-NET_XML=$VM_DIR/net.xml
209
-cat > $NET_XML <<EOF
210
-<network>
211
-  <name>devstack-$GUEST_NETWORK</name>
212
-  <bridge name="stackbr%d" />
213
-  <forward/>
214
-  <ip address="$GUEST_GATEWAY" netmask="$GUEST_NETMASK" />
215
-</network>
216
-EOF
217
-
218
-if [[ "$GUEST_RECREATE_NET" == "yes" ]]; then
219
-    virsh net-destroy devstack-$GUEST_NETWORK || true
220
-    virsh net-create $VM_DIR/net.xml
221
-fi
222
-
223
-# libvirt.xml configuration
224
-LIBVIRT_XML=$VM_DIR/libvirt.xml
225
-cat > $LIBVIRT_XML <<EOF
226
-<domain type='kvm'>
227
-    <name>$GUEST_NAME</name>
228
-    <memory>$GUEST_RAM</memory>
229
-    <os>
230
-        <type>hvm</type>
231
-        <bootmenu enable='yes'/>
232
-    </os>
233
-    <features>
234
-        <acpi/>
235
-    </features>
236
-    <vcpu>$GUEST_CORES</vcpu>
237
-    <devices>
238
-        <disk type='file'>
239
-            <driver type='qcow2'/>
240
-            <source file='$VM_DIR/disk'/>
241
-            <target dev='vda' bus='virtio'/>
242
-        </disk>
243
-
244
-        <interface type='network'>
245
-           <source network='devstack-$GUEST_NETWORK'/>
246
-        </interface>
247
-        
248
-        <!-- The order is significant here.  File must be defined first -->
249
-        <serial type="file">
250
-            <source path='$VM_DIR/console.log'/>
251
-            <target port='1'/>
252
-        </serial>
253
-
254
-        <console type='pty' tty='/dev/pts/2'>
255
-            <source path='/dev/pts/2'/>
256
-            <target port='0'/>
257
-        </console>
258
-
259
-        <serial type='pty'>
260
-            <source path='/dev/pts/2'/>
261
-            <target port='0'/>
262
-        </serial>
263
-
264
-        <graphics type='vnc' port='-1' autoport='yes' keymap='en-us' listen='0.0.0.0'/>
265
-    </devices>
266
-</domain>
267
-EOF
268
-
269
-# Mount point for instance fs
270
-ROOTFS=$VM_DIR/root
271
-mkdir -p $ROOTFS
272
-
273
-# Clean up from previous runs
274
-umount $ROOTFS || echo 'ok'
275
-
276
-# Clean up old runs
277
-cd $VM_DIR
278
-rm -f $VM_DIR/disk
279
-
280
-# Create our instance fs
281
-qemu-img create -f qcow2 -b $VM_IMAGE disk
282
-
283
-# Finds the next available NBD device
284
-# Exits script if error connecting or none free
285
-# map_nbd image
286
-# returns full nbd device path
287
-function map_nbd {
288
-    for i in `seq 0 15`; do
289
-        if [ ! -e /sys/block/nbd$i/pid ]; then
290
-            NBD=/dev/nbd$i
291
-            # Connect to nbd and wait till it is ready
292
-            qemu-nbd -c $NBD $1
293
-            if ! timeout 60 sh -c "while ! [ -e ${NBD}p1 ]; do sleep 1; done"; then
294
-                echo "Couldn't connect $NBD"
295
-                exit 1
296
-            fi
297
-            break
298
-        fi
299
-    done
300
-    if [ -z "$NBD" ]; then
301
-        echo "No free NBD slots"
302
-        exit 1
303
-    fi
304
-    echo $NBD
305
-}
306
-
307
-# Make sure we have nbd-ness
308
-modprobe nbd max_part=63
309
-
310
-# Set up nbd
311
-NBD=`map_nbd disk`
312
-NBD_DEV=`basename $NBD`
313
-
314
-# Mount the instance
315
-mount ${NBD}p1 $ROOTFS
316
-
317
-# Configure instance network
318
-INTERFACES=$ROOTFS/etc/network/interfaces
319
-cat > $INTERFACES <<EOF
320
-auto lo
321
-iface lo inet loopback
322
-
323
-auto eth0
324
-iface eth0 inet static
325
-        address $GUEST_IP
326
-        netmask $GUEST_NETMASK
327
-        gateway $GUEST_GATEWAY
328
-EOF
329
-
330
-# User configuration for the instance
331
-chroot $ROOTFS groupadd libvirtd || true
332
-chroot $ROOTFS useradd stack -s /bin/bash -d $DEST -G libvirtd
333
-cp -pr $TOP_DIR $ROOTFS/$DEST/devstack
334
-echo "root:$ROOT_PASSWORD" | chroot $ROOTFS chpasswd
335
-echo "stack:pass" | chroot $ROOTFS chpasswd
336
-echo "stack ALL=(ALL) NOPASSWD: ALL" >> $ROOTFS/etc/sudoers
337
-
338
-# Gracefully cp only if source file/dir exists
339
-function cp_it {
340
-    if [ -e $1 ] || [ -d $1 ]; then
341
-        cp -pRL $1 $2
342
-    fi
343
-}
344
-
345
-# Copy over your ssh keys and env if desired
346
-COPYENV=${COPYENV:-1}
347
-if [ "$COPYENV" = "1" ]; then
348
-    cp_it ~/.ssh $ROOTFS/$DEST/.ssh
349
-    cp_it ~/.ssh/id_rsa.pub $ROOTFS/$DEST/.ssh/authorized_keys
350
-    cp_it ~/.gitconfig $ROOTFS/$DEST/.gitconfig
351
-    cp_it ~/.vimrc $ROOTFS/$DEST/.vimrc
352
-    cp_it ~/.bashrc $ROOTFS/$DEST/.bashrc
353
-fi
354
-
355
-# pre-cache uec images
356
-for image_url in ${IMAGE_URLS//,/ }; do
357
-    IMAGE_FNAME=`basename "$image_url"`
358
-    if [ ! -f $IMAGES_DIR/$IMAGE_FNAME ]; then
359
-        wget -c $image_url -O $IMAGES_DIR/$IMAGE_FNAME
360
-    fi
361
-    cp $IMAGES_DIR/$IMAGE_FNAME $ROOTFS/$DEST/devstack/files
362
-done
363
-
364
-# Configure the runner
365
-RUN_SH=$ROOTFS/$DEST/run.sh
366
-cat > $RUN_SH <<EOF
367
-#!/usr/bin/env bash
368
-
369
-# Kill any existing screens
370
-killall screen
371
-
372
-# Install and run stack.sh
373
-sudo apt-get update
374
-sudo apt-get -y --force-yes install git-core vim-nox sudo
375
-if [ ! -d "$DEST/devstack" ]; then
376
-    git clone git://github.com/cloudbuilders/devstack.git $DEST/devstack
377
-fi
378
-cd $DEST/devstack && $STACKSH_PARAMS FORCE=yes ./stack.sh > /$DEST/run.sh.log
379
-echo >> /$DEST/run.sh.log
380
-echo >> /$DEST/run.sh.log
381
-echo "All done! Time to start clicking." >> /$DEST/run.sh.log
382
-cat $DEST/run.sh.log
383
-EOF
384
-chmod 755 $RUN_SH
385
-
386
-# Make runner launch on boot
387
-RC_LOCAL=$ROOTFS/etc/init.d/zlocal
388
-cat > $RC_LOCAL <<EOF
389
-#!/bin/sh -e
390
-# cloud-init overwrites the hostname with ubuntuhost
391
-echo $GUEST_NAME > /etc/hostname
392
-hostname $GUEST_NAME
393
-su -c "$DEST/run.sh" stack
394
-EOF
395
-chmod +x $RC_LOCAL
396
-chroot $ROOTFS sudo update-rc.d zlocal defaults 99
397
-
398
-# Make our ip address hostnames look nice at the command prompt
399
-echo "export PS1='${debian_chroot:+($debian_chroot)}\\u@\\H:\\w\\$ '" >> $ROOTFS/$DEST/.bashrc
400
-echo "export PS1='${debian_chroot:+($debian_chroot)}\\u@\\H:\\w\\$ '" >> $ROOTFS/etc/profile
401
-
402
-# Give stack ownership over $DEST so it may do the work needed
403
-chroot $ROOTFS chown -R stack $DEST
404
-
405
-# Set the hostname
406
-echo $GUEST_NAME > $ROOTFS/etc/hostname
407
-
408
-# We need the hostname to resolve for rabbit to launch
409
-if ! grep -q $GUEST_NAME $ROOTFS/etc/hosts; then
410
-    echo "$GUEST_IP $GUEST_NAME" >> $ROOTFS/etc/hosts
411
-fi
412
-
413
-# GRUB 2 wants to see /dev
414
-mount -o bind /dev $ROOTFS/dev
415
-
416
-# Change boot params so that we get a console log
417
-G_DEV_UUID=`blkid -t LABEL=cloudimg-rootfs -s UUID -o value | head -1`
418
-sed -e "s/GRUB_TIMEOUT=.*$/GRUB_TIMEOUT=3/" -i $ROOTFS/etc/default/grub
419
-sed -e "s,GRUB_CMDLINE_LINUX_DEFAULT=.*$,GRUB_CMDLINE_LINUX_DEFAULT=\"console=ttyS0 console=tty0 ds=nocloud ubuntu-pass=pass\",g" -i $ROOTFS/etc/default/grub
420
-sed -e 's/[#]*GRUB_TERMINAL=.*$/GRUB_TERMINAL="serial console"/' -i $ROOTFS/etc/default/grub
421
-echo 'GRUB_SERIAL_COMMAND="serial --unit=0"' >>$ROOTFS/etc/default/grub
422
-echo 'GRUB_DISABLE_OS_PROBER=true' >>$ROOTFS/etc/default/grub
423
-echo "GRUB_DEVICE_UUID=$G_DEV_UUID" >>$ROOTFS/etc/default/grub
424
-
425
-chroot $ROOTFS update-grub
426
-
427
-# Pre-generate ssh host keys and allow password login
428
-chroot $ROOTFS dpkg-reconfigure openssh-server
429
-sed -e 's/^PasswordAuthentication.*$/PasswordAuthentication yes/' -i $ROOTFS/etc/ssh/sshd_config
430
-
431
-# Unmount
432
-umount $ROOTFS/dev
433
-umount $ROOTFS || echo 'ok'
434
-ROOTFS=""
435
-qemu-nbd -d $NBD
436
-NBD=""
437
-
438
-trap - SIGHUP SIGINT SIGTERM SIGQUIT EXIT
439
-
440
-# Create the instance
441
-cd $VM_DIR && virsh create libvirt.xml
442
-
443
-# Tail the console log till we are done
444
-WAIT_TILL_LAUNCH=${WAIT_TILL_LAUNCH:-1}
445
-if [ "$WAIT_TILL_LAUNCH" = "1" ]; then
446
-    # Done creating the container, let's tail the log
447
-    echo
448
-    echo "============================================================="
449
-    echo "                          -- YAY! --"
450
-    echo "============================================================="
451
-    echo
452
-    echo "We're done launching the vm, about to start tailing the"
453
-    echo "stack.sh log. It will take a second or two to start."
454
-    echo
455
-    echo "Just CTRL-C at any time to stop tailing."
456
-
457
-    while [ ! -e "$VM_DIR/console.log" ]; do
458
-      sleep 1
459
-    done
460
-
461
-    tail -F $VM_DIR/console.log &
462
-
463
-    TAIL_PID=$!
464
-
465
-    function kill_tail() {
466
-        kill $TAIL_PID
467
-        exit 1
468
-    }
469
-
470
-    # Let Ctrl-c kill tail and exit
471
-    trap kill_tail SIGINT
472
-
473
-    set +o xtrace
474
-
475
-    echo "Waiting stack.sh to finish..."
476
-    while ! cat $VM_DIR/console.log | grep -q 'All done' ; do
477
-        sleep 1
478
-    done
479
-
480
-    set -o xtrace
481
-
482
-    kill $TAIL_PID
483
-
484
-    if ! grep -q "^stack.sh completed in" $VM_DIR/console.log; then
485
-        exit 1
486
-    fi
487
-    echo ""
488
-    echo "Finished - Zip-a-dee Doo-dah!"
489
-fi
490 1
deleted file mode 100755
... ...
@@ -1,324 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-# Debug stuff
4
-set -o errexit
5
-set -o xtrace
6
-
7
-# Sanity check
8
-if [ "$EUID" -ne "0" ]; then
9
-  echo "This script must be run with root privileges."
10
-  exit 1
11
-fi
12
-
13
-# Keep track of ubuntu version
14
-UBUNTU_VERSION=`cat /etc/lsb-release | grep CODENAME | sed 's/.*=//g'`
15
-
16
-# Move to top devstack dir
17
-cd ..
18
-
19
-# Abort if localrc is not set
20
-if [ ! -e ./localrc ]; then
21
-    echo "You must have a localrc with ALL necessary passwords defined before proceeding."
22
-    echo "See stack.sh for required passwords."
23
-    exit 1
24
-fi
25
-
26
-# Source params
27
-source ./stackrc
28
-
29
-# Store cwd
30
-CWD=`pwd`
31
-
32
-# Configurable params
33
-BRIDGE=${BRIDGE:-br0}
34
-GUEST_NAME=${GUEST_NAME:-STACK}
35
-GUEST_IP=${GUEST_IP:-192.168.1.50}
36
-GUEST_CIDR=${GUEST_CIDR:-$GUEST_IP/24}
37
-GUEST_NETMASK=${GUEST_NETMASK:-255.255.255.0}
38
-GUEST_GATEWAY=${GUEST_GATEWAY:-192.168.1.1}
39
-NAMESERVER=${NAMESERVER:-`cat /etc/resolv.conf | grep nameserver | head -1 | cut -d " " -f2`}
40
-COPYENV=${COPYENV:-1}
41
-DEST=${DEST:-/opt/stack}
42
-WAIT_TILL_LAUNCH=${WAIT_TILL_LAUNCH:-1}
43
-
44
-# Param string to pass to stack.sh.  Like "EC2_DMZ_HOST=192.168.1.1 MYSQL_USER=nova"
45
-# By default, n-vol is disabled for lxc, as iscsitarget doesn't work properly in lxc
46
-STACKSH_PARAMS=${STACKSH_PARAMS:-"ENABLED_SERVICES=g-api,g-reg,key,n-api,n-cpu,n-net,n-sch,n-vnc,horizon,mysql,rabbit"}
47
-
48
-# Option to use the version of devstack on which we are currently working
49
-USE_CURRENT_DEVSTACK=${USE_CURRENT_DEVSTACK:-1}
50
-
51
-
52
-# Install deps
53
-apt-get install -y lxc debootstrap
54
-
55
-# Install cgroup-bin from source, since the packaging is buggy and possibly incompatible with our setup
56
-if ! which cgdelete | grep -q cgdelete; then
57
-    apt-get install -y g++ bison flex libpam0g-dev make
58
-    wget http://sourceforge.net/projects/libcg/files/libcgroup/v0.37.1/libcgroup-0.37.1.tar.bz2/download -O /tmp/libcgroup-0.37.1.tar.bz2
59
-    cd /tmp && bunzip2 libcgroup-0.37.1.tar.bz2  && tar xfv libcgroup-0.37.1.tar
60
-    cd libcgroup-0.37.1
61
-    ./configure
62
-    make install
63
-    ldconfig
64
-fi
65
-
66
-# Create lxc configuration
67
-LXC_CONF=/tmp/$GUEST_NAME.conf
68
-cat > $LXC_CONF <<EOF
69
-lxc.network.type = veth
70
-lxc.network.link = $BRIDGE
71
-lxc.network.flags = up
72
-lxc.network.ipv4 = $GUEST_CIDR
73
-# allow tap/tun devices
74
-lxc.cgroup.devices.allow = c 10:200 rwm
75
-EOF
76
-
77
-# Shutdown any existing container
78
-lxc-stop -n $GUEST_NAME
79
-
80
-# This kills zombie containers
81
-if [ -d /cgroup/$GUEST_NAME ]; then
82
-    cgdelete -r cpu,net_cls:$GUEST_NAME
83
-fi
84
-
85
-# git clone only if directory doesn't exist already.  Since ``DEST`` might not
86
-# be owned by the installation user, we create the directory and change the
87
-# ownership to the proper user.
88
-function git_clone {
89
-    if [ ! -d $2 ]; then
90
-        sudo mkdir $2
91
-        sudo chown `whoami` $2
92
-        git clone $1 $2
93
-        cd $2
94
-        # This checkout syntax works for both branches and tags
95
-        git checkout $3
96
-    fi
97
-}
98
-
99
-# Helper to create the container
100
-function create_lxc {
101
-    if [ "natty" = "$UBUNTU_VERSION" ]; then
102
-        lxc-create -n $GUEST_NAME -t natty -f $LXC_CONF
103
-    else
104
-        lxc-create -n $GUEST_NAME -t ubuntu -f $LXC_CONF
105
-    fi
106
-}
107
-
108
-# Location of the base image directory
109
-if [ "natty" = "$UBUNTU_VERSION" ]; then
110
-    CACHEDIR=/var/cache/lxc/natty/rootfs-amd64
111
-else
112
-    CACHEDIR=/var/cache/lxc/oneiric/rootfs-amd64
113
-fi
114
-
115
-# Provide option to do totally clean install
116
-if [ "$CLEAR_LXC_CACHE" = "1" ]; then
117
-    rm -rf $CACHEDIR
118
-fi
119
-
120
-# Warm the base image on first install
121
-if [ ! -f $CACHEDIR/bootstrapped ]; then
122
-    # by deleting the container, we force lxc-create to re-bootstrap (lxc is
123
-    # lazy and doesn't do anything if a container already exists)
124
-    lxc-destroy -n $GUEST_NAME
125
-    # trigger the initial debootstrap
126
-    create_lxc
127
-    touch $CACHEDIR/bootstrapped
128
-fi
129
-
130
-# Make sure that base requirements are installed
131
-chroot $CACHEDIR apt-get update
132
-chroot $CACHEDIR apt-get install -y --download-only `cat files/apts/* | grep NOPRIME | cut -d\# -f1`
133
-chroot $CACHEDIR apt-get install -y --force-yes `cat files/apts/* | grep -v NOPRIME | cut -d\# -f1` || true
134
-chroot $CACHEDIR pip install `cat files/pips/*`
135
-
136
-# Clean out code repos if directed to do so
137
-if [ "$CLEAN" = "1" ]; then
138
-    rm -rf $CACHEDIR/$DEST
139
-fi
140
-
141
-# Cache openstack code
142
-mkdir -p $CACHEDIR/$DEST
143
-git_clone $NOVA_REPO $CACHEDIR/$DEST/nova $NOVA_BRANCH
144
-git_clone $GLANCE_REPO $CACHEDIR/$DEST/glance $GLANCE_BRANCH
145
-git_clone $KEYSTONE_REPO $CACHEDIR/$DESTkeystone $KEYSTONE_BRANCH
146
-git_clone $NOVNC_REPO $CACHEDIR/$DEST/noVNC $NOVNC_BRANCH
147
-git_clone $HORIZON_REPO $CACHEDIR/$DEST/horizon $HORIZON_BRANCH $HORIZON_TAG
148
-git_clone $NOVACLIENT_REPO $CACHEDIR/$DEST/python-novaclient $NOVACLIENT_BRANCH
149
-git_clone $OPENSTACKX_REPO $CACHEDIR/$DEST/openstackx $OPENSTACKX_BRANCH
150
-git_clone $KEYSTONE_REPO $CACHEDIR/$DEST/keystone $KEYSTONE_BRANCH
151
-git_clone $NOVNC_REPO $CACHEDIR/$DEST/novnc $NOVNC_BRANCH
152
-
153
-# Use this version of devstack?
154
-if [ "$USE_CURRENT_DEVSTACK" = "1" ]; then
155
-    rm -rf $CACHEDIR/$DEST/devstack
156
-    cp -pr $CWD $CACHEDIR/$DEST/devstack
157
-fi
158
-
159
-# pre-cache uec images
160
-for image_url in ${IMAGE_URLS//,/ }; do
161
-    IMAGE_FNAME=`basename "$image_url"`
162
-    if [ ! -f $CACHEDIR/$IMAGE_FNAME ]; then
163
-        wget -c $image_url -O $CACHEDIR/$IMAGE_FNAME
164
-    fi
165
-    cp $CACHEDIR/$IMAGE_FNAME $CACHEDIR/$DEST/devstack/files
166
-done
167
-
168
-# Destroy the old container
169
-lxc-destroy -n $GUEST_NAME
170
-
171
-# If this call is to TERMINATE the container then exit
172
-if [ "$TERMINATE" = "1" ]; then
173
-    exit
174
-fi
175
-
176
-# Create the container
177
-create_lxc
178
-
179
-# Specify where our container rootfs lives
180
-ROOTFS=/var/lib/lxc/$GUEST_NAME/rootfs/
181
-
182
-# Create a stack user that is a member of the libvirtd group so that stack
183
-# is able to interact with libvirt.
184
-chroot $ROOTFS groupadd libvirtd
185
-chroot $ROOTFS useradd stack -s /bin/bash -d $DEST -G libvirtd
186
-
187
-# a simple password - pass
188
-echo stack:pass | chroot $ROOTFS chpasswd
189
-
190
-# and has sudo ability (in the future this should be limited to only what
191
-# stack requires)
192
-echo "stack ALL=(ALL) NOPASSWD: ALL" >> $ROOTFS/etc/sudoers
193
-
194
-# Copy kernel modules
195
-mkdir -p $ROOTFS/lib/modules/`uname -r`/kernel
196
-cp -p /lib/modules/`uname -r`/modules.dep $ROOTFS/lib/modules/`uname -r`/
197
-cp -pR /lib/modules/`uname -r`/kernel/net $ROOTFS/lib/modules/`uname -r`/kernel/
198
-
199
-# Gracefully cp only if source file/dir exists
200
-function cp_it {
201
-    if [ -e $1 ] || [ -d $1 ]; then
202
-        cp -pRL $1 $2
203
-    fi
204
-}
205
-
206
-# Copy over your ssh keys and env if desired
207
-if [ "$COPYENV" = "1" ]; then
208
-    cp_it ~/.ssh $ROOTFS/$DEST/.ssh
209
-    cp_it ~/.ssh/id_rsa.pub $ROOTFS/$DEST/.ssh/authorized_keys
210
-    cp_it ~/.gitconfig $ROOTFS/$DEST/.gitconfig
211
-    cp_it ~/.vimrc $ROOTFS/$DEST/.vimrc
212
-    cp_it ~/.bashrc $ROOTFS/$DEST/.bashrc
213
-fi
214
-
215
-# Make our ip address hostnames look nice at the command prompt
216
-echo "export PS1='${debian_chroot:+($debian_chroot)}\\u@\\H:\\w\\$ '" >> $ROOTFS/$DEST/.bashrc
217
-echo "export PS1='${debian_chroot:+($debian_chroot)}\\u@\\H:\\w\\$ '" >> $ROOTFS/etc/profile
218
-
219
-# Give stack ownership over $DEST so it may do the work needed
220
-chroot $ROOTFS chown -R stack $DEST
221
-
222
-# Configure instance network
223
-INTERFACES=$ROOTFS/etc/network/interfaces
224
-cat > $INTERFACES <<EOF
225
-auto lo
226
-iface lo inet loopback
227
-
228
-auto eth0
229
-iface eth0 inet static
230
-        address $GUEST_IP
231
-        netmask $GUEST_NETMASK
232
-        gateway $GUEST_GATEWAY
233
-EOF
234
-
235
-# Configure the runner
236
-RUN_SH=$ROOTFS/$DEST/run.sh
237
-cat > $RUN_SH <<EOF
238
-#!/usr/bin/env bash
239
-# Make sure dns is set up
240
-echo "nameserver $NAMESERVER" | sudo resolvconf -a eth0
241
-# Make there is a default route - needed for natty
242
-if ! route | grep -q default; then
243
-    sudo ip route add default via $GUEST_GATEWAY
244
-fi
245
-sleep 1
246
-
247
-# Kill any existing screens
248
-killall screen
249
-
250
-# Install and run stack.sh
251
-sudo apt-get update
252
-sudo apt-get -y --force-yes install git-core vim-nox sudo
253
-if [ ! -d "$DEST/devstack" ]; then
254
-    git clone git://github.com/cloudbuilders/devstack.git $DEST/devstack
255
-fi
256
-cd $DEST/devstack && $STACKSH_PARAMS FORCE=yes ./stack.sh > /$DEST/run.sh.log
257
-echo >> /$DEST/run.sh.log
258
-echo >> /$DEST/run.sh.log
259
-echo "All done! Time to start clicking." >> /$DEST/run.sh.log
260
-EOF
261
-
262
-# Make the run.sh executable
263
-chmod 755 $RUN_SH
264
-
265
-# Make runner launch on boot
266
-RC_LOCAL=$ROOTFS/etc/init.d/local
267
-cat > $RC_LOCAL <<EOF
268
-#!/bin/sh -e
269
-su -c "$DEST/run.sh" stack
270
-EOF
271
-chmod +x $RC_LOCAL
272
-chroot $ROOTFS sudo update-rc.d local defaults 80
273
-
274
-# Configure cgroup directory
275
-if ! mount | grep -q cgroup; then
276
-    mkdir -p /cgroup
277
-    mount none -t cgroup /cgroup
278
-fi
279
-
280
-# Start our container
281
-lxc-start -d -n $GUEST_NAME
282
-
283
-if [ "$WAIT_TILL_LAUNCH" = "1" ]; then
284
-    # Done creating the container, let's tail the log
285
-    echo
286
-    echo "============================================================="
287
-    echo "                          -- YAY! --"
288
-    echo "============================================================="
289
-    echo
290
-    echo "We're done creating the container, about to start tailing the"
291
-    echo "stack.sh log. It will take a second or two to start."
292
-    echo
293
-    echo "Just CTRL-C at any time to stop tailing."
294
-
295
-    while [ ! -e "$ROOTFS/$DEST/run.sh.log" ]; do
296
-      sleep 1
297
-    done
298
-
299
-    tail -F $ROOTFS/$DEST/run.sh.log &
300
-
301
-    TAIL_PID=$!
302
-
303
-    function kill_tail() {
304
-        kill $TAIL_PID
305
-        exit 1
306
-    }
307
-
308
-    # Let Ctrl-c kill tail and exit
309
-    trap kill_tail SIGINT
310
-
311
-    echo "Waiting stack.sh to finish..."
312
-    while ! cat $ROOTFS/$DEST/run.sh.log | grep -q 'All done' ; do
313
-        sleep 5
314
-    done
315
-
316
-    kill $TAIL_PID
317
-
318
-    if grep -q "stack.sh failed" $ROOTFS/$DEST/run.sh.log; then
319
-        exit 1
320
-    fi
321
-
322
-    echo ""
323
-    echo "Finished - Zip-a-dee Doo-dah!"
324
-fi
325 1
deleted file mode 100755
... ...
@@ -1,39 +0,0 @@
1
-#!/usr/bin/env bash
2
-# Head node host, which runs glance, api, keystone
3
-HEAD_HOST=${HEAD_HOST:-192.168.1.52}
4
-COMPUTE_HOSTS=${COMPUTE_HOSTS:-192.168.1.53,192.168.1.54}
5
-
6
-# Networking params
7
-NAMESERVER=${NAMESERVER:-192.168.1.1}
8
-GATEWAY=${GATEWAY:-192.168.1.1}
9
-NETMASK=${NETMASK:-255.255.255.0}
10
-FLOATING_RANGE=${FLOATING_RANGE:-192.168.1.196/30}
11
-
12
-# Setting this to 1 shuts down and destroys our containers without relaunching.
13
-TERMINATE=${TERMINATE:-0}
14
-
15
-# Variables common amongst all hosts in the cluster
16
-COMMON_VARS="MYSQL_HOST=$HEAD_HOST RABBIT_HOST=$HEAD_HOST GLANCE_HOSTPORT=$HEAD_HOST:9292 NET_MAN=FlatDHCPManager FLAT_INTERFACE=eth0 FLOATING_RANGE=$FLOATING_RANGE MULTI_HOST=1"
17
-
18
-# Helper to launch containers
19
-function run_lxc {
20
-    # For some reason container names with periods can cause issues :/
21
-    GUEST_NAME=$1 GUEST_IP=$2 GUEST_NETMASK=$NETMASK GUEST_GATEWAY=$GATEWAY NAMESERVER=$NAMESERVER TERMINATE=$TERMINATE STACKSH_PARAMS="$COMMON_VARS $3" ./build_lxc.sh
22
-}
23
-
24
-# Launch the head node - headnode uses a non-ip domain name,
25
-# because rabbit won't launch with an ip addr hostname :(
26
-run_lxc STACKMASTER $HEAD_HOST "ENABLED_SERVICES=g-api,g-reg,key,n-api,n-sch,n-vnc,horizon,mysql,rabbit"
27
-
28
-# Wait till the head node is up
29
-if [ ! "$TERMINATE" = "1" ]; then
30
-    while ! wget -q -O- http://$HEAD_HOST | grep -q username; do
31
-        echo "Waiting for head node ($HEAD_HOST) to start..."
32
-        sleep 5
33
-    done
34
-fi
35
-
36
-# Launch the compute hosts
37
-for compute_host in ${COMPUTE_HOSTS//,/ }; do
38
-    run_lxc $compute_host $compute_host "ENABLED_SERVICES=n-cpu,n-net,n-api"
39
-done
40 1
deleted file mode 100755
... ...
@@ -1,118 +0,0 @@
1
-#!/bin/bash
2
-
3
-PROGDIR=`dirname $0`
4
-CHROOTCACHE=${CHROOTCACHE:-/var/cache/devstack}
5
-
6
-# Source params
7
-source ./stackrc
8
-
9
-# Store cwd
10
-CWD=`pwd`
11
-
12
-NAME=$1
13
-NFSDIR="/nfs/$NAME"
14
-DEST=${DEST:-/opt/stack}
15
-
16
-# Option to use the version of devstack on which we are currently working
17
-USE_CURRENT_DEVSTACK=${USE_CURRENT_DEVSTACK:-1}
18
-
19
-# remove old nfs filesystem if one exists
20
-rm -rf $DEST
21
-
22
-# clean install of natty
23
-if [ ! -d $CHROOTCACHE/natty-base ]; then
24
-    $PROGDIR/make_image.sh -C natty $CHROOTCACHE/natty-base
25
-    # copy kernel modules...
26
-    # NOTE(ja): is there a better way to do this?
27
-    cp -pr /lib/modules/`uname -r` $CHROOTCACHE/natty-base/lib/modules
28
-    # a simple password - pass
29
-    echo root:pass | chroot $CHROOTCACHE/natty-base chpasswd
30
-fi
31
-
32
-# prime natty with as many apt/pips as we can
33
-if [ ! -d $CHROOTCACHE/natty-dev ]; then
34
-    rsync -azH $CHROOTCACHE/natty-base/ $CHROOTCACHE/natty-dev/
35
-    chroot $CHROOTCACHE apt-get install -y --download-only `cat files/apts/* | grep NOPRIME | cut -d\# -f1`
36
-    chroot $CHROOTCACHE apt-get install -y --force-yes `cat files/apts/* | grep -v NOPRIME | cut -d\# -f1`
37
-    chroot $CHROOTCACHE pip install `cat files/pips/*`
38
-
39
-    # Create a stack user that is a member of the libvirtd group so that stack
40
-    # is able to interact with libvirt.
41
-    chroot $CHROOTCACHE/natty-dev groupadd libvirtd
42
-    chroot $CHROOTCACHE/natty-dev useradd stack -s /bin/bash -d $DEST -G libvirtd
43
-    mkdir -p $CHROOTCACHE/natty-dev/$DEST
44
-    chown stack $CHROOTCACHE/natty-dev/$DEST
45
-
46
-    # a simple password - pass
47
-    echo stack:pass | chroot $CHROOTCACHE/natty-dev chpasswd
48
-
49
-    # and has sudo ability (in the future this should be limited to only what
50
-    # stack requires)
51
-    echo "stack ALL=(ALL) NOPASSWD: ALL" >> $CHROOTCACHE/natty-dev/etc/sudoers
52
-fi
53
-
54
-# clone git repositories onto the system
55
-# ======================================
56
-
57
-if [ ! -d $CHROOTCACHE/natty-stack ]; then
58
-    rsync -azH $CHROOTCACHE/natty-dev/ $CHROOTCACHE/natty-stack/
59
-fi
60
-
61
-# git clone only if directory doesn't exist already.  Since ``DEST`` might not
62
-# be owned by the installation user, we create the directory and change the
63
-# ownership to the proper user.
64
-function git_clone {
65
-
66
-    # clone new copy or fetch latest changes
67
-    CHECKOUT=$CHROOTCACHE/natty-stack$2
68
-    if [ ! -d $CHECKOUT ]; then
69
-        mkdir -p $CHECKOUT
70
-        git clone $1 $CHECKOUT
71
-    else
72
-        pushd $CHECKOUT
73
-        git fetch
74
-        popd
75
-    fi
76
-
77
-    # FIXME(ja): checkout specified version (should works for branches and tags)
78
-
79
-    pushd $CHECKOUT
80
-    # checkout the proper branch/tag
81
-    git checkout $3
82
-    # force our local version to be the same as the remote version
83
-    git reset --hard origin/$3
84
-    popd
85
-
86
-    # give ownership to the stack user
87
-    chroot $CHROOTCACHE/natty-stack/ chown -R stack $2
88
-}
89
-
90
-git_clone $NOVA_REPO $DEST/nova $NOVA_BRANCH
91
-git_clone $GLANCE_REPO $DEST/glance $GLANCE_BRANCH
92
-git_clone $KEYSTONE_REPO $DEST/keystone $KEYSTONE_BRANCH
93
-git_clone $NOVNC_REPO $DEST/novnc $NOVNC_BRANCH
94
-git_clone $HORIZON_REPO $DEST/horizon $HORIZON_BRANCH $HORIZON_TAG
95
-git_clone $NOVACLIENT_REPO $DEST/python-novaclient $NOVACLIENT_BRANCH
96
-git_clone $OPENSTACKX_REPO $DEST/openstackx $OPENSTACKX_BRANCH
97
-
98
-chroot $CHROOTCACHE/natty-stack mkdir -p $DEST/files
99
-wget -c http://images.ansolabs.com/tty.tgz -O $CHROOTCACHE/natty-stack$DEST/files/tty.tgz
100
-
101
-# Use this version of devstack?
102
-if [ "$USE_CURRENT_DEVSTACK" = "1" ]; then
103
-    rm -rf $CHROOTCACHE/natty-stack/$DEST/devstack
104
-    cp -pr $CWD $CHROOTCACHE/natty-stack/$DEST/devstack
105
-fi
106
-
107
-cp -pr $CHROOTCACHE/natty-stack $NFSDIR
108
-
109
-# set hostname
110
-echo $NAME > $NFSDIR/etc/hostname
111
-echo "127.0.0.1 localhost $NAME" > $NFSDIR/etc/hosts
112
-
113
-# injecting root's public ssh key if it exists
114
-if [ -f /root/.ssh/id_rsa.pub ]; then
115
-    mkdir $NFSDIR/root/.ssh
116
-    chmod 700 $NFSDIR/root/.ssh
117
-    cp /root/.ssh/id_rsa.pub $NFSDIR/root/.ssh/authorized_keys
118
-fi
... ...
@@ -10,8 +10,7 @@
10 10
 dpkg -l syslinux || apt-get install -y syslinux
11 11
 
12 12
 DEST_DIR=${1:-/tmp}/tftpboot
13
-PXEDIR=${PXEDIR:-/var/cache/devstack/pxe}
14
-OPWD=`pwd`
13
+PXEDIR=${PXEDIR:-/opt/ramstack/pxe}
15 14
 PROGDIR=`dirname $0`
16 15
 
17 16
 # Clean up any resources that may be in use
... ...
@@ -28,7 +27,11 @@ cleanup() {
28 28
     trap 2; kill -2 $$
29 29
 }
30 30
 
31
-trap cleanup SIGHUP SIGINT SIGTERM
31
+trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT
32
+
33
+# Keep track of the current directory
34
+TOOLS_DIR=$(cd $(dirname "$0") && pwd)
35
+TOP_DIR=`cd $TOOLS_DIR/..; pwd`
32 36
 
33 37
 mkdir -p $DEST_DIR/pxelinux.cfg
34 38
 cd $DEST_DIR
... ...
@@ -42,7 +45,7 @@ default menu.c32
42 42
 prompt 0
43 43
 timeout 0
44 44
 
45
-MENU TITLE PXE Boot Menu
45
+MENU TITLE devstack PXE Boot Menu
46 46
 
47 47
 EOF
48 48
 
... ...
@@ -54,7 +57,7 @@ fi
54 54
 
55 55
 # Get image into place
56 56
 if [ ! -r $PXEDIR/stack-initrd.img ]; then
57
-    cd $OPWD
57
+    cd $TOP_DIR
58 58
     $PROGDIR/build_ramdisk.sh $PXEDIR/stack-initrd.img
59 59
 fi
60 60
 if [ ! -r $PXEDIR/stack-initrd.gz ]; then
... ...
@@ -110,3 +113,5 @@ LABEL local
110 110
     MENU LABEL ^Local disk
111 111
     LOCALBOOT 0
112 112
 EOF
113
+
114
+trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT
... ...
@@ -57,7 +57,7 @@ cd $TOP_DIR
57 57
 # Source params
58 58
 source ./stackrc
59 59
 
60
-CACHEDIR=${CACHEDIR:-/var/cache/devstack}
60
+CACHEDIR=${CACHEDIR:-/opt/stack/cache}
61 61
 
62 62
 DEST=${DEST:-/opt/stack}
63 63
 
... ...
@@ -37,27 +37,34 @@ DEPS="kvm libvirt-bin kpartx cloud-utils curl"
37 37
 apt-get install -y --force-yes $DEPS || true # allow this to fail gracefully for concurrent builds
38 38
 
39 39
 # Where to store files and instances
40
-WORK_DIR=${WORK_DIR:-/opt/kvmstack}
40
+WORK_DIR=${WORK_DIR:-/opt/uecstack}
41 41
 
42 42
 # Where to store images
43 43
 image_dir=$WORK_DIR/images/$DIST_NAME
44 44
 mkdir -p $image_dir
45 45
 
46
-# Original version of built image
47
-uec_url=http://uec-images.ubuntu.com/$DIST_NAME/current/$DIST_NAME-server-cloudimg-amd64.tar.gz
48
-tarball=$image_dir/$(basename $uec_url)
46
+# Start over with a clean base image, if desired
47
+if [ $CLEAN_BASE ]; then
48
+    rm -f $image_dir/disk
49
+fi
49 50
 
50
-# download the base uec image if we haven't already
51
-if [ ! -f $tarball ]; then
52
-    curl $uec_url -o $tarball
53
-    (cd $image_dir && tar -Sxvzf $tarball)
54
-    resize-part-image $image_dir/*.img $GUEST_SIZE $image_dir/disk
55
-    cp $image_dir/*-vmlinuz-virtual $image_dir/kernel
51
+# Get the base image if it does not yet exist
52
+if [ ! -e $image_dir/disk ]; then
53
+    $TOOLS_DIR/get_uec_image.sh -r $GUEST_SIZE $DIST_NAME $image_dir/disk $image_dir/kernel
56 54
 fi
57 55
 
56
+# Copy over dev environment if COPY_ENV is set.
57
+# This will also copy over your current devstack.
58
+if [ $COPY_ENV ]; then
59
+    cd $TOOLS_DIR
60
+    ./copy_dev_environment_to_uec.sh $image_dir/disk
61
+fi
58 62
 
59
-# Configure the root password of the vm to be the same as ``ADMIN_PASSWORD``
60
-ROOT_PASSWORD=${ADMIN_PASSWORD:-password}
63
+# Option to warm the base image with software requirements.
64
+if [ $WARM_CACHE ]; then
65
+    cd $TOOLS_DIR
66
+    ./warm_apts_and_pips_for_uec.sh $image_dir/disk
67
+fi
61 68
 
62 69
 # Name of our instance, used by libvirt
63 70
 GUEST_NAME=${GUEST_NAME:-devstack}
... ...
@@ -178,22 +185,23 @@ cat > $vm_dir/uec/user-data<<EOF
178 178
 sed -i "s/127.0.0.1/127.0.0.1 \`hostname\`/" /etc/hosts
179 179
 apt-get update
180 180
 apt-get install git sudo -y
181
-git clone https://github.com/cloudbuilders/devstack.git
182
-cd devstack
183
-git remote set-url origin `cd $TOP_DIR; git remote show origin | grep Fetch | awk '{print $3}'`
184
-git fetch
185
-git checkout `git rev-parse HEAD`
186
-cat > localrc <<LOCAL_EOF
181
+if [ ! -d devstack ]; then
182
+    git clone https://github.com/cloudbuilders/devstack.git
183
+    cd devstack
184
+    git remote set-url origin `cd $TOP_DIR; git remote show origin | grep Fetch | awk '{print $3}'`
185
+    git fetch
186
+    git checkout `git rev-parse HEAD`
187
+    cat > localrc <<LOCAL_EOF
187 188
 ROOTSLEEP=0
188 189
 `cat $TOP_DIR/localrc`
189 190
 LOCAL_EOF
191
+fi
190 192
 # Disable byobu
191
-/usr/bin/byobu-disable
193
+sudo apt-get remove -y byobu
192 194
 EOF
193 195
 
194 196
 # Setup stack user with our key
195
-CONFIGURE_STACK_USER=${CONFIGURE_STACK_USER:-yes}
196
-if [[ -e ~/.ssh/id_rsa.pub  && "$CONFIGURE_STACK_USER" = "yes" ]]; then
197
+if [[ -e ~/.ssh/id_rsa.pub ]]; then
197 198
     PUB_KEY=`cat  ~/.ssh/id_rsa.pub`
198 199
     cat >> $vm_dir/uec/user-data<<EOF
199 200
 mkdir -p /opt/stack
... ...
@@ -242,6 +250,20 @@ if [ "$WAIT_TILL_LAUNCH" = "1" ]; then
242 242
     echo "stack.sh log. It will take a second or two to start."
243 243
     echo
244 244
     echo "Just CTRL-C at any time to stop tailing."
245
+    echo
246
+
247
+    if ! timeout 60 sh -c "while [ ! -s /var/lib/libvirt/dnsmasq/$NET_NAME.leases ]; do sleep 1; done"; then
248
+        echo "Your instance failed to acquire an IP address"
249
+        exit 1
250
+    fi
251
+
252
+    ip=`cat /var/lib/libvirt/dnsmasq/$NET_NAME.leases | cut -d " " -f3`
253
+    echo "#############################################################"
254
+    echo "              -- This is your instance's IP: --"
255
+    echo "                           $ip"
256
+    echo "#############################################################"
257
+
258
+    sleep 2
245 259
 
246 260
     while [ ! -e "$vm_dir/console.log" ]; do
247 261
       sleep 1
... ...
@@ -271,6 +293,8 @@ if [ "$WAIT_TILL_LAUNCH" = "1" ]; then
271 271
     if ! grep -q "^stack.sh completed in" $vm_dir/console.log; then
272 272
         exit 1
273 273
     fi
274
+
275
+    set +o xtrace
274 276
     echo ""
275 277
     echo "Finished - Zip-a-dee Doo-dah!"
276 278
 fi
277 279
new file mode 100755
... ...
@@ -0,0 +1,203 @@
0
+#!/usr/bin/env bash
1
+# build_uec_ramdisk.sh - Build RAM disk images based on UEC image
2
+
3
+# exit on error to stop unexpected errors
4
+set -o errexit
5
+
6
+if [ ! "$#" -eq "1" ]; then
7
+    echo "$0 builds a gziped Ubuntu OpenStack install"
8
+    echo "usage: $0 dest"
9
+    exit 1
10
+fi
11
+
12
+# Make sure that we have the proper version of ubuntu (only works on oneiric)
13
+if ! egrep -q "oneiric" /etc/lsb-release; then
14
+    echo "This script only works with ubuntu oneiric."
15
+    exit 1
16
+fi
17
+
18
+# Clean up resources that may be in use
19
+cleanup() {
20
+    set +o errexit
21
+
22
+    if [ -n "$MNT_DIR" ]; then
23
+        umount $MNT_DIR/dev
24
+        umount $MNT_DIR
25
+    fi
26
+
27
+    if [ -n "$DEST_FILE_TMP" ]; then
28
+        rm $DEST_FILE_TMP
29
+    fi
30
+
31
+    # Kill ourselves to signal parents
32
+    trap 2; kill -2 $$
33
+}
34
+
35
+trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT
36
+
37
+# Output dest image
38
+DEST_FILE=$1
39
+
40
+# Keep track of the current directory
41
+TOOLS_DIR=$(cd $(dirname "$0") && pwd)
42
+TOP_DIR=`cd $TOOLS_DIR/..; pwd`
43
+
44
+cd $TOP_DIR
45
+
46
+# Source params
47
+source ./stackrc
48
+
49
+DEST=${DEST:-/opt/stack}
50
+
51
+# Ubuntu distro to install
52
+DIST_NAME=${DIST_NAME:-oneiric}
53
+
54
+# Configure how large the VM should be
55
+GUEST_SIZE=${GUEST_SIZE:-2G}
56
+
57
+# exit on error to stop unexpected errors
58
+set -o errexit
59
+set -o xtrace
60
+
61
+# Abort if localrc is not set
62
+if [ ! -e $TOP_DIR/localrc ]; then
63
+    echo "You must have a localrc with ALL necessary passwords defined before proceeding."
64
+    echo "See stack.sh for required passwords."
65
+    exit 1
66
+fi
67
+
68
+# Install deps if needed
69
+DEPS="kvm libvirt-bin kpartx cloud-utils curl"
70
+apt-get install -y --force-yes $DEPS
71
+
72
+# Where to store files and instances
73
+CACHEDIR=${CACHEDIR:-/opt/stack/cache}
74
+WORK_DIR=${WORK_DIR:-/opt/ramstack}
75
+
76
+# Where to store images
77
+image_dir=$WORK_DIR/images/$DIST_NAME
78
+mkdir -p $image_dir
79
+
80
+# Get the base image if it does not yet exist
81
+if [ ! -e $image_dir/disk ]; then
82
+    $TOOLS_DIR/get_uec_image.sh -r 2000M $DIST_NAME $image_dir/disk
83
+fi
84
+
85
+# Configure the root password of the vm to be the same as ``ADMIN_PASSWORD``
86
+ROOT_PASSWORD=${ADMIN_PASSWORD:-password}
87
+
88
+# Name of our instance, used by libvirt
89
+GUEST_NAME=${GUEST_NAME:-devstack}
90
+
91
+# Pre-load the image with basic environment
92
+if [ ! -e $image_dir/disk-primed ]; then
93
+    cp $image_dir/disk $image_dir/disk-primed
94
+    $TOOLS_DIR/warm_apts_and_pips_for_uec.sh $image_dir/disk-primed
95
+    $TOOLS_DIR/copy_dev_environment_to_uec.sh $image_dir/disk-primed
96
+fi
97
+
98
+# Back to devstack
99
+cd $TOP_DIR
100
+
101
+DEST_FILE_TMP=`mktemp $DEST_FILE.XXXXXX`
102
+MNT_DIR=`mktemp -d --tmpdir mntXXXXXXXX`
103
+cp $image_dir/disk-primed $DEST_FILE_TMP
104
+mount -t ext4 -o loop $DEST_FILE_TMP $MNT_DIR
105
+mount -o bind /dev /$MNT_DIR/dev
106
+cp -p /etc/resolv.conf $MNT_DIR/etc/resolv.conf
107
+echo root:$ROOT_PASSWORD | chroot $MNT_DIR chpasswd
108
+touch $MNT_DIR/$DEST/.ramdisk
109
+
110
+# We need to install a non-virtual kernel and modules to boot from
111
+if [ ! -r "`ls $MNT_DIR/boot/vmlinuz-*-generic | head -1`" ]; then
112
+    chroot $MNT_DIR apt-get install -y linux-generic
113
+fi
114
+
115
+# git clone only if directory doesn't exist already.  Since ``DEST`` might not
116
+# be owned by the installation user, we create the directory and change the
117
+# ownership to the proper user.
118
+function git_clone {
119
+
120
+    # clone new copy or fetch latest changes
121
+    CHECKOUT=${MNT_DIR}$2
122
+    if [ ! -d $CHECKOUT ]; then
123
+        mkdir -p $CHECKOUT
124
+        git clone $1 $CHECKOUT
125
+    else
126
+        pushd $CHECKOUT
127
+        git fetch
128
+        popd
129
+    fi
130
+
131
+    # FIXME(ja): checkout specified version (should works for branches and tags)
132
+
133
+    pushd $CHECKOUT
134
+    # checkout the proper branch/tag
135
+    git checkout $3
136
+    # force our local version to be the same as the remote version
137
+    git reset --hard origin/$3
138
+    popd
139
+
140
+    # give ownership to the stack user
141
+    chroot $MNT_DIR chown -R stack $2
142
+}
143
+
144
+git_clone $NOVA_REPO $DEST/nova $NOVA_BRANCH
145
+git_clone $GLANCE_REPO $DEST/glance $GLANCE_BRANCH
146
+git_clone $KEYSTONE_REPO $DEST/keystone $KEYSTONE_BRANCH
147
+git_clone $NOVNC_REPO $DEST/novnc $NOVNC_BRANCH
148
+git_clone $HORIZON_REPO $DEST/horizon $HORIZON_BRANCH
149
+git_clone $NOVACLIENT_REPO $DEST/python-novaclient $NOVACLIENT_BRANCH
150
+git_clone $OPENSTACKX_REPO $DEST/openstackx $OPENSTACKX_BRANCH
151
+git_clone $CITEST_REPO $DEST/openstack-integration-tests $CITEST_BRANCH
152
+
153
+# Use this version of devstack
154
+rm -rf $MNT_DIR/$DEST/devstack
155
+cp -pr $TOP_DIR $MNT_DIR/$DEST/devstack
156
+chroot $MNT_DIR chown -R stack $DEST/devstack
157
+
158
+# Configure host network for DHCP
159
+mkdir -p $MNT_DIR/etc/network
160
+cat > $MNT_DIR/etc/network/interfaces <<EOF
161
+auto lo
162
+iface lo inet loopback
163
+
164
+auto eth0
165
+iface eth0 inet dhcp
166
+EOF
167
+
168
+# Set hostname
169
+echo "ramstack" >$MNT_DIR/etc/hostname
170
+echo "127.0.0.1		localhost	ramstack" >$MNT_DIR/etc/hosts
171
+
172
+# Configure the runner
173
+RUN_SH=$MNT_DIR/$DEST/run.sh
174
+cat > $RUN_SH <<EOF
175
+#!/usr/bin/env bash
176
+
177
+# Get IP range
178
+set \`ip addr show dev eth0 | grep inet\`
179
+PREFIX=\`echo \$2 | cut -d. -f1,2,3\`
180
+export FLOATING_RANGE="\$PREFIX.224/27"
181
+
182
+# Kill any existing screens
183
+killall screen
184
+
185
+# Run stack.sh
186
+cd $DEST/devstack && \$STACKSH_PARAMS ./stack.sh > $DEST/run.sh.log
187
+echo >> $DEST/run.sh.log
188
+echo >> $DEST/run.sh.log
189
+echo "All done! Time to start clicking." >> $DEST/run.sh.log
190
+EOF
191
+
192
+# Make the run.sh executable
193
+chmod 755 $RUN_SH
194
+chroot $MNT_DIR chown stack $DEST/run.sh
195
+
196
+umount $MNT_DIR/dev
197
+umount $MNT_DIR
198
+rmdir $MNT_DIR
199
+mv $DEST_FILE_TMP $DEST_FILE
200
+rm -f $DEST_FILE_TMP
201
+
202
+trap - SIGHUP SIGINT SIGTERM SIGQUIT EXIT
... ...
@@ -7,8 +7,7 @@
7 7
 # Needs to run as root
8 8
 
9 9
 DEST_DIR=${1:-/tmp/syslinux-boot}
10
-PXEDIR=${PXEDIR:-/var/cache/devstack/pxe}
11
-OPWD=`pwd`
10
+PXEDIR=${PXEDIR:-/opt/ramstack/pxe}
12 11
 PROGDIR=`dirname $0`
13 12
 
14 13
 # Clean up any resources that may be in use
... ...
@@ -29,7 +28,11 @@ cleanup() {
29 29
     trap 2; kill -2 $$
30 30
 }
31 31
 
32
-trap cleanup SIGHUP SIGINT SIGTERM
32
+trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT
33
+
34
+# Keep track of the current directory
35
+TOOLS_DIR=$(cd $(dirname "$0") && pwd)
36
+TOP_DIR=`cd $TOOLS_DIR/..; pwd`
33 37
 
34 38
 if [ -b $DEST_DIR ]; then
35 39
     # We have a block device, install syslinux and mount it
... ...
@@ -62,7 +65,7 @@ default /syslinux/menu.c32
62 62
 prompt 0
63 63
 timeout 0
64 64
 
65
-MENU TITLE Boot Menu
65
+MENU TITLE devstack Boot Menu
66 66
 
67 67
 EOF
68 68
 
... ...
@@ -74,8 +77,8 @@ fi
74 74
 
75 75
 # Get image into place
76 76
 if [ ! -r $PXEDIR/stack-initrd.img ]; then
77
-    cd $OPWD
78
-    $PROGDIR/build_ramdisk.sh $PXEDIR/stack-initrd.img
77
+    cd $TOP_DIR
78
+    $PROGDIR/build_uec_ramdisk.sh $PXEDIR/stack-initrd.img
79 79
 fi
80 80
 if [ ! -r $PXEDIR/stack-initrd.gz ]; then
81 81
     gzip -1 -c $PXEDIR/stack-initrd.img >$PXEDIR/stack-initrd.gz
... ...
@@ -139,3 +142,5 @@ if [ -n "$DEST_DEV" ]; then
139 139
     umount $DEST_DIR
140 140
     rmdir $DEST_DIR
141 141
 fi
142
+
143
+trap - SIGHUP SIGINT SIGTERM SIGQUIT EXIT
142 144
new file mode 100755
... ...
@@ -0,0 +1,72 @@
0
+#!/usr/bin/env bash
1
+
2
+# Echo commands
3
+set -o xtrace
4
+
5
+# Exit on error to stop unexpected errors
6
+set -o errexit
7
+
8
+# Keep track of the current directory
9
+TOOLS_DIR=$(cd $(dirname "$0") && pwd)
10
+TOP_DIR=`cd $TOOLS_DIR/..; pwd`
11
+
12
+# Change dir to top of devstack
13
+cd $TOP_DIR
14
+
15
+# Echo usage
16
+usage() {
17
+    echo "Add stack user and keys"
18
+    echo ""
19
+    echo "Usage: $0 [full path to raw uec base image]"
20
+}
21
+
22
+# Make sure this is a raw image
23
+if ! qemu-img info $1 | grep -q "file format: raw"; then
24
+    usage
25
+    exit 1
26
+fi
27
+
28
+# Mount the image
29
+DEST=/opt/stack
30
+STAGING_DIR=/tmp/`echo $1 | sed  "s/\//_/g"`.stage.user
31
+mkdir -p $STAGING_DIR
32
+umount $STAGING_DIR || true
33
+sleep 1
34
+mount -t ext4 -o loop $1 $STAGING_DIR
35
+mkdir -p $STAGING_DIR/$DEST
36
+
37
+# Create a stack user that is a member of the libvirtd group so that stack
38
+# is able to interact with libvirt.
39
+chroot $STAGING_DIR groupadd libvirtd || true
40
+chroot $STAGING_DIR useradd stack -s /bin/bash -d $DEST -G libvirtd || true
41
+
42
+# Add a simple password - pass
43
+echo stack:pass | chroot $STAGING_DIR chpasswd
44
+
45
+# Configure sudo
46
+( umask 226 && echo "stack ALL=(ALL) NOPASSWD:ALL" \
47
+    > $STAGING_DIR/etc/sudoers.d/50_stack_sh )
48
+
49
+# Gracefully cp only if source file/dir exists
50
+function cp_it {
51
+    if [ -e $1 ] || [ -d $1 ]; then
52
+        cp -pRL $1 $2
53
+    fi
54
+}
55
+
56
+# Copy over your ssh keys and env if desired
57
+cp_it ~/.ssh $STAGING_DIR/$DEST/.ssh
58
+cp_it ~/.ssh/id_rsa.pub $STAGING_DIR/$DEST/.ssh/authorized_keys
59
+cp_it ~/.gitconfig $STAGING_DIR/$DEST/.gitconfig
60
+cp_it ~/.vimrc $STAGING_DIR/$DEST/.vimrc
61
+cp_it ~/.bashrc $STAGING_DIR/$DEST/.bashrc
62
+
63
+# Copy devstack
64
+rm -rf $STAGING_DIR/$DEST/devstack
65
+cp_it . $STAGING_DIR/$DEST/devstack
66
+
67
+# Give stack ownership over $DEST so it may do the work needed
68
+chroot $STAGING_DIR chown -R stack $DEST
69
+
70
+# Unmount
71
+umount $STAGING_DIR
... ...
@@ -1,14 +1,8 @@
1 1
 #!/bin/bash
2
-# get_uec_image.sh - Prepare Ubuntu images in various formats
3
-#
4
-# Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc), raw
5
-#
6
-# Required to run as root
7
-
8
-CACHEDIR=${CACHEDIR:-/var/cache/devstack}
9
-FORMAT=${FORMAT:-qcow2}
2
+# get_uec_image.sh - Prepare Ubuntu UEC images
3
+
4
+CACHEDIR=${CACHEDIR:-/opt/stack/cache}
10 5
 ROOTSIZE=${ROOTSIZE:-2000}
11
-MIN_PKGS=${MIN_PKGS:-"apt-utils gpgv openssh-server"}
12 6
 
13 7
 # Keep track of the current directory
14 8
 TOOLS_DIR=$(cd $(dirname "$0") && pwd)
... ...
@@ -18,14 +12,14 @@ TOP_DIR=`cd $TOOLS_DIR/..; pwd`
18 18
 set -o errexit
19 19
 
20 20
 usage() {
21
-    echo "Usage: $0 - Prepare Ubuntu images"
21
+    echo "Usage: $0 - Fetch and prepare Ubuntu images"
22 22
     echo ""
23
-    echo "$0 [-f format] [-r rootsize] release imagefile"
23
+    echo "$0 [-r rootsize] release imagefile [kernel]"
24 24
     echo ""
25
-    echo "-f format - image format: qcow2 (default), vmdk, vdi, vhd, xen, raw, fs"
26
-    echo "-r size   - root fs size in MB (min 2000MB)"
25
+    echo "-r size   - root fs size (min 2000MB)"
27 26
     echo "release   - Ubuntu release: jaunty - oneric"
28 27
     echo "imagefile - output image file"
28
+    echo "kernel    - output kernel"
29 29
     exit 1
30 30
 }
31 31
 
... ...
@@ -38,42 +32,21 @@ cleanup() {
38 38
         rm -f $IMG_FILE_TMP
39 39
     fi
40 40
 
41
-    # Release NBD devices
42
-    if [ -n "$NBD" ]; then
43
-        qemu-nbd -d $NBD
44
-    fi
45
-
46 41
     # Kill ourselves to signal any calling process
47 42
     trap 2; kill -2 $$
48 43
 }
49 44
 
50
-# apt-get wrapper to just get arguments set correctly
51
-function apt_get() {
52
-    local sudo="sudo"
53
-    [ "$(id -u)" = "0" ] && sudo="env"
54
-    $sudo DEBIAN_FRONTEND=noninteractive apt-get \
55
-        --option "Dpkg::Options::=--force-confold" --assume-yes "$@"
56
-}
57
-
58
-while getopts f:hmr: c; do
45
+while getopts hr: c; do
59 46
     case $c in
60
-        f)  FORMAT=$OPTARG
61
-            ;;
62 47
         h)  usage
63 48
             ;;
64
-        m)  MINIMAL=1
65
-            ;;
66 49
         r)  ROOTSIZE=$OPTARG
67
-            if [[ $ROOTSIZE < 2000 ]]; then
68
-                echo "root size must be greater than 2000MB"
69
-                exit 1
70
-            fi
71 50
             ;;
72 51
     esac
73 52
 done
74 53
 shift `expr $OPTIND - 1`
75 54
 
76
-if [ ! "$#" -eq "2" ]; then
55
+if [[ ! "$#" -eq "2" && ! "$#" -eq "3" ]]; then
77 56
     usage
78 57
 fi
79 58
 
... ...
@@ -81,134 +54,49 @@ fi
81 81
 DIST_NAME=$1
82 82
 IMG_FILE=$2
83 83
 IMG_FILE_TMP=`mktemp $IMG_FILE.XXXXXX`
84
-
85
-case $FORMAT in
86
-    kvm|qcow2)  FORMAT=qcow2
87
-                QFORMAT=qcow2
88
-                ;;
89
-    vmserver|vmdk)
90
-                FORMAT=vmdk
91
-                QFORMAT=vmdk
92
-                ;;
93
-    vbox|vdi)   FORMAT=vdi
94
-                QFORMAT=vdi
95
-                ;;
96
-    vhd|vpc)    FORMAT=vhd
97
-                QFORMAT=vpc
98
-                ;;
99
-    xen)        FORMAT=raw
100
-                QFORMAT=raw
101
-                ;;
102
-    raw)        FORMAT=raw
103
-                QFORMAT=raw
104
-                ;;
105
-    *)          echo "Unknown format: $FORMAT"
106
-                usage
107
-esac
84
+KERNEL=$3
108 85
 
109 86
 case $DIST_NAME in
110 87
     oneiric)    ;;
111 88
     natty)      ;;
112 89
     maverick)   ;;
113 90
     lucid)      ;;
114
-    karmic)     ;;
115
-    jaunty)     ;;
116 91
     *)          echo "Unknown release: $DIST_NAME"
117 92
                 usage
118 93
                 ;;
119 94
 esac
120 95
 
121
-trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT
96
+trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT
122 97
 
123
-# Check for dependencies
124
-
125
-if [ ! -x "`which qemu-img`" -o ! -x "`which qemu-nbd`" ]; then
98
+# Check dependencies
99
+if [ ! -x "`which qemu-img`" -o -z "`dpkg -l | grep cloud-utils`" ]; then
126 100
     # Missing KVM?
127
-    apt_get install qemu-kvm
101
+    apt_get install qemu-kvm cloud-utils
128 102
 fi
129 103
 
130
-# Prepare the base image
104
+# Find resize script
105
+RESIZE=`which resize-part-image || which uec-resize-image`
106
+if [ -z "$RESIZE" ]; then
107
+    echo "resize tool from cloud-utils not found"
108
+    exit 1
109
+fi
131 110
 
132 111
 # Get the UEC image
133 112
 UEC_NAME=$DIST_NAME-server-cloudimg-amd64
134
-if [ ! -e $CACHEDIR/$UEC_NAME-disk1.img ]; then
135
-    mkdir -p $CACHEDIR
136
-    (cd $CACHEDIR && wget -N http://uec-images.ubuntu.com/$DIST_NAME/current/$UEC_NAME-disk1.img)
113
+if [ ! -d $CACHEDIR ]; then
114
+    mkdir -p $CACHEDIR/$DIST_NAME
137 115
 fi
138
-
139
-if [ "$FORMAT" = "qcow2" ]; then
140
-    # Just copy image
141
-    cp -p $CACHEDIR/$UEC_NAME-disk1.img $IMG_FILE_TMP
142
-else
143
-    # Convert image
144
-    qemu-img convert -O $QFORMAT $CACHEDIR/$UEC_NAME-disk1.img $IMG_FILE_TMP
116
+if [ ! -e $CACHEDIR/$DIST_NAME/$UEC_NAME.tar.gz ]; then
117
+    (cd $CACHEDIR/$DIST_NAME && wget -N http://uec-images.ubuntu.com/$DIST_NAME/current/$UEC_NAME.tar.gz)
118
+    (cd $CACHEDIR/$DIST_NAME && tar Sxvzf $UEC_NAME.tar.gz)
145 119
 fi
146 120
 
147
-# Resize the image if necessary
148
-if [ $ROOTSIZE -gt 2000 ]; then
149
-    # Resize the container
150
-    qemu-img resize $IMG_FILE_TMP +$((ROOTSIZE - 2000))M
151
-fi
152
-
153
-# Finds the next available NBD device
154
-# Exits script if error connecting or none free
155
-# map_nbd image
156
-# returns full nbd device path
157
-function map_nbd {
158
-    for i in `seq 0 15`; do
159
-        if [ ! -e /sys/block/nbd$i/pid ]; then
160
-            NBD=/dev/nbd$i
161
-            # Connect to nbd and wait till it is ready
162
-            qemu-nbd -c $NBD $1
163
-            if ! timeout 60 sh -c "while ! [ -e ${NBD}p1 ]; do sleep 1; done"; then
164
-                echo "Couldn't connect $NBD"
165
-                exit 1
166
-            fi
167
-            break
168
-        fi
169
-    done
170
-    if [ -z "$NBD" ]; then
171
-        echo "No free NBD slots"
172
-        exit 1
173
-    fi
174
-    echo $NBD
175
-}
121
+$RESIZE $CACHEDIR/$DIST_NAME/$UEC_NAME.img ${ROOTSIZE} $IMG_FILE_TMP
122
+mv $IMG_FILE_TMP $IMG_FILE
176 123
 
177
-# Set up nbd
178
-modprobe nbd max_part=63
179
-NBD=`map_nbd $IMG_FILE_TMP`
180
-
181
-# Resize partition 1 to full size of the disk image
182
-echo "d
183
-n
184
-p
185
-1
186
-2
187
-
188
-t
189
-83
190
-a
191
-1
192
-w
193
-" | fdisk $NBD
194
-e2fsck -f -p ${NBD}p1
195
-resize2fs ${NBD}p1
196
-
197
-# Do some preliminary installs
198
-MNTDIR=`mktemp -d mntXXXXXXXX`
199
-mount -t ext4 ${NBD}p1 $MNTDIR
200
-
201
-# Install our required packages
202
-cp -p files/sources.list $MNTDIR/etc/apt/sources.list
203
-sed -e "s,%DIST%,$DIST_NAME,g" -i $MNTDIR/etc/apt/sources.list
204
-cp -p /etc/resolv.conf $MNTDIR/etc/resolv.conf
205
-chroot $MNTDIR apt-get update
206
-chroot $MNTDIR apt-get install -y $MIN_PKGS
207
-rm -f $MNTDIR/etc/resolv.conf
208
-
209
-umount $MNTDIR
210
-rmdir $MNTDIR
211
-qemu-nbd -d $NBD
212
-NBD=""
124
+# Copy kernel to destination
125
+if [ -n "$KERNEL" ]; then
126
+    cp -p $CACHEDIR/$DIST_NAME/*-vmlinuz-virtual $KERNEL
127
+fi
213 128
 
214
-mv $IMG_FILE_TMP $IMG_FILE
129
+trap - SIGHUP SIGINT SIGTERM SIGQUIT EXIT
215 130
old mode 100644
216 131
new mode 100755
... ...
@@ -1,5 +1,9 @@
1 1
 #!/bin/bash
2 2
 
3
+# exit on error to stop unexpected errors
4
+set -o errexit
5
+set -o xtrace
6
+
3 7
 EXECUTOR_NUMBER=$1
4 8
 CONFIGURATION=$2
5 9
 ADAPTER=$3
... ...
@@ -25,7 +29,7 @@ cd ../../..
25 25
 TOP_DIR=$(pwd)
26 26
 
27 27
 # Deps
28
-apt-get install -y --force-yes libvirt-bin
28
+apt-get install -y --force-yes libvirt-bin || true
29 29
 
30 30
 # Name test instance based on executor
31 31
 BASE_NAME=executor-`printf "%02d" $EXECUTOR_NUMBER`
32 32
deleted file mode 100755
... ...
@@ -1,93 +0,0 @@
1
-#!/bin/bash
2
-
3
-# Print some usage info
4
-function usage {
5
-  echo "Usage: $0 [OPTION] [host_ip]"
6
-  echo "Set up temporary networking for LXC"
7
-  echo ""
8
-  echo "  -n, --dry-run            Just print the commands that would execute."
9
-  echo "  -h, --help               Print this usage message."
10
-  echo ""
11
-  exit
12
-}
13
-
14
-# Allow passing the ip address on the command line.
15
-function process_option {
16
-  case "$1" in
17
-    -h|--help) usage;;
18
-    -n|--dry-run) dry_run=1;;
19
-    *) host_ip="$1"
20
-  esac
21
-}
22
-
23
-# Set up some defaults
24
-host_ip=
25
-dry_run=0
26
-bridge=br0
27
-DRIER=
28
-
29
-# Process the args
30
-for arg in "$@"; do
31
-  process_option $arg
32
-done
33
-
34
-if [ $dry_run ]; then
35
-  DRIER=echo
36
-fi
37
-
38
-if [ "$UID" -ne "0" ]; then
39
-  echo "This script must be run with root privileges."
40
-  exit 1
41
-fi
42
-
43
-# Check for bridge-utils.
44
-BRCTL=`which brctl`
45
-if [ ! -x "$BRCTL" ]; then
46
-  echo "This script requires you to install bridge-utils."
47
-  echo "Try: sudo apt-get install bridge-utils."
48
-  exit 1
49
-fi
50
-
51
-# Scare off the nubs.
52
-echo "====================================================="
53
-echo
54
-echo "WARNING"
55
-echo
56
-echo "This script will modify your current network setup,"
57
-echo "this can be a scary thing and it is recommended that"
58
-echo "you have something equivalent to physical access to"
59
-echo "this machine before continuing in case your network"
60
-echo "gets all funky."
61
-echo
62
-echo "If you don't want to continue, hit CTRL-C now."
63
-
64
-if [ -z "$host_ip" ];
65
-then
66
-  echo "Otherwise, please type in your host's ip address and"
67
-  echo "hit enter."
68
-  echo
69
-  echo "====================================================="
70
-  read host_ip
71
-else
72
-  echo "Otherwise hit enter."
73
-  echo
74
-  echo "====================================================="
75
-  read accept
76
-fi
77
-
78
-
79
-# Add a bridge interface, this will choke if there is already
80
-# a bridge named $bridge
81
-$DRIER $BRCTL addbr $bridge
82
-$DRIER ip addr add 192.168.1.1/24 dev $bridge
83
-if [ $dry_run ]; then
84
-  echo "echo 1 > /proc/sys/net/ipv4/ip_forward"
85
-else
86
-  echo 1 > /proc/sys/net/ipv4/ip_forward
87
-fi
88
-$DRIER ifconfig $bridge up
89
-
90
-# Set up the NAT for the instances
91
-$DRIER iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source $host_ip
92
-$DRIER iptables -I FORWARD -s 192.168.1.0/24 -j ACCEPT
93
-
94 1
deleted file mode 100755
... ...
@@ -1,187 +0,0 @@
1
-#!/bin/bash
2
-# make_image.sh - Create Ubuntu images in various formats
3
-#
4
-# Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc), raw
5
-#
6
-# Requires sudo to root
7
-
8
-ROOTSIZE=${ROOTSIZE:-8192}
9
-SWAPSIZE=${SWAPSIZE:-1024}
10
-MIN_PKGS=${MIN_PKGS:-"apt-utils gpgv openssh-server"}
11
-
12
-usage() {
13
-    echo "Usage: $0 - Create Ubuntu images"
14
-    echo ""
15
-    echo "$0 [-m] [-r rootsize] [-s swapsize] release format"
16
-    echo "$0 -C [-m] release chrootdir"
17
-    echo "$0 -I [-r rootsize] [-s swapsize] chrootdir format"
18
-    echo ""
19
-    echo "-C        - Create the initial chroot dir"
20
-    echo "-I        - Create the final image from a chroot"
21
-    echo "-m        - minimal installation"
22
-    echo "-r size   - root fs size in MB"
23
-    echo "-s size   - swap fs size in MB"
24
-    echo "release   - Ubuntu release: jaunty - oneric"
25
-    echo "format    - image format: qcow2, vmdk, vdi, vhd, xen, raw, fs"
26
-    exit 1
27
-}
28
-
29
-while getopts CIhmr:s: c; do
30
-    case $c in
31
-        C)  CHROOTONLY=1
32
-            ;;
33
-        I)  IMAGEONLY=1
34
-            ;;
35
-        h)  usage
36
-            ;;
37
-        m)  MINIMAL=1
38
-            ;;
39
-        r)  ROOTSIZE=$OPTARG
40
-            ;;
41
-        s)  SWAPSIZE=$OPTARG
42
-            ;;
43
-    esac
44
-done
45
-shift `expr $OPTIND - 1`
46
-
47
-if [ ! "$#" -eq "2" -o -n "$CHROOTONLY" -a -n "$IMAGEONLY" ]; then
48
-    usage
49
-fi
50
-
51
-# Default args
52
-RELEASE=$1
53
-FORMAT=$2
54
-CHROOTDIR=""
55
-
56
-if [ -n "$CHROOTONLY" ]; then
57
-    RELEASE=$1
58
-    CHROOTDIR=$2
59
-    FORMAT="pass"
60
-fi
61
-
62
-if [ -n "$IMAGEONLY" ]; then
63
-    CHROOTDIR=$1
64
-    FORMAT=$2
65
-    RELEASE="pass"
66
-fi
67
-
68
-# Make sure that we have the proper version of ubuntu
69
-UBUNTU_VERSION=`cat /etc/lsb-release | grep CODENAME | sed 's/.*=//g'`
70
-if [ "$UBUNTU_VERSION" = "natty" -a "$RELEASE" = "oneiric" ]; then
71
-    echo "natty installs can't build oneiric images"
72
-    exit 1
73
-fi
74
-
75
-case $FORMAT in
76
-    kvm|qcow2)  FORMAT=qcow2
77
-                QFORMAT=qcow2
78
-                HYPER=kvm
79
-                ;;
80
-    vmserver|vmdk)
81
-                FORMAT=vmdk
82
-                QFORMAT=vmdk
83
-                HYPER=vmserver
84
-                ;;
85
-    vbox|vdi)   FORMAT=vdi
86
-                QFORMAT=vdi
87
-                HYPER=kvm
88
-                ;;
89
-    vhd|vpc)    FORMAT=vhd
90
-                QFORMAT=vpc
91
-                HYPER=kvm
92
-                ;;
93
-    xen)        FORMAT=raw
94
-                QFORMAT=raw
95
-                HYPER=xen
96
-                ;;
97
-    raw)        FORMAT=raw
98
-                QFORMAT=raw
99
-                HYPER=kvm
100
-                ;;
101
-    pass)       ;;
102
-    *)          echo "Unknown format: $FORMAT"
103
-                usage
104
-esac
105
-
106
-case $RELEASE in
107
-    oneiric)    ;;
108
-    natty)      ;;
109
-    maverick)   ;;
110
-    lucid)      ;;
111
-    karmic)     ;;
112
-    jaunty)     ;;
113
-    pass)       ;;
114
-    *)          echo "Unknown release: $RELEASE"
115
-                usage
116
-                ;;
117
-esac
118
-
119
-# Install stuff if necessary
120
-if [ -z `which vmbuilder` ]; then
121
-    sudo apt-get install -y ubuntu-vm-builder
122
-fi
123
-
124
-if [ -n "$CHROOTONLY" ]; then
125
-    # Build a chroot directory
126
-    HYPER=kvm
127
-    if [ "$MINIMAL" = 1 ]; then
128
-        ARGS="--variant=minbase"
129
-        for i in $MIN_PKGS; do
130
-            ARGS="$ARGS --addpkg=$i"
131
-        done
132
-    fi
133
-    sudo vmbuilder $HYPER ubuntu $ARGS \
134
-      --suite $RELEASE \
135
-      --only-chroot \
136
-      --chroot-dir=$CHROOTDIR \
137
-      --overwrite \
138
-      --addpkg=$MIN_PKGS \
139
-
140
-    sudo cp -p files/sources.list $CHROOTDIR/etc/apt/sources.list
141
-    sed -e "s,%DIST%,$RELEASE,g" -i $CHROOTDIR/etc/apt/sources.list
142
-    sudo chroot $CHROOTDIR apt-get update
143
-
144
-    exit 0
145
-fi
146
-
147
-# Build the image
148
-TMPDIR=tmp
149
-TMPDISK=`mktemp imgXXXXXXXX`
150
-SIZE=$[$ROOTSIZE+$SWAPSIZE+1]
151
-dd if=/dev/null of=$TMPDISK bs=1M seek=$SIZE count=1
152
-
153
-if [ -n "$IMAGEONLY" ]; then
154
-    # Build image from chroot
155
-    sudo vmbuilder $HYPER ubuntu $ARGS \
156
-      --existing-chroot=$CHROOTDIR \
157
-      --overwrite \
158
-      --rootsize=$ROOTSIZE \
159
-      --swapsize=$SWAPSIZE \
160
-      --tmpfs - \
161
-      --raw=$TMPDISK \
162
-
163
-else
164
-    # Do the whole shebang in one pass
165
-        ARGS="--variant=minbase"
166
-        for i in $MIN_PKGS; do
167
-            ARGS="$ARGS --addpkg=$i"
168
-        done
169
-    sudo vmbuilder $HYPER ubuntu $ARGS \
170
-      --suite $RELEASE \
171
-      --overwrite \
172
-      --rootsize=$ROOTSIZE \
173
-      --swapsize=$SWAPSIZE \
174
-      --tmpfs - \
175
-      --raw=$TMPDISK \
176
-
177
-fi
178
-
179
-if [ "$FORMAT" = "raw" ]; then
180
-    # Get image
181
-    mv $TMPDISK $RELEASE.$FORMAT
182
-else
183
-    # Convert image
184
-    qemu-img convert -O $QFORMAT $TMPDISK $RELEASE.$FORMAT
185
-    rm $TMPDISK
186
-fi
187
-rm -rf ubuntu-$HYPER
188 1
deleted file mode 100755
... ...
@@ -1,70 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-# Echo commands
4
-set -o xtrace
5
-
6
-# Exit on error to stop unexpected errors
7
-set -o errexit
8
-
9
-# Keep track of the current directory
10
-TOOLS_DIR=$(cd $(dirname "$0") && pwd)
11
-TOP_DIR=`cd $TOOLS_DIR/..; pwd`
12
-
13
-# Change dir to top of devstack
14
-cd $TOP_DIR
15
-
16
-# Echo usage
17
-usage() {
18
-    echo "Add stack user and keys"
19
-    echo ""
20
-    echo "Usage: $0 [full path to raw uec base image]"
21
-}
22
-
23
-# Make sure this is a raw image
24
-if ! qemu-img info $1 | grep -q "file format: raw"; then
25
-    usage
26
-    exit 1
27
-fi
28
-
29
-# Mount the image
30
-DEST=/opt/stack
31
-STAGING_DIR=/tmp/`echo $1 | sed  "s/\//_/g"`.stage.user
32
-mkdir -p $STAGING_DIR
33
-umount $STAGING_DIR || true
34
-sleep 1
35
-mount -t ext4 -o loop $1 $STAGING_DIR
36
-mkdir -p $STAGING_DIR/$DEST
37
-
38
-# Create a stack user that is a member of the libvirtd group so that stack
39
-# is able to interact with libvirt.
40
-chroot $STAGING_DIR groupadd libvirtd || true
41
-chroot $STAGING_DIR useradd stack -s /bin/bash -d $DEST -G libvirtd || true
42
-
43
-# Add a simple password - pass
44
-echo stack:pass | chroot $STAGING_DIR chpasswd
45
-
46
-# Configure sudo
47
-grep -q "^#includedir.*/etc/sudoers.d" $STAGING_DIR/etc/sudoers ||
48
-    echo "#includedir /etc/sudoers.d" | sudo tee -a $STAGING_DIR/etc/sudoers
49
-cp $TOP_DIR/files/sudo/* $STAGING_DIR/etc/sudoers.d/
50
-sed -e "s,%USER%,$USER,g" -i $STAGING_DIR/etc/sudoers.d/*
51
-
52
-# Gracefully cp only if source file/dir exists
53
-function cp_it {
54
-    if [ -e $1 ] || [ -d $1 ]; then
55
-        cp -pRL $1 $2
56
-    fi
57
-}
58
-
59
-# Copy over your ssh keys and env if desired
60
-cp_it ~/.ssh $STAGING_DIR/$DEST/.ssh
61
-cp_it ~/.ssh/id_rsa.pub $STAGING_DIR/$DEST/.ssh/authorized_keys
62
-cp_it ~/.gitconfig $STAGING_DIR/$DEST/.gitconfig
63
-cp_it ~/.vimrc $STAGING_DIR/$DEST/.vimrc
64
-cp_it ~/.bashrc $STAGING_DIR/$DEST/.bashrc
65
-
66
-# Give stack ownership over $DEST so it may do the work needed
67
-chroot $STAGING_DIR chown -R stack $DEST
68
-
69
-# Unmount
70
-umount $STAGING_DIR
71 1
deleted file mode 100755
... ...
@@ -1,90 +0,0 @@
1
-#!/bin/bash
2
-# upload_image.sh - Upload Ubuntu images (create if necessary) in various formats
3
-# Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc)
4
-# Requires sudo to root
5
-
6
-usage() {
7
-    echo "$0 - Upload images to OpenStack"
8
-    echo ""
9
-    echo "$0 [-h host] [-p port] release format"
10
-    exit 1
11
-}
12
-
13
-HOST=${HOST:-localhost}
14
-PORT=${PORT:-9292}
15
-DEST=${DEST:-/opt/stack}
16
-
17
-while getopts h:p: c; do
18
-    case $c in
19
-        h)  HOST=$OPTARG
20
-            ;;
21
-        p)  PORT=$OPTARG
22
-            ;;
23
-    esac
24
-done
25
-shift `expr $OPTIND - 1`
26
-
27
-RELEASE=$1
28
-FORMAT=$2
29
-
30
-case $FORMAT in
31
-    kvm|qcow2)  FORMAT=qcow2
32
-                TARGET=kvm
33
-                ;;
34
-    vmserver|vmdk)
35
-                FORMAT=vmdk
36
-                TARGET=vmserver
37
-                ;;
38
-    vbox|vdi)   TARGET=kvm
39
-                FORMAT=vdi
40
-                ;;
41
-    vhd|vpc)    TARGET=kvm
42
-                FORMAT=vhd
43
-                ;;
44
-    *)          echo "Unknown format: $FORMAT"
45
-                usage
46
-esac
47
-
48
-case $RELEASE in
49
-    natty)      ;;
50
-    maverick)   ;;
51
-    lucid)      ;;
52
-    karmic)     ;;
53
-    jaunty)     ;;
54
-    *)          if [ ! -r $RELEASE.$FORMAT ]; then
55
-                    echo "Unknown release: $RELEASE"
56
-                    usage
57
-                fi
58
-                ;;
59
-esac
60
-
61
-GLANCE=`which glance`
62
-if [ -z "$GLANCE" ]; then
63
-    if [ -x "$DEST/glance/bin/glance" ]; then
64
-        # Look for stack.sh's install
65
-        GLANCE="$DEST/glance/bin/glance"
66
-    else
67
-        # Install Glance client in $DEST
68
-        echo "Glance not found, must install client"
69
-        OWD=`pwd`
70
-        cd $DEST
71
-        sudo apt-get install python-pip python-eventlet python-routes python-greenlet python-argparse python-sqlalchemy python-wsgiref python-pastedeploy python-xattr
72
-        sudo pip install kombu
73
-        sudo git clone https://github.com/cloudbuilders/glance.git
74
-        cd glance
75
-        sudo python setup.py develop
76
-        cd $OWD
77
-        GLANCE=`which glance`
78
-    fi
79
-fi
80
-
81
-# Create image if it doesn't exist
82
-if [ ! -r $RELEASE.$FORMAT ]; then
83
-    DIR=`dirname $0`
84
-    echo "$RELEASE.$FORMAT not found, creating..."
85
-    $DIR/make_image.sh $RELEASE $FORMAT
86
-fi
87
-
88
-# Upload the image
89
-echo "Uploading image $RELEASE.$FORMAT to $HOST"
90
-$GLANCE add name=$RELEASE.$FORMAT is_public=true disk_format=$FORMAT --host $HOST --port $PORT <$RELEASE.$FORMAT
91 1
deleted file mode 100755
... ...
@@ -1,53 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-# Echo commands
4
-set -o xtrace
5
-
6
-# Exit on error to stop unexpected errors
7
-set -o errexit
8
-
9
-# Keep track of the current directory
10
-TOOLS_DIR=$(cd $(dirname "$0") && pwd)
11
-TOP_DIR=`cd $TOOLS_DIR/..; pwd`
12
-
13
-# Change dir to top of devstack
14
-cd $TOP_DIR
15
-
16
-# Echo usage
17
-usage() {
18
-    echo "Cache OpenStack dependencies on a uec image to speed up performance."
19
-    echo ""
20
-    echo "Usage: $0 [full path to raw uec base image]"
21
-}
22
-
23
-# Make sure this is a raw image
24
-if ! qemu-img info $1 | grep -q "file format: raw"; then
25
-    usage
26
-    exit 1
27
-fi
28
-
29
-# Make sure we are in the correct dir
30
-if [ ! -d files/apts ]; then
31
-    echo "Please run this script from devstack/tools/"
32
-    exit 1
33
-fi 
34
-
35
-# Mount the image
36
-STAGING_DIR=/tmp/`echo $1 | sed  "s/\//_/g"`.stage
37
-mkdir -p $STAGING_DIR
38
-umount $STAGING_DIR || true
39
-sleep 1
40
-mount -t ext4 -o loop $1 $STAGING_DIR
41
-
42
-# Make sure that base requirements are installed
43
-cp /etc/resolv.conf $STAGING_DIR/etc/resolv.conf
44
-
45
-# Perform caching on the base image to speed up subsequent runs
46
-chroot $STAGING_DIR apt-get update
47
-chroot $STAGING_DIR apt-get install -y --download-only `cat files/apts/* | grep NOPRIME | cut -d\# -f1`
48
-chroot $STAGING_DIR apt-get install -y --force-yes `cat files/apts/* | grep -v NOPRIME | cut -d\# -f1` || true
49
-mkdir -p $STAGING_DIR/var/cache/pip
50
-PIP_DOWNLOAD_CACHE=/var/cache/pip chroot $STAGING_DIR pip install `cat files/pips/*` || true
51
-
52
-# Unmount
53
-umount $STAGING_DIR
54 1
new file mode 100755
... ...
@@ -0,0 +1,53 @@
0
+#!/usr/bin/env bash
1
+
2
+# Echo commands
3
+set -o xtrace
4
+
5
+# Exit on error to stop unexpected errors
6
+set -o errexit
7
+
8
+# Keep track of the current directory
9
+TOOLS_DIR=$(cd $(dirname "$0") && pwd)
10
+TOP_DIR=`cd $TOOLS_DIR/..; pwd`
11
+
12
+# Change dir to top of devstack
13
+cd $TOP_DIR
14
+
15
+# Echo usage
16
+usage() {
17
+    echo "Cache OpenStack dependencies on a uec image to speed up performance."
18
+    echo ""
19
+    echo "Usage: $0 [full path to raw uec base image]"
20
+}
21
+
22
+# Make sure this is a raw image
23
+if ! qemu-img info $1 | grep -q "file format: raw"; then
24
+    usage
25
+    exit 1
26
+fi
27
+
28
+# Make sure we are in the correct dir
29
+if [ ! -d files/apts ]; then
30
+    echo "Please run this script from devstack/tools/"
31
+    exit 1
32
+fi 
33
+
34
+# Mount the image
35
+STAGING_DIR=/tmp/`echo $1 | sed  "s/\//_/g"`.stage
36
+mkdir -p $STAGING_DIR
37
+umount $STAGING_DIR || true
38
+sleep 1
39
+mount -t ext4 -o loop $1 $STAGING_DIR
40
+
41
+# Make sure that base requirements are installed
42
+cp /etc/resolv.conf $STAGING_DIR/etc/resolv.conf
43
+
44
+# Perform caching on the base image to speed up subsequent runs
45
+chroot $STAGING_DIR apt-get update
46
+chroot $STAGING_DIR apt-get install -y --download-only `cat files/apts/* | grep NOPRIME | cut -d\# -f1`
47
+chroot $STAGING_DIR apt-get install -y --force-yes `cat files/apts/* | grep -v NOPRIME | cut -d\# -f1` || true
48
+mkdir -p $STAGING_DIR/var/cache/pip
49
+PIP_DOWNLOAD_CACHE=/var/cache/pip chroot $STAGING_DIR pip install `cat files/pips/*` || true
50
+
51
+# Unmount
52
+umount $STAGING_DIR