Merge "Add a Tunnel end-point variable for Neutron configuration"
diff --git a/README.md b/README.md
index 7185e9d..7eacebd 100644
--- a/README.md
+++ b/README.md
@@ -143,6 +143,8 @@
 Each service that can be run under HTTPD + mod_wsgi also has an override
 toggle available that can be set in your ``local.conf``.
 
+Keystone is run under HTTPD + mod_wsgi by default.
+
 Example (Keystone):
 
     KEYSTONE_USE_MOD_WSGI="True"
diff --git a/extras.d/README.md b/extras.d/README.md
index 1dd17da..7c2e4fe 100644
--- a/extras.d/README.md
+++ b/extras.d/README.md
@@ -22,9 +22,24 @@
     stack: called by stack.sh.  There are four possible values for
         the second arg to distinguish the phase stack.sh is in:
 
-        arg 2:  install | post-config | extra | post-extra
+        arg 2:  pre-install | install | post-config | extra
 
     unstack: called by unstack.sh
 
     clean: called by clean.sh.  Remember, clean.sh also calls unstack.sh
         so that work need not be repeated.
+
+The `stack` phase sub-phases are called from `stack.sh` in the following places:
+
+    pre-install - After all system prerequisites have been installed but before any
+        DevStack-specific services are installed (including database and rpc).
+
+    install - After all OpenStack services have been installed and configured
+        but before any OpenStack services have been started.  Changes to OpenStack
+        service configurations should be done here.
+
+    post-config - After OpenStack services have been initialized but still before
+        they have been started. (This is probably mis-named, think of it as post-init.)
+
+    extra - After everything is started.
+
diff --git a/files/apts/general b/files/apts/general
index 90529e5..f3cab59 100644
--- a/files/apts/general
+++ b/files/apts/general
@@ -20,6 +20,7 @@
 tar
 python-cmd2 # dist:precise
 python-dev
+python-mock # testonly
 python2.7
 bc
 libyaml-dev
diff --git a/lib/keystone b/lib/keystone
index ec124cb..4e94bad 100644
--- a/lib/keystone
+++ b/lib/keystone
@@ -47,7 +47,7 @@
 KEYSTONE_EXTENSIONS=${KEYSTONE_EXTENSIONS:-}
 
 # Toggle for deploying Keystone under HTTPD + mod_wsgi
-KEYSTONE_USE_MOD_WSGI=${KEYSTONE_USE_MOD_WSGI:-False}
+KEYSTONE_USE_MOD_WSGI=${KEYSTONE_USE_MOD_WSGI:-${ENABLE_HTTPD_MOD_WSGI_SERVICES}}
 
 # Select the backend for Keystone's service catalog
 KEYSTONE_CATALOG_BACKEND=${KEYSTONE_CATALOG_BACKEND:-sql}
@@ -193,6 +193,12 @@
         iniset $KEYSTONE_CONF assignment driver "keystone.assignment.backends.$KEYSTONE_ASSIGNMENT_BACKEND.Assignment"
     fi
 
+    # Configure rabbitmq credentials
+    if is_service_enabled rabbit; then
+        iniset $KEYSTONE_CONF DEFAULT rabbit_password $RABBIT_PASSWORD
+        iniset $KEYSTONE_CONF DEFAULT rabbit_host $RABBIT_HOST
+    fi
+
     # Set the URL advertised in the ``versions`` structure returned by the '/' route
     iniset $KEYSTONE_CONF DEFAULT public_endpoint "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:%(public_port)s/"
     iniset $KEYSTONE_CONF DEFAULT admin_endpoint "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:%(admin_port)s/"
diff --git a/lib/swift b/lib/swift
index b01dd95..2b161c3 100644
--- a/lib/swift
+++ b/lib/swift
@@ -339,12 +339,12 @@
     iniset ${SWIFT_CONFIG_PROXY_SERVER} app:proxy-server node_timeout 120
     iniset ${SWIFT_CONFIG_PROXY_SERVER} app:proxy-server conn_timeout 20
 
-    # Skipped due to bug 1294789
-    ## Configure Ceilometer
-    #if is_service_enabled ceilometer; then
-    #    iniset ${SWIFT_CONFIG_PROXY_SERVER} filter:ceilometer use "egg:ceilometer#swift"
-    #    SWIFT_EXTRAS_MIDDLEWARE_LAST="${SWIFT_EXTRAS_MIDDLEWARE_LAST} ceilometer"
-    #fi
+    # Configure Ceilometer
+    if is_service_enabled ceilometer; then
+        iniset ${SWIFT_CONFIG_PROXY_SERVER} filter:ceilometer "set log_level" "WARN"
+        iniset ${SWIFT_CONFIG_PROXY_SERVER} filter:ceilometer use "egg:ceilometer#swift"
+        SWIFT_EXTRAS_MIDDLEWARE_LAST="${SWIFT_EXTRAS_MIDDLEWARE_LAST} ceilometer"
+    fi
 
     # Restrict the length of auth tokens in the swift proxy-server logs.
     iniset ${SWIFT_CONFIG_PROXY_SERVER} filter:proxy-logging reveal_sensitive_prefix ${SWIFT_LOG_TOKEN_LENGTH}
diff --git a/stack.sh b/stack.sh
index f3d8d44..d095063 100755
--- a/stack.sh
+++ b/stack.sh
@@ -668,6 +668,18 @@
 # Do the ugly hacks for borken packages and distros
 $TOP_DIR/tools/fixup_stuff.sh
 
+
+# Extras Pre-install
+# ------------------
+
+# Phase: pre-install
+if [[ -d $TOP_DIR/extras.d ]]; then
+    for i in $TOP_DIR/extras.d/*.sh; do
+        [[ -r $i ]] && source $i stack pre-install
+    done
+fi
+
+
 install_rpc_backend
 
 if is_service_enabled $DATABASE_BACKENDS; then