Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | # upload_image.sh - Upload Ubuntu images (create if necessary) in various formats |
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 3 | # Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc) |
| 4 | # Requires sudo to root |
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 5 | |
| 6 | usage() { |
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 7 | echo "$0 - Upload images to OpenStack" |
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 8 | echo "" |
| 9 | echo "$0 [-h host] [-p port] release format" |
| 10 | exit 1 |
| 11 | } |
| 12 | |
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 13 | HOST=${HOST:-localhost} |
| 14 | PORT=${PORT:-9292} |
| 15 | |
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 16 | while getopts h:p: c; do |
| 17 | case $c in |
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 18 | h) HOST=$OPTARG |
| 19 | ;; |
| 20 | p) PORT=$OPTARG |
| 21 | ;; |
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 22 | esac |
| 23 | done |
| 24 | shift `expr $OPTIND - 1` |
| 25 | |
| 26 | RELEASE=$1 |
| 27 | FORMAT=$2 |
| 28 | |
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 29 | case $FORMAT in |
| 30 | kvm|qcow2) FORMAT=qcow2 |
| 31 | TARGET=kvm |
| 32 | ;; |
| 33 | vmserver|vmdk) |
| 34 | FORMAT=vmdk |
| 35 | TARGET=vmserver |
| 36 | ;; |
| 37 | vbox|vdi) TARGET=kvm |
| 38 | FORMAT=vdi |
| 39 | ;; |
| 40 | vhd|vpc) TARGET=kvm |
| 41 | FORMAT=vhd |
| 42 | ;; |
| 43 | *) echo "Unknown format: $FORMAT" |
| 44 | usage |
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 45 | esac |
| 46 | |
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 47 | case $RELEASE in |
| 48 | natty) ;; |
| 49 | maverick) ;; |
| 50 | lucid) ;; |
| 51 | karmic) ;; |
| 52 | jaunty) ;; |
| 53 | *) if [ ! -r $RELEASE.$FORMAT ]; then |
| 54 | echo "Unknown release: $RELEASE" |
| 55 | usage |
| 56 | fi |
| 57 | ;; |
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 58 | esac |
| 59 | |
| 60 | GLANCE=`which glance` |
| 61 | if [ -z "$GLANCE" ]; then |
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 62 | if [ -x "/opt/glance/bin/glance" ]; then |
| 63 | # Look for stack.sh's install |
| 64 | GLANCE="/opt/glance/bin/glance" |
| 65 | else |
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame] | 66 | # Install Glance client in /opt |
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 67 | echo "Glance not found, must install client" |
| 68 | OWD=`pwd` |
| 69 | cd /opt |
| 70 | sudo apt-get install python-pip python-eventlet python-routes python-greenlet python-argparse python-sqlalchemy python-wsgiref python-pastedeploy python-xattr |
| 71 | sudo pip install kombu |
| 72 | sudo git clone https://github.com/cloudbuilders/glance.git |
| 73 | cd glance |
| 74 | sudo python setup.py develop |
| 75 | cd $OWD |
| 76 | GLANCE=`which glance` |
| 77 | fi |
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 78 | fi |
| 79 | |
| 80 | # Create image if it doesn't exist |
| 81 | if [ ! -r $RELEASE.$FORMAT ]; then |
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 82 | DIR=`dirname $0` |
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame] | 83 | echo "$RELEASE.$FORMAT not found, creating..." |
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 84 | $DIR/make_image.sh $RELEASE $FORMAT |
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 85 | fi |
| 86 | |
| 87 | # Upload the image |
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame] | 88 | echo "Uploading image $RELEASE.$FORMAT to $HOST" |
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 89 | $GLANCE add name=$RELEASE.$FORMAT is_public=true disk_format=$FORMAT --host $HOST --port $PORT <$RELEASE.$FORMAT |