@@ -85,6 +85,20 @@ NEUTRON_CONF_DIR=/etc/neutron
8585NEUTRON_CONF=$NEUTRON_CONF_DIR/neutron.conf
8686export NEUTRON_TEST_CONFIG_FILE=${NEUTRON_TEST_CONFIG_FILE:-"$NEUTRON_CONF_DIR/debug.ini"}
8787
88+ # Agent binaries. Note, binary paths for other agents are set in per-service
89+ # scripts in lib/neutron_plugins/services/
90+ AGENT_DHCP_BINARY="$NEUTRON_BIN_DIR/neutron-dhcp-agent"
91+ AGENT_L3_BINARY=${AGENT_L3_BINARY:-"$NEUTRON_BIN_DIR/neutron-l3-agent"}
92+ AGENT_META_BINARY="$NEUTRON_BIN_DIR/neutron-metadata-agent"
93+
94+ # Agent config files. Note, plugin-specific Q_PLUGIN_CONF_FILE is set and
95+ # loaded from per-plugin scripts in lib/neutron_plugins/
96+ Q_DHCP_CONF_FILE=$NEUTRON_CONF_DIR/dhcp_agent.ini
97+ Q_L3_CONF_FILE=$NEUTRON_CONF_DIR/l3_agent.ini
98+ Q_FWAAS_CONF_FILE=$NEUTRON_CONF_DIR/fwaas_driver.ini
99+ Q_VPN_CONF_FILE=$NEUTRON_CONF_DIR/vpn_agent.ini
100+ Q_META_CONF_FILE=$NEUTRON_CONF_DIR/metadata_agent.ini
101+
88102# Default name for Neutron database
89103Q_DB_NAME=${Q_DB_NAME:-neutron}
90104# Default Neutron Plugin
@@ -290,6 +304,51 @@ set +o xtrace
290304# Functions
291305# ---------
292306
307+ function _determine_config_server {
308+ local cfg_file
309+ local opts="--config-file $NEUTRON_CONF --config-file /$Q_PLUGIN_CONF_FILE"
310+ for cfg_file in ${Q_PLUGIN_EXTRA_CONF_FILES[@]}; do
311+ opts+=" --config-file /$cfg_file"
312+ done
313+ echo "$opts"
314+ }
315+
316+ function _determine_config_vpn {
317+ local cfg_file
318+ local opts="--config-file $NEUTRON_CONF --config-file=$Q_L3_CONF_FILE --config-file=$Q_VPN_CONF_FILE"
319+ if is_service_enabled q-fwaas; then
320+ opts+=" --config-file $Q_FWAAS_CONF_FILE"
321+ fi
322+ for cfg_file in ${Q_VPN_EXTRA_CONF_FILES[@]}; do
323+ opts+=" --config-file $cfg_file"
324+ done
325+ echo "$opts"
326+
327+ }
328+
329+ function _determine_config_l3 {
330+ local opts="--config-file $NEUTRON_CONF --config-file=$Q_L3_CONF_FILE"
331+ if is_service_enabled q-fwaas; then
332+ opts+=" --config-file $Q_FWAAS_CONF_FILE"
333+ fi
334+ echo "$opts"
335+ }
336+
337+ # For services and agents that require it, dynamically construct a list of
338+ # --config-file arguments that are passed to the binary.
339+ function determine_config_files {
340+ local opts=""
341+ case "$1" in
342+ "neutron-server") opts="$(_determine_config_server)" ;;
343+ "neutron-vpn-agent") opts="$(_determine_config_vpn)" ;;
344+ "neutron-l3-agent") opts="$(_determine_config_l3)" ;;
345+ esac
346+ if [ -z "$opts" ] ; then
347+ die $LINENO "Could not determine config files for $1."
348+ fi
349+ echo "$opts"
350+ }
351+
293352# Test if any Neutron services are enabled
294353# is_neutron_enabled
295354function is_neutron_enabled {
@@ -530,14 +589,9 @@ function install_neutron_agent_packages {
530589
531590# Start running processes, including screen
532591function start_neutron_service_and_check {
533- # build config-file options
534- local cfg_file
535- local CFG_FILE_OPTIONS="--config-file $NEUTRON_CONF --config-file /$Q_PLUGIN_CONF_FILE"
536- for cfg_file in ${Q_PLUGIN_EXTRA_CONF_FILES[@]}; do
537- CFG_FILE_OPTIONS+=" --config-file /$cfg_file"
538- done
592+ local cfg_file_options="$(determine_config_files neutron-server)"
539593 # Start the Neutron service
540- screen_it q-svc "cd $NEUTRON_DIR && python $NEUTRON_BIN_DIR/neutron-server $CFG_FILE_OPTIONS "
594+ screen_it q-svc "cd $NEUTRON_DIR && python $NEUTRON_BIN_DIR/neutron-server $cfg_file_options "
541595 echo "Waiting for Neutron to start..."
542596 if ! timeout $SERVICE_TIMEOUT sh -c "while ! wget --no-proxy -q -O- http://$Q_HOST:$Q_PORT; do sleep 1; done"; then
543597 die $LINENO "Neutron did not start"
@@ -550,23 +604,17 @@ function start_neutron_agents {
550604 screen_it q-agt "cd $NEUTRON_DIR && python $AGENT_BINARY --config-file $NEUTRON_CONF --config-file /$Q_PLUGIN_CONF_FILE"
551605 screen_it q-dhcp "cd $NEUTRON_DIR && python $AGENT_DHCP_BINARY --config-file $NEUTRON_CONF --config-file=$Q_DHCP_CONF_FILE"
552606
553- L3_CONF_FILES="--config-file $NEUTRON_CONF --config-file=$Q_L3_CONF_FILE"
554-
555607 if is_provider_network; then
556608 sudo ovs-vsctl add-port $OVS_PHYSICAL_BRIDGE $PUBLIC_INTERFACE
557609 sudo ip link set $OVS_PHYSICAL_BRIDGE up
558610 sudo ip link set br-int up
559611 sudo ip link set $PUBLIC_INTERFACE up
560612 fi
561613
562- if is_service_enabled q-fwaas; then
563- L3_CONF_FILES="$L3_CONF_FILES --config-file $Q_FWAAS_CONF_FILE"
564- VPN_CONF_FILES="$VPN_CONF_FILES --config-file $Q_FWAAS_CONF_FILE"
565- fi
566614 if is_service_enabled q-vpn; then
567- screen_it q-vpn "cd $NEUTRON_DIR && $AGENT_VPN_BINARY $VPN_CONF_FILES "
615+ screen_it q-vpn "cd $NEUTRON_DIR && $AGENT_VPN_BINARY $(determine_config_files neutron-vpn-agent) "
568616 else
569- screen_it q-l3 "cd $NEUTRON_DIR && python $AGENT_L3_BINARY $L3_CONF_FILES "
617+ screen_it q-l3 "cd $NEUTRON_DIR && python $AGENT_L3_BINARY $(determine_config_files neutron-l3-agent) "
570618 fi
571619
572620 screen_it q-meta "cd $NEUTRON_DIR && python $AGENT_META_BINARY --config-file $NEUTRON_CONF --config-file=$Q_META_CONF_FILE"
@@ -703,8 +751,6 @@ function _configure_neutron_debug_command {
703751}
704752
705753function _configure_neutron_dhcp_agent {
706- AGENT_DHCP_BINARY="$NEUTRON_BIN_DIR/neutron-dhcp-agent"
707- Q_DHCP_CONF_FILE=$NEUTRON_CONF_DIR/dhcp_agent.ini
708754
709755 cp $NEUTRON_DIR/etc/dhcp_agent.ini $Q_DHCP_CONF_FILE
710756
@@ -724,20 +770,8 @@ function _configure_neutron_l3_agent {
724770 # for l3-agent, only use per tenant router if we have namespaces
725771 Q_L3_ROUTER_PER_TENANT=$Q_USE_NAMESPACE
726772
727- AGENT_L3_BINARY=${AGENT_L3_BINARY:-"$NEUTRON_BIN_DIR/neutron-l3-agent"}
728- Q_L3_CONF_FILE=$NEUTRON_CONF_DIR/l3_agent.ini
729-
730- if is_service_enabled q-fwaas; then
731- Q_FWAAS_CONF_FILE=$NEUTRON_CONF_DIR/fwaas_driver.ini
732- fi
733-
734773 if is_service_enabled q-vpn; then
735- Q_VPN_CONF_FILE=$NEUTRON_CONF_DIR/vpn_agent.ini
736774 cp $NEUTRON_DIR/etc/vpn_agent.ini $Q_VPN_CONF_FILE
737- VPN_CONF_FILES="--config-file $NEUTRON_CONF --config-file=$Q_L3_CONF_FILE --config-file=$Q_VPN_CONF_FILE"
738- for cfg_file in ${Q_VPN_EXTRA_CONF_FILES[@]}; do
739- VPN_CONF_FILES+=" --config-file $cfg_file"
740- done
741775 fi
742776
743777 cp $NEUTRON_DIR/etc/l3_agent.ini $Q_L3_CONF_FILE
@@ -753,9 +787,6 @@ function _configure_neutron_l3_agent {
753787}
754788
755789function _configure_neutron_metadata_agent {
756- AGENT_META_BINARY="$NEUTRON_BIN_DIR/neutron-metadata-agent"
757- Q_META_CONF_FILE=$NEUTRON_CONF_DIR/metadata_agent.ini
758-
759790 cp $NEUTRON_DIR/etc/metadata_agent.ini $Q_META_CONF_FILE
760791
761792 iniset $Q_META_CONF_FILE DEFAULT verbose True
0 commit comments