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 |
| 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} |
| 14 | |
| 15 | usage() { |
| 16 | echo "$0 - Upload Ubuntu images" |
| 17 | echo "" |
| 18 | echo "$0 [-h host] [-p port] release format" |
| 19 | exit 1 |
| 20 | } |
| 21 | |
| 22 | while getopts h:p: c; do |
| 23 | case $c in |
| 24 | h) HOST=$OPTARG |
| 25 | ;; |
| 26 | p) PORT=$OPTARG |
| 27 | ;; |
| 28 | esac |
| 29 | done |
| 30 | shift `expr $OPTIND - 1` |
| 31 | |
| 32 | RELEASE=$1 |
| 33 | FORMAT=$2 |
| 34 | |
| 35 | case $RELEASE in |
| 36 | natty) ;; |
| 37 | maverick) ;; |
| 38 | lucid) ;; |
| 39 | karmic) ;; |
| 40 | jaunty) ;; |
| 41 | *) echo "Unknown release: $RELEASE" |
| 42 | usage |
| 43 | esac |
| 44 | |
| 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 |
| 60 | esac |
| 61 | |
| 62 | GLANCE=`which glance` |
| 63 | 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` |
| 72 | fi |
| 73 | |
| 74 | # Create image if it doesn't exist |
| 75 | 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 |
| 79 | fi |
| 80 | |
| 81 | # Upload the image |
| 82 | $GLANCE add name=$RELEASE.$FORMAT is_public=true disk_format=$FORMAT --host $HOST --port $PORT <$RELEASE.$FORMAT |