~rackspace-titan/nova/api-profiling

« back to all changes in this revision

Viewing changes to contrib/nova.sh

  • Committer: Todd Willey
  • Date: 2010-11-04 18:44:22 UTC
  • mto: (386.6.2 trunkdoc)
  • mto: This revision was merged to the branch mainline in revision 398.
  • Revision ID: todd@ansolabs.com-20101104184422-vfbqyjqgr4whg3wm
Nova quickstart: move vish's novascript into contrib, and convert reademe.md to a quickstart.rst

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env bash
 
2
DIR=`pwd`
 
3
CMD=$1
 
4
SOURCE_BRANCH=lp:nova
 
5
if [ -n "$2" ]; then
 
6
    SOURCE_BRANCH=$2
 
7
fi
 
8
DIRNAME=nova
 
9
NOVA_DIR=$DIR/$DIRNAME
 
10
if [ -n "$3" ]; then
 
11
    NOVA_DIR=$DIR/$3
 
12
fi
 
13
 
 
14
if [ ! -n "$HOST_IP" ]; then
 
15
    # NOTE(vish): This will just get the first ip in the list, so if you
 
16
    #             have more than one eth device set up, this will fail, and
 
17
    #             you should explicitly set HOST_IP in your environment
 
18
    HOST_IP=`ifconfig  | grep -m 1 'inet addr:'| cut -d: -f2 | awk '{print $1}'`
 
19
fi
 
20
TEST=0
 
21
USE_MYSQL=0
 
22
MYSQL_PASS=nova
 
23
USE_LDAP=0
 
24
LIBVIRT_TYPE=qemu
 
25
 
 
26
if [ "$USE_MYSQL" == 1 ]; then
 
27
    SQL_CONN=mysql://root:$MYSQL_PASS@localhost/nova
 
28
else
 
29
    SQL_CONN=sqlite:///$NOVA_DIR/nova.sqlite
 
30
fi
 
31
 
 
32
if [ "$USE_LDAP" == 1 ]; then
 
33
    AUTH=ldapdriver.LdapDriver
 
34
else
 
35
    AUTH=dbdriver.DbDriver
 
36
fi
 
37
 
 
38
mkdir -p /etc/nova
 
39
cat >/etc/nova/nova-manage.conf << NOVA_CONF_EOF
 
40
--verbose
 
41
--nodaemon
 
42
--dhcpbridge_flagfile=/etc/nova/nova-manage.conf
 
43
--FAKE_subdomain=ec2
 
44
--cc_host=$HOST_IP
 
45
--routing_source_ip=$HOST_IP
 
46
--sql_connection=$SQL_CONN
 
47
--auth_driver=nova.auth.$AUTH
 
48
--libvirt_type=$LIBVIRT_TYPE
 
49
NOVA_CONF_EOF
 
50
 
 
51
if [ "$CMD" == "branch" ]; then
 
52
    sudo apt-get install -y bzr
 
53
    rm -rf $NOVA_DIR
 
54
    bzr branch $SOURCE_BRANCH $NOVA_DIR
 
55
    cd $NOVA_DIR
 
56
    mkdir -p $NOVA_DIR/instances
 
57
    mkdir -p $NOVA_DIR/networks
 
58
fi
 
59
 
 
60
# You should only have to run this once
 
61
if [ "$CMD" == "install" ]; then
 
62
    sudo apt-get install -y python-software-properties
 
63
    sudo add-apt-repository ppa:nova-core/ppa
 
64
    sudo apt-get update
 
65
    sudo apt-get install -y dnsmasq open-iscsi kpartx kvm gawk iptables ebtables
 
66
    sudo apt-get install -y user-mode-linux kvm libvirt-bin
 
67
    sudo apt-get install -y screen iscsitarget euca2ools vlan curl rabbitmq-server
 
68
    sudo modprobe kvm
 
69
    sudo /etc/init.d/libvirt-bin restart
 
70
    sudo apt-get install -y python-twisted python-sqlalchemy python-mox python-greenlet python-carrot
 
71
    sudo apt-get install -y python-daemon python-eventlet python-gflags python-tornado python-ipy
 
72
    sudo apt-get install -y python-libvirt python-libxml2 python-routes
 
73
    if [ "$USE_MYSQL" == 1 ]; then
 
74
        cat <<MYSQL_PRESEED | debconf-set-selections
 
75
mysql-server-5.1 mysql-server/root_password password $MYSQL_PASS
 
76
mysql-server-5.1 mysql-server/root_password_again password $MYSQL_PASS
 
77
mysql-server-5.1 mysql-server/start_on_boot boolean true
 
78
MYSQL_PRESEED
 
79
        apt-get install -y mysql-server python-mysqldb
 
80
    fi
 
81
    wget http://c2477062.cdn.cloudfiles.rackspacecloud.com/images.tgz
 
82
    tar -C $DIR -zxf images.tgz
 
83
fi
 
84
 
 
85
NL=`echo -ne '\015'`
 
86
 
 
87
function screen_it {
 
88
    screen -S nova -X screen -t $1
 
89
    screen -S nova -p $1 -X stuff "$2$NL"
 
90
}
 
91
 
 
92
if [ "$CMD" == "run" ]; then
 
93
    killall dnsmasq
 
94
    screen -d -m -S nova -t nova
 
95
    sleep 1
 
96
    if [ "$USE_MYSQL" == 1 ]; then
 
97
        mysql -p$MYSQL_PASS -e 'DROP DATABASE nova;'
 
98
        mysql -p$MYSQL_PASS -e 'CREATE DATABASE nova;'
 
99
    else
 
100
        rm $NOVA_DIR/nova.sqlite
 
101
    fi
 
102
    if [ "$USE_LDAP" == 1 ]; then
 
103
        sudo $NOVA_DIR/nova/auth/slap.sh
 
104
    fi
 
105
    rm -rf $NOVA_DIR/instances
 
106
    mkdir -p $NOVA_DIR/instances
 
107
    rm -rf $NOVA_DIR/networks
 
108
    mkdir -p $NOVA_DIR/networks
 
109
    $NOVA_DIR/tools/clean-vlans
 
110
    if [ ! -d "$NOVA_DIR/images" ]; then
 
111
        ln -s $DIR/images $NOVA_DIR/images
 
112
    fi
 
113
 
 
114
    if [ "$TEST" == 1 ]; then
 
115
        cd $NOVA_DIR
 
116
        python $NOVA_DIR/run_tests.py
 
117
        cd $DIR
 
118
    fi
 
119
 
 
120
    # create an admin user called 'admin'
 
121
    $NOVA_DIR/bin/nova-manage user admin admin admin admin
 
122
    # create a project called 'admin' with project manager of 'admin'
 
123
    $NOVA_DIR/bin/nova-manage project create admin admin
 
124
    # export environment variables for project 'admin' and user 'admin'
 
125
    $NOVA_DIR/bin/nova-manage project environment admin admin $NOVA_DIR/novarc
 
126
    # create 3 small networks
 
127
    $NOVA_DIR/bin/nova-manage network create 10.0.0.0/8 3 16
 
128
 
 
129
    # nova api crashes if we start it with a regular screen command,
 
130
    # so send the start command by forcing text into the window.
 
131
    screen_it api "$NOVA_DIR/bin/nova-api --flagfile=/etc/nova/nova-manage.conf"
 
132
    screen_it objectstore "$NOVA_DIR/bin/nova-objectstore --flagfile=/etc/nova/nova-manage.conf"
 
133
    screen_it compute "$NOVA_DIR/bin/nova-compute --flagfile=/etc/nova/nova-manage.conf"
 
134
    screen_it network "$NOVA_DIR/bin/nova-network --flagfile=/etc/nova/nova-manage.conf"
 
135
    screen_it scheduler "$NOVA_DIR/bin/nova-scheduler --flagfile=/etc/nova/nova-manage.conf"
 
136
    screen_it volume "$NOVA_DIR/bin/nova-volume --flagfile=/etc/nova/nova-manage.conf"
 
137
    screen_it test ". $NOVA_DIR/novarc"
 
138
    screen -x
 
139
fi
 
140
 
 
141
if [ "$CMD" == "run" ] || [ "$CMD" == "terminate" ]; then
 
142
    # shutdown instances
 
143
    . $NOVA_DIR/novarc; euca-describe-instances | grep i- | cut -f2 | xargs euca-terminate-instances
 
144
    sleep 2
 
145
fi
 
146
 
 
147
if [ "$CMD" == "run" ] || [ "$CMD" == "clean" ]; then
 
148
    screen -S nova -X quit
 
149
    rm *.pid*
 
150
    $NOVA_DIR/tools/setup_iptables.sh clear
 
151
fi
 
152
 
 
153
if [ "$CMD" == "scrub" ]; then
 
154
    $NOVA_DIR/tools/clean-vlans
 
155
    if [ "$LIBVIRT_TYPE" == "uml" ]; then
 
156
        virsh -c uml:///system list | grep i- | awk '{print \$1}' | xargs -n1 virsh -c uml:///system destroy
 
157
    else
 
158
        virsh list | grep i- | awk '{print \$1}' | xargs -n1 virsh destroy
 
159
    fi
 
160
    vblade-persist ls | grep vol- | awk '{print \$1\" \"\$2}' | xargs -n2 vblade-persist destroy
 
161
fi