Browse code

Add support for using Qpid instead of RabbitMQ.

To use Qpid instead of RabbitMQ, you set 'qpid' instead of 'rabbit' in
ENABLED_SERVICES in your localrc file. Otherwise, RabbitMQ is still
used by default.

(dtroyer) fixed problem with service test that failed to configure
rabbitmq if it was still selected.

Change-Id: I8c62b588a461a068463821b2c079ffa4bfa1f804

Russell Bryant authored on 2012/03/14 02:44:12
Showing 3 changed files
... ...
@@ -19,6 +19,7 @@ libvirt-bin # NOPRIME
19 19
 vlan
20 20
 curl
21 21
 rabbitmq-server # NOPRIME
22
+qpidd # NOPRIME
22 23
 socat # used by ajaxterm
23 24
 python-mox
24 25
 python-paste
... ...
@@ -42,3 +43,4 @@ python-boto
42 42
 python-kombu
43 43
 python-feedparser
44 44
 python-iso8601
45
+python-qpid # dist:precise
... ...
@@ -29,11 +29,13 @@ python-netaddr
29 29
 python-paramiko
30 30
 python-paste
31 31
 python-paste-deploy
32
+python-qpid
32 33
 python-routes
33 34
 python-sqlalchemy
34 35
 python-suds
35 36
 python-tempita
36 37
 rabbitmq-server # NOPRIME
38
+qpid-cpp-server # NOPRIME
37 39
 sqlite
38 40
 sudo
39 41
 vconfig
... ...
@@ -94,6 +94,12 @@ if [[ ! ${DISTRO} =~ (oneiric|precise|quantal|f16) ]]; then
94 94
     fi
95 95
 fi
96 96
 
97
+if [ "${DISTRO}" = "oneiric" ] && is_service_enabled qpid ; then
98
+    # Qpid was introduced in precise
99
+    echo "You must use Ubuntu Precise or newer for Qpid support."
100
+    exit 1
101
+fi
102
+
97 103
 # Set the paths of certain binaries
98 104
 if [[ "$os_PACKAGE" = "deb" ]]; then
99 105
     NOVA_ROOTWRAP=/usr/local/bin/nova-rootwrap
... ...
@@ -381,8 +387,8 @@ FLAT_INTERFACE=${FLAT_INTERFACE:-$GUEST_INTERFACE_DEFAULT}
381 381
 # host.
382 382
 
383 383
 
384
-# MySQL & RabbitMQ
385
-# ----------------
384
+# MySQL & (RabbitMQ or Qpid)
385
+# --------------------------
386 386
 
387 387
 # We configure Nova, Horizon, Glance and Keystone to use MySQL as their
388 388
 # database server.  While they share a single server, each has their own
... ...
@@ -400,8 +406,10 @@ read_password MYSQL_PASSWORD "ENTER A PASSWORD TO USE FOR MYSQL."
400 400
 BASE_SQL_CONN=${BASE_SQL_CONN:-mysql://$MYSQL_USER:$MYSQL_PASSWORD@$MYSQL_HOST}
401 401
 
402 402
 # Rabbit connection info
403
-RABBIT_HOST=${RABBIT_HOST:-localhost}
404
-read_password RABBIT_PASSWORD "ENTER A PASSWORD TO USE FOR RABBIT."
403
+if is_service_enabled rabbit; then
404
+    RABBIT_HOST=${RABBIT_HOST:-localhost}
405
+    read_password RABBIT_PASSWORD "ENTER A PASSWORD TO USE FOR RABBIT."
406
+fi
405 407
 
406 408
 # Glance connection info.  Note the port must be specified.
407 409
 GLANCE_HOSTPORT=${GLANCE_HOSTPORT:-$SERVICE_HOST:9292}
... ...
@@ -756,8 +764,8 @@ EOF
756 756
 fi
757 757
 
758 758
 
759
-# Rabbit
760
-# ------
759
+# Rabbit or Qpid
760
+# --------------
761 761
 
762 762
 if is_service_enabled rabbit; then
763 763
     # Install and start rabbitmq-server
... ...
@@ -772,6 +780,13 @@ if is_service_enabled rabbit; then
772 772
     fi
773 773
     # change the rabbit password since the default is "guest"
774 774
     sudo rabbitmqctl change_password guest $RABBIT_PASSWORD
775
+elif is_service_enabled qpid; then
776
+    if [[ "$os_PACKAGE" = "rpm" ]]; then
777
+        install_package qpid-cpp-server
778
+        restart_service qpidd
779
+    else
780
+        install_package qpidd
781
+    fi
775 782
 fi
776 783
 
777 784
 
... ...
@@ -1653,8 +1668,12 @@ add_nova_opt "vncserver_proxyclient_address=$VNCSERVER_PROXYCLIENT_ADDRESS"
1653 1653
 add_nova_opt "api_paste_config=$NOVA_CONF_DIR/api-paste.ini"
1654 1654
 add_nova_opt "image_service=nova.image.glance.GlanceImageService"
1655 1655
 add_nova_opt "ec2_dmz_host=$EC2_DMZ_HOST"
1656
-add_nova_opt "rabbit_host=$RABBIT_HOST"
1657
-add_nova_opt "rabbit_password=$RABBIT_PASSWORD"
1656
+if is_service_enabled rabbit ; then
1657
+    add_nova_opt "rabbit_host=$RABBIT_HOST"
1658
+    add_nova_opt "rabbit_password=$RABBIT_PASSWORD"
1659
+elif is_service_enabled qpid ; then
1660
+    add_nova_opt "rpc_backend=nova.rpc.impl_qpid"
1661
+fi
1658 1662
 add_nova_opt "glance_api_servers=$GLANCE_HOSTPORT"
1659 1663
 add_nova_opt "force_dhcp_release=True"
1660 1664
 if [ -n "$INSTANCES_PATH" ]; then