Add meta-config via local.conf
This defines a new local.conf file that is designed to take the place of all
of the 'pass-through'[1] configuration options that have been defined in DevStack.
* new local.conf file can contain multiple config file settings to be
merged in to existing project config files
* localrc can be embedded into local.conf and will auto-extract if
localrc does not exist
* Adds functions get_meta_section(), get_meta_section_files(),
merge_config_file() and merge_config_group()
* Adds EXTRA_OPTS, EXTRA_BAREMETAL_OPTS, Q_DHCP_EXTRA_DEFAULT_OPTS and
Q_SRV_EXTRA_DEFAULT_OPTS to the deprecated warning list at the end of stack.sh
[1] Pass-through options are those that do not configure or change DevStack's behaviour
but simply set a value in a project config file. This includes most of the EXTRA_XXX_OPTS
configuration variables.
Change-Id: I367cadc86116621e9574ac203aafdab483d810d3
diff --git a/stack.sh b/stack.sh
index be04bed..f6ab4c4 100755
--- a/stack.sh
+++ b/stack.sh
@@ -29,6 +29,9 @@
# Import common functions
source $TOP_DIR/functions
+# Import config functions
+source $TOP_DIR/lib/config
+
# Determine what system we are running on. This provides ``os_VENDOR``,
# ``os_RELEASE``, ``os_UPDATE``, ``os_PACKAGE``, ``os_CODENAME``
# and ``DISTRO``
@@ -38,6 +41,25 @@
# Global Settings
# ===============
+# Check for a ``localrc`` section embedded in ``local.conf`` and extract if
+# ``localrc`` does not already exist
+
+# Phase: local
+rm -f $TOP_DIR/.localrc.auto
+if [[ -r $TOP_DIR/local.conf ]]; then
+ LRC=$(get_meta_section_files $TOP_DIR/local.conf local)
+ for lfile in $LRC; do
+ if [[ "$lfile" == "localrc" ]]; then
+ if [[ -r $TOP_DIR/localrc ]]; then
+ warn $LINENO "localrc and local.conf:[[local]] both exist, using localrc"
+ else
+ echo "# Generated file, do not exit" >$TOP_DIR/.localrc.auto
+ get_meta_section $TOP_DIR/local.conf local $lfile >>$TOP_DIR/.localrc.auto
+ fi
+ fi
+ done
+fi
+
# ``stack.sh`` is customizable by setting environment variables. Override a
# default setting via export::
#
@@ -842,6 +864,9 @@
fi
+# Start Services
+# ==============
+
# Keystone
# --------
@@ -1153,6 +1178,14 @@
fi
+# Local Configuration
+# ===================
+
+# Apply configuration from local.conf if it exists for layer 2 services
+# Phase: post-config
+merge_config_group $TOP_DIR/local.conf post-config
+
+
# Launch Services
# ===============
@@ -1348,6 +1381,14 @@
done
+# Local Configuration
+# ===================
+
+# Apply configuration from local.conf if it exists for layer 2 services
+# Phase: extra
+merge_config_group $TOP_DIR/local.conf extra
+
+
# Run extras
# ==========
@@ -1420,5 +1461,66 @@
echo_summary "WARNING: $DEPRECATED_TEXT"
fi
+# Specific warning for deprecated configs
+if [[ -n "$EXTRA_OPTS" ]]; then
+ echo ""
+ echo_summary "WARNING: EXTRA_OPTS is used"
+ echo "You are using EXTRA_OPTS to pass configuration into nova.conf."
+ echo "Please convert that configuration in localrc to a nova.conf section in local.conf:"
+ echo "
+[[post-config|\$NOVA_CONF]]
+[DEFAULT]
+"
+ for I in "${EXTRA_OPTS[@]}"; do
+ # Replace the first '=' with ' ' for iniset syntax
+ echo ${I}
+ done
+fi
+
+if [[ -n "$EXTRA_BAREMETAL_OPTS" ]]; then
+ echo ""
+ echo_summary "WARNING: EXTRA_OPTS is used"
+ echo "You are using EXTRA_OPTS to pass configuration into nova.conf."
+ echo "Please convert that configuration in localrc to a nova.conf section in local.conf:"
+ echo "
+[[post-config|\$NOVA_CONF]]
+[baremetal]
+"
+ for I in "${EXTRA_BAREMETAL_OPTS[@]}"; do
+ # Replace the first '=' with ' ' for iniset syntax
+ echo ${I}
+ done
+fi
+
+if [[ -n "$Q_DHCP_EXTRA_DEFAULT_OPTS" ]]; then
+ echo ""
+ echo_summary "WARNING: Q_DHCP_EXTRA_DEFAULT_OPTS is used"
+ echo "You are using Q_DHCP_EXTRA_DEFAULT_OPTS to pass configuration into $Q_DHCP_CONF_FILE."
+ echo "Please convert that configuration in localrc to a $Q_DHCP_CONF_FILE section in local.conf:"
+ echo "
+[[post-config|\$Q_DHCP_CONF_FILE]]
+[DEFAULT]
+"
+ for I in "${Q_DHCP_EXTRA_DEFAULT_OPTS[@]}"; do
+ # Replace the first '=' with ' ' for iniset syntax
+ echo ${I}
+ done
+fi
+
+if [[ -n "$Q_SRV_EXTRA_DEFAULT_OPTS" ]]; then
+ echo ""
+ echo_summary "WARNING: Q_SRV_EXTRA_DEFAULT_OPTS is used"
+ echo "You are using Q_SRV_EXTRA_DEFAULT_OPTS to pass configuration into $NEUTRON_CONF."
+ echo "Please convert that configuration in localrc to a $NEUTRON_CONF section in local.conf:"
+ echo "
+[[post-config|\$NEUTRON_CONF]]
+[DEFAULT]
+"
+ for I in "${Q_SRV_EXTRA_DEFAULT_OPTS[@]}"; do
+ # Replace the first '=' with ' ' for iniset syntax
+ echo ${I}
+ done
+fi
+
# Indicate how long this took to run (bash maintained variable ``SECONDS``)
echo_summary "stack.sh completed in $SECONDS seconds."