Add new stack phase: post-extra

The current existing phases "post-config" and "extra" are not
sufficient to allow local.conf overrides to extra type services
because they run after the services are installed and configured.
This commit introduces a new phase called "post-extra" that runs
after these existing phases. With this change, users are able to
leverage local.conf to provide overridden options to services
like Tempest.

Change-Id: I5d758eebfda804dd1d8cbc3d5cc35ef4dcc8c96f
Closes-Bug: #1249085
diff --git a/README.md b/README.md
index 640fab6..34cd2ef 100644
--- a/README.md
+++ b/README.md
@@ -326,6 +326,7 @@
 * **local** - extracts ``localrc`` from ``local.conf`` before ``stackrc`` is sourced
 * **post-config** - runs after the layer 2 services are configured and before they are started
 * **extra** - runs after services are started and before any files in ``extra.d`` are executed
+* **post-extra** - runs after files in ``extra.d`` are executed
 
 The file is processed strictly in sequence; meta-sections may be specified more than once but if any settings are duplicated the last to appear in the file will be used.
 
diff --git a/extras.d/80-tempest.sh b/extras.d/80-tempest.sh
index 75b702c..0186e36 100644
--- a/extras.d/80-tempest.sh
+++ b/extras.d/80-tempest.sh
@@ -14,6 +14,9 @@
         echo_summary "Initializing Tempest"
         configure_tempest
         init_tempest
+    elif [[ "$1" == "stack" && "$2" == "post-extra" ]]; then
+        # local.conf Tempest option overrides
+        :
     fi
 
     if [[ "$1" == "unstack" ]]; then
diff --git a/extras.d/README.md b/extras.d/README.md
index 88e4265..1dd17da 100644
--- a/extras.d/README.md
+++ b/extras.d/README.md
@@ -19,10 +19,10 @@
     source: always called first in any of the scripts, used to set the
         initial defaults in a lib/* script or similar
 
-    stack: called by stack.sh.  There are three possible values for
+    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
+        arg 2:  install | post-config | extra | post-extra
 
     unstack: called by unstack.sh
 
diff --git a/stack.sh b/stack.sh
index 47d93bd..c24257d 100755
--- a/stack.sh
+++ b/stack.sh
@@ -1252,6 +1252,13 @@
     done
 fi
 
+# Local Configuration
+# ===================
+
+# Apply configuration from local.conf if it exists for layer 2 services
+# Phase: post-extra
+merge_config_group $TOP_DIR/local.conf post-extra
+
 
 # Run local script
 # ================