From 19f4b3faae5f64a497bf6c13fb29b65301ae499c Mon Sep 17 00:00:00 2001 From: Ihar Hrachyshka Date: Thu, 23 Feb 2017 20:44:18 +0000 Subject: [PATCH] lib/neutron: stop loading all config files into all processes DHCP agent should not load core plugin config file; L3 agent has no interest in metadata agent configuration file; etc. It's a mistake to form a single global list of configuration files and pass it into all processes. Every process should have its own list, that may or may not have some files in common with other processes. The only file that is common to all neutron processes is neutron.conf, and we could in theory keep it into the common list. But I decided at this point it's better to be explicit about what's loaded into services. Also the order of arguments is important, and neutron.conf should always be the first CLI argument, which is hard to achieve by keeping neutron.conf file in the global list. Plugins may be interested in loading additional files into neutron processes. For example, dragonflow needs to load /etc/neutron/dragonflow.ini into neutron-server. But we should not necessarily load all those files into all processes, so such extendable lists should be per process. Besides, neutron_server_config_add_new is already available to use to append additional configuration files for neutron-server. That's why the patch completely kills the NEUTRON_CONFIG_ARG variable. Depends-On: I4bd54a41a45486a5601373f9a9cce74d7686d1aa Change-Id: Ia3c3862399bba335db5edf9ea70f850fb2638d09 --- lib/neutron | 40 ++++++---------------------------------- 1 file changed, 6 insertions(+), 34 deletions(-) diff --git a/lib/neutron b/lib/neutron index 19568eaf25..d80e9d90a1 100644 --- a/lib/neutron +++ b/lib/neutron @@ -70,9 +70,6 @@ NEUTRON_ROOTWRAP=$(get_rootwrap_location neutron) NEUTRON_ROOTWRAP_CONF_FILE=$NEUTRON_CONF_DIR/rootwrap.conf NEUTRON_ROOTWRAP_DAEMON_CMD="sudo $NEUTRON_ROOTWRAP-daemon $NEUTRON_ROOTWRAP_CONF_FILE" -# Add all enabled config files to a single config arg -NEUTRON_CONFIG_ARG=${NEUTRON_CONFIG_ARG:-""} - # Additional neutron api config files declare -a _NEUTRON_SERVER_EXTRA_CONF_FILES_ABS @@ -347,7 +344,7 @@ function init_neutron_new { recreate_database neutron # Run Neutron db migrations - $NEUTRON_BIN_DIR/neutron-db-manage $NEUTRON_CONFIG_ARG upgrade heads + $NEUTRON_BIN_DIR/neutron-db-manage upgrade heads create_neutron_cache_dir } @@ -426,20 +423,19 @@ function start_neutron_api { # start_neutron() - Start running processes, including screen function start_neutron_new { - _set_config_files - # Start up the neutron agents if enabled # TODO(sc68cal) Make this pluggable so different DevStack plugins for different Neutron plugins # can resolve the $NEUTRON_AGENT_BINARY if is_service_enabled neutron-agent; then - run_process neutron-agent "$NEUTRON_BIN_DIR/$NEUTRON_AGENT_BINARY $NEUTRON_CONFIG_ARG" + # TODO(ihrachys) stop loading ml2_conf.ini into agents, instead load agent specific files + run_process neutron-agent "$NEUTRON_BIN_DIR/$NEUTRON_AGENT_BINARY --config-file $NEUTRON_CONF --config-file $NEUTRON_CORE_PLUGIN_CONF" fi if is_service_enabled neutron-dhcp; then neutron_plugin_configure_dhcp_agent $NEUTRON_DHCP_CONF - run_process neutron-dhcp "$NEUTRON_BIN_DIR/$NEUTRON_DHCP_BINARY $NEUTRON_CONFIG_ARG" + run_process neutron-dhcp "$NEUTRON_BIN_DIR/$NEUTRON_DHCP_BINARY --config-file $NEUTRON_CONF --config-file $NEUTRON_DHCP_CONF" fi if is_service_enabled neutron-l3; then - run_process neutron-l3 "$NEUTRON_BIN_DIR/$NEUTRON_L3_BINARY $NEUTRON_CONFIG_ARG" + run_process neutron-l3 "$NEUTRON_BIN_DIR/$NEUTRON_L3_BINARY --config-file $NEUTRON_CONF --config-file $NEUTRON_L3_CONF" fi if is_service_enabled neutron-api; then # XXX(sc68cal) - Here's where plugins can wire up their own networks instead @@ -454,7 +450,7 @@ function start_neutron_new { fi fi if is_service_enabled neutron-metadata-agent; then - run_process neutron-metadata-agent "$NEUTRON_BIN_DIR/$NEUTRON_META_BINARY $NEUTRON_CONFIG_ARG" + run_process neutron-metadata-agent "$NEUTRON_BIN_DIR/$NEUTRON_META_BINARY --config-file $NEUTRON_CONF --config-file $NEUTRON_META_CONF" fi if is_service_enabled neutron-metering; then @@ -480,30 +476,6 @@ function stop_neutron_new { fi } -# Compile the lost of enabled config files -function _set_config_files { - - NEUTRON_CONFIG_ARG+=" --config-file $NEUTRON_CONF" - - #TODO(sc68cal) OVS and LB agent uses settings in NEUTRON_CORE_PLUGIN_CONF (ml2_conf.ini) but others may not - if is_service_enabled neutron-agent; then - NEUTRON_CONFIG_ARG+=" --config-file $NEUTRON_CORE_PLUGIN_CONF" - fi - - if is_service_enabled neutron-dhcp; then - NEUTRON_CONFIG_ARG+=" --config-file $NEUTRON_DHCP_CONF" - fi - - if is_service_enabled neutron-l3; then - NEUTRON_CONFIG_ARG+=" --config-file $NEUTRON_L3_CONF" - fi - - if is_service_enabled neutron-metadata-agent; then - NEUTRON_CONFIG_ARG+=" --config-file $NEUTRON_META_CONF" - fi - -} - # neutron_service_plugin_class_add() - add service plugin class function neutron_service_plugin_class_add_new { local service_plugin_class=$1