Browse code

default to kvm, but revert to qemu

Jesse Andrews authored on 2011/09/17 08:28:13
Showing 1 changed files
... ...
@@ -87,8 +87,9 @@ EC2_DMZ_HOST=${EC2_DMZ_HOST:-$HOST_IP}
87 87
 # ip or you risk breaking things.
88 88
 # FLAT_INTERFACE=eth0
89 89
 
90
-# Nova hypervisor configuration
91
-LIBVIRT_TYPE=${LIBVIRT_TYPE:-qemu}
90
+# Nova hypervisor configuration.  We default to **kvm** but will drop back to 
91
+# **qemu** if we are unable to load the kvm module.
92
+LIBVIRT_TYPE=${LIBVIRT_TYPE:-kvm}
92 93
 
93 94
 # Mysql connection info
94 95
 MYSQL_USER=${MYSQL_USER:-root}
... ...
@@ -156,6 +157,11 @@ git_clone https://github.com/cloudbuilders/openstack-munin.git $MUNIN_DIR
156 156
 # Initialization
157 157
 # ==============
158 158
 
159
+
160
+# create a new named screen to store things in
161
+screen -d -m -S nova -t nova
162
+sleep 1
163
+
159 164
 # setup our checkouts so they are installed into python path
160 165
 # allowing ``import nova`` or ``import glance.client``
161 166
 cd $NOVA_DIR; sudo python setup.py develop
... ...
@@ -282,53 +288,21 @@ fi
282 282
 # Nova
283 283
 # ----
284 284
 
285
-function add_nova_flag {
286
-    echo "$1" >> $NOVA_DIR/bin/nova.conf
287
-}
288
-
289
-# (re)create nova.conf
290
-rm -f $NOVA_DIR/bin/nova.conf
291
-add_nova_flag "--verbose"
292
-add_nova_flag "--nodaemon"
293
-add_nova_flag "--dhcpbridge_flagfile=$NOVA_DIR/bin/nova.conf"
294
-add_nova_flag "--network_manager=nova.network.manager.$NET_MAN"
295
-add_nova_flag "--my_ip=$HOST_IP"
296
-add_nova_flag "--public_interface=$INTERFACE"
297
-add_nova_flag "--vlan_interface=$INTERFACE"
298
-add_nova_flag "--sql_connection=$BASE_SQL_CONN/nova"
299
-add_nova_flag "--libvirt_type=$LIBVIRT_TYPE"
300
-add_nova_flag "--osapi_extensions_path=$API_DIR/extensions"
301
-add_nova_flag "--vncproxy_url=http://$HOST_IP:6080"
302
-add_nova_flag "--vncproxy_wwwroot=$NOVNC_DIR/"
303
-add_nova_flag "--api_paste_config=$KEYSTONE_DIR/examples/paste/nova-api-paste.ini"
304
-add_nova_flag "--image_service=nova.image.glance.GlanceImageService"
305
-add_nova_flag "--ec2_dmz_host=$EC2_DMZ_HOST"
306
-add_nova_flag "--rabbit_host=$RABBIT_HOST"
307
-add_nova_flag "--glance_api_servers=$GLANCE_HOSTPORT"
308
-if [ -n "$FLAT_INTERFACE" ]; then
309
-    add_nova_flag "--flat_interface=$FLAT_INTERFACE"
310
-fi
311
-if [ -n "$MULTI_HOST" ]; then
312
-    add_nova_flag "--multi_host=$MULTI_HOST"
313
-fi
314
-
315
-# create a new named screen to store things in
316
-screen -d -m -S nova -t nova
317
-sleep 1
318 285
 
319 286
 if [[ "$ENABLED_SERVICES" =~ "n-cpu" ]]; then
320 287
 
321
-    # attempt to load modules: kvm (hardware virt) and nbd (network block 
322
-    # device - used to manage qcow images)
288
+    # attempt to load modules: nbd (network block device - used to manage 
289
+    # qcow images) and kvm (hardware based virtualization).  If unable to 
290
+    # load kvm, set the libvirt type to qemu.
323 291
     sudo modprobe nbd || true
324
-    sudo modprobe kvm || true
292
+    if ! sudo modprobe kvm; then
293
+        LIBVIRT_TYPE=qemu
294
+    fi
325 295
     # User needs to be member of libvirtd group for nova-compute to use libvirt.
326 296
     sudo usermod -a -G libvirtd `whoami`
327 297
     # if kvm wasn't running before we need to restart libvirt to enable it
328 298
     sudo /etc/init.d/libvirt-bin restart
329 299
 
330
-    ## FIXME(ja): should LIBVIRT_TYPE be kvm if kvm module is loaded?
331
-
332 300
     # setup nova instance directory
333 301
     mkdir -p $NOVA_DIR/instances
334 302
 
... ...
@@ -364,6 +338,36 @@ if [[ "$ENABLED_SERVICES" =~ "mysql" ]]; then
364 364
     $NOVA_DIR/bin/nova-manage floating create $FLOATING_RANGE
365 365
 fi
366 366
 
367
+function add_nova_flag {
368
+    echo "$1" >> $NOVA_DIR/bin/nova.conf
369
+}
370
+
371
+# (re)create nova.conf
372
+rm -f $NOVA_DIR/bin/nova.conf
373
+add_nova_flag "--verbose"
374
+add_nova_flag "--nodaemon"
375
+add_nova_flag "--dhcpbridge_flagfile=$NOVA_DIR/bin/nova.conf"
376
+add_nova_flag "--network_manager=nova.network.manager.$NET_MAN"
377
+add_nova_flag "--my_ip=$HOST_IP"
378
+add_nova_flag "--public_interface=$INTERFACE"
379
+add_nova_flag "--vlan_interface=$INTERFACE"
380
+add_nova_flag "--sql_connection=$BASE_SQL_CONN/nova"
381
+add_nova_flag "--libvirt_type=$LIBVIRT_TYPE"
382
+add_nova_flag "--osapi_extensions_path=$API_DIR/extensions"
383
+add_nova_flag "--vncproxy_url=http://$HOST_IP:6080"
384
+add_nova_flag "--vncproxy_wwwroot=$NOVNC_DIR/"
385
+add_nova_flag "--api_paste_config=$KEYSTONE_DIR/examples/paste/nova-api-paste.ini"
386
+add_nova_flag "--image_service=nova.image.glance.GlanceImageService"
387
+add_nova_flag "--ec2_dmz_host=$EC2_DMZ_HOST"
388
+add_nova_flag "--rabbit_host=$RABBIT_HOST"
389
+add_nova_flag "--glance_api_servers=$GLANCE_HOSTPORT"
390
+if [ -n "$FLAT_INTERFACE" ]; then
391
+    add_nova_flag "--flat_interface=$FLAT_INTERFACE"
392
+fi
393
+if [ -n "$MULTI_HOST" ]; then
394
+    add_nova_flag "--multi_host=$MULTI_HOST"
395
+fi
396
+
367 397
 # Keystone
368 398
 # --------
369 399