Merge "LDAP root DN creation fails"
diff --git a/lib/databases/mysql b/lib/databases/mysql
index 0eb8fdd..476b4b9 100644
--- a/lib/databases/mysql
+++ b/lib/databases/mysql
@@ -87,20 +87,25 @@
 default-storage-engine = InnoDB" $MY_CONF
     fi
 
-    # Turn on slow query log
-    sudo sed -i '/log.slow.queries/d' $MY_CONF
-    sudo sed -i -e "/^\[mysqld\]/ a \
-log-slow-queries = /var/log/mysql/mysql-slow.log" $MY_CONF
+    if [[ "$DATABASE_QUERY_LOGGING" == "True" ]]; then
+        echo_summary "Enabling MySQL query logging"
 
-    # Log all queries (any query taking longer than 0 seconds)
-    sudo sed -i '/long.query.time/d' $MY_CONF
-    sudo sed -i -e "/^\[mysqld\]/ a \
-long-query-time = 0" $MY_CONF
+        # Turn on slow query log
+        sudo sed -i '/log.slow.queries/d' $MY_CONF
+        sudo sed -i -e "/^\[mysqld\]/ a \
+            log-slow-queries = /var/log/mysql/mysql-slow.log" $MY_CONF
 
-    # Log all non-indexed queries
-    sudo sed -i '/log.queries.not.using.indexes/d' $MY_CONF
-    sudo sed -i -e "/^\[mysqld\]/ a \
-log-queries-not-using-indexes" $MY_CONF
+        # Log all queries (any query taking longer than 0 seconds)
+        sudo sed -i '/long.query.time/d' $MY_CONF
+        sudo sed -i -e "/^\[mysqld\]/ a \
+            long-query-time = 0" $MY_CONF
+
+        # Log all non-indexed queries
+        sudo sed -i '/log.queries.not.using.indexes/d' $MY_CONF
+        sudo sed -i -e "/^\[mysqld\]/ a \
+            log-queries-not-using-indexes" $MY_CONF
+
+    fi
 
     restart_service $MYSQL
 }
diff --git a/lib/rpc_backend b/lib/rpc_backend
index f59c800..3651bc0 100644
--- a/lib/rpc_backend
+++ b/lib/rpc_backend
@@ -139,12 +139,18 @@
     if is_service_enabled rabbit; then
         # Start rabbitmq-server
         echo_summary "Starting RabbitMQ"
-        if is_fedora || is_suse; then
-            # service is not started by default
-            restart_service rabbitmq-server
-        fi
-        # change the rabbit password since the default is "guest"
-        sudo rabbitmqctl change_password guest $RABBIT_PASSWORD
+        # NOTE(bnemec): Retry initial rabbitmq configuration to deal with
+        # the fact that sometimes it fails to start properly.
+        # Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1059028
+        for i in `seq 10`; do
+            if is_fedora || is_suse; then
+                # service is not started by default
+                restart_service rabbitmq-server
+            fi
+            # change the rabbit password since the default is "guest"
+            sudo rabbitmqctl change_password guest $RABBIT_PASSWORD && break
+            [[ $i -eq "10" ]] && die $LINENO "Failed to set rabbitmq password"
+        done
         if is_service_enabled n-cell; then
             # Add partitioned access for the child cell
             if [ -z `sudo rabbitmqctl list_vhosts | grep child_cell` ]; then
diff --git a/lib/trove b/lib/trove
index 1fd011a..2000446 100644
--- a/lib/trove
+++ b/lib/trove
@@ -129,14 +129,14 @@
     # Copy api-paste file over to the trove conf dir and configure it
     cp $TROVE_LOCAL_CONF_DIR/api-paste.ini $TROVE_CONF_DIR/api-paste.ini
     TROVE_API_PASTE_INI=$TROVE_CONF_DIR/api-paste.ini
-    iniset $TROVE_API_PASTE_INI filter:tokenauth auth_host $KEYSTONE_AUTH_HOST
-    iniset $TROVE_API_PASTE_INI filter:tokenauth auth_port $KEYSTONE_AUTH_PORT
-    iniset $TROVE_API_PASTE_INI filter:tokenauth auth_protocol $KEYSTONE_AUTH_PROTOCOL
-    iniset $TROVE_API_PASTE_INI filter:tokenauth cafile $KEYSTONE_SSL_CA
-    iniset $TROVE_API_PASTE_INI filter:tokenauth admin_tenant_name $SERVICE_TENANT_NAME
-    iniset $TROVE_API_PASTE_INI filter:tokenauth admin_user trove
-    iniset $TROVE_API_PASTE_INI filter:tokenauth admin_password $SERVICE_PASSWORD
-    iniset $TROVE_API_PASTE_INI filter:tokenauth signing_dir $TROVE_AUTH_CACHE_DIR
+    iniset $TROVE_API_PASTE_INI filter:authtoken auth_host $KEYSTONE_AUTH_HOST
+    iniset $TROVE_API_PASTE_INI filter:authtoken auth_port $KEYSTONE_AUTH_PORT
+    iniset $TROVE_API_PASTE_INI filter:authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL
+    iniset $TROVE_API_PASTE_INI filter:authtoken cafile $KEYSTONE_SSL_CA
+    iniset $TROVE_API_PASTE_INI filter:authtoken admin_tenant_name $SERVICE_TENANT_NAME
+    iniset $TROVE_API_PASTE_INI filter:authtoken admin_user trove
+    iniset $TROVE_API_PASTE_INI filter:authtoken admin_password $SERVICE_PASSWORD
+    iniset $TROVE_API_PASTE_INI filter:authtoken signing_dir $TROVE_AUTH_CACHE_DIR
 
     # (Re)create trove conf files
     rm -f $TROVE_CONF_DIR/trove.conf
diff --git a/stackrc b/stackrc
index 197b4cf..e89d25e 100644
--- a/stackrc
+++ b/stackrc
@@ -65,6 +65,9 @@
     source $RC_DIR/.localrc.auto
 fi
 
+# This can be used to turn database query logging on and off
+# (currently only implemented for MySQL backend)
+DATABASE_QUERY_LOGGING=$(trueorfalse True $DATABASE_QUERY_LOGGING)
 
 # Repositories
 # ------------