Skip to content

Commit ddcde92

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Centralize neutron config file argument generation"
2 parents 73ad94c + 7614d21 commit ddcde92

1 file changed

Lines changed: 63 additions & 32 deletions

File tree

lib/neutron

Lines changed: 63 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,20 @@ NEUTRON_CONF_DIR=/etc/neutron
8585
NEUTRON_CONF=$NEUTRON_CONF_DIR/neutron.conf
8686
export 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
89103
Q_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
295354
function is_neutron_enabled {
@@ -530,14 +589,9 @@ function install_neutron_agent_packages {
530589

531590
# Start running processes, including screen
532591
function 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

705753
function _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

755789
function _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

Comments
 (0)