Refactor rpc backend configuration logic

This commit also changes the following:
- Fixes Nova QPID module path
- Fixes a bug Cinder ZeroMQ RPC points to nova module
- Adds ZeroMQ setting for Heat RPC

qpid_is_supported is moved from functions to lib/rpc_backend.

This work is based on the work by Isaku Yamahata <yamahata@valinux.co.jp>
in https://review.openstack.org/#/c/19074/.

Change-Id: I45e21b1fb85e539213f5243764132a37906d7455
diff --git a/lib/heat b/lib/heat
index 89bd44f..5b8b360 100644
--- a/lib/heat
+++ b/lib/heat
@@ -69,13 +69,7 @@
     iniset $HEAT_API_CFN_CONF DEFAULT bind_host $HEAT_API_CFN_HOST
     iniset $HEAT_API_CFN_CONF DEFAULT bind_port $HEAT_API_CFN_PORT
 
-    if is_service_enabled rabbit; then
-        iniset $HEAT_API_CFN_CONF DEFAULT rpc_backend heat.openstack.common.rpc.impl_kombu
-        iniset $HEAT_API_CFN_CONF DEFAULT rabbit_password $RABBIT_PASSWORD
-        iniset $HEAT_API_CFN_CONF DEFAULT rabbit_host $RABBIT_HOST
-    elif is_service_enabled qpid; then
-        iniset $HEAT_API_CFN_CONF DEFAULT rpc_backend heat.openstack.common.rpc.impl_qpid
-    fi
+    iniset_rpc_backend heat $HEAT_API_CFN_CONF DEFAULT
 
     HEAT_API_CFN_PASTE_INI=$HEAT_CONF_DIR/heat-api-cfn-paste.ini
     cp $HEAT_DIR/etc/heat/heat-api-cfn-paste.ini $HEAT_API_CFN_PASTE_INI
@@ -98,13 +92,7 @@
     iniset $HEAT_API_CONF DEFAULT bind_host $HEAT_API_HOST
     iniset $HEAT_API_CONF DEFAULT bind_port $HEAT_API_PORT
 
-    if is_service_enabled rabbit; then
-        iniset $HEAT_API_CONF DEFAULT rpc_backend heat.openstack.common.rpc.impl_kombu
-        iniset $HEAT_API_CONF DEFAULT rabbit_password $RABBIT_PASSWORD
-        iniset $HEAT_API_CONF DEFAULT rabbit_host $RABBIT_HOST
-    elif is_service_enabled qpid; then
-        iniset $HEAT_API_CONF DEFAULT rpc_backend heat.openstack.common.rpc.impl_qpid
-    fi
+    iniset_rpc_backend heat $HEAT_API_CONF DEFAULT
 
     HEAT_API_PASTE_INI=$HEAT_CONF_DIR/heat-api-paste.ini
     cp $HEAT_DIR/etc/heat/heat-api-paste.ini $HEAT_API_PASTE_INI
@@ -134,13 +122,7 @@
     iniset $HEAT_ENGINE_CONF DEFAULT sql_connection $dburl
     iniset $HEAT_ENGINE_CONF DEFAULT auth_encryption_key `hexdump -n 16 -v -e '/1 "%02x"' /dev/random`
 
-    if is_service_enabled rabbit; then
-        iniset $HEAT_ENGINE_CONF DEFAULT rpc_backend heat.openstack.common.rpc.impl_kombu
-        iniset $HEAT_ENGINE_CONF DEFAULT rabbit_password $RABBIT_PASSWORD
-        iniset $HEAT_ENGINE_CONF DEFAULT rabbit_host $RABBIT_HOST
-    elif is_service_enabled qpid; then
-        iniset $HEAT_ENGINE_CONF DEFAULT rpc_backend heat.openstack.common.rpc.impl_qpid
-    fi
+    iniset_rpc_backend heat $HEAT_ENGINE_CONF DEFAULT
 
     # Cloudwatch API
     HEAT_API_CW_CONF=$HEAT_CONF_DIR/heat-api-cloudwatch.conf
@@ -151,13 +133,7 @@
     iniset $HEAT_API_CW_CONF DEFAULT bind_host $HEAT_API_CW_HOST
     iniset $HEAT_API_CW_CONF DEFAULT bind_port $HEAT_API_CW_PORT
 
-    if is_service_enabled rabbit; then
-        iniset $HEAT_API_CW_CONF DEFAULT rpc_backend heat.openstack.common.rpc.impl_kombu
-        iniset $HEAT_API_CW_CONF DEFAULT rabbit_password $RABBIT_PASSWORD
-        iniset $HEAT_API_CW_CONF DEFAULT rabbit_host $RABBIT_HOST
-    elif is_service_enabled qpid; then
-        iniset $HEAT_API_CW_CONF DEFAULT rpc_backend heat.openstack.common.rpc.impl_qpid
-    fi
+    iniset_rpc_backend heat $HEAT_API_CW_CONF DEFAULT
 
     HEAT_API_CW_PASTE_INI=$HEAT_CONF_DIR/heat-api-cloudwatch-paste.ini
     cp $HEAT_DIR/etc/heat/heat-api-cloudwatch-paste.ini $HEAT_API_CW_PASTE_INI