Browse code

Merge "Centralize neutron config file argument generation"

Jenkins authored on 2014/08/26 06:59:50
Showing 1 changed files
... ...
@@ -85,6 +85,20 @@ NEUTRON_CONF_DIR=/etc/neutron
85 85
 NEUTRON_CONF=$NEUTRON_CONF_DIR/neutron.conf
86 86
 export NEUTRON_TEST_CONFIG_FILE=${NEUTRON_TEST_CONFIG_FILE:-"$NEUTRON_CONF_DIR/debug.ini"}
87 87
 
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
+
88 102
 # Default name for Neutron database
89 103
 Q_DB_NAME=${Q_DB_NAME:-neutron}
90 104
 # Default Neutron Plugin
... ...
@@ -290,6 +304,51 @@ set +o xtrace
290 290
 # Functions
291 291
 # ---------
292 292
 
293
+function _determine_config_server {
294
+    local cfg_file
295
+    local opts="--config-file $NEUTRON_CONF --config-file /$Q_PLUGIN_CONF_FILE"
296
+    for cfg_file in ${Q_PLUGIN_EXTRA_CONF_FILES[@]}; do
297
+        opts+=" --config-file /$cfg_file"
298
+    done
299
+    echo "$opts"
300
+}
301
+
302
+function _determine_config_vpn {
303
+    local cfg_file
304
+    local opts="--config-file $NEUTRON_CONF --config-file=$Q_L3_CONF_FILE --config-file=$Q_VPN_CONF_FILE"
305
+    if is_service_enabled q-fwaas; then
306
+        opts+=" --config-file $Q_FWAAS_CONF_FILE"
307
+    fi
308
+    for cfg_file in ${Q_VPN_EXTRA_CONF_FILES[@]}; do
309
+        opts+=" --config-file $cfg_file"
310
+    done
311
+    echo "$opts"
312
+
313
+}
314
+
315
+function _determine_config_l3 {
316
+    local opts="--config-file $NEUTRON_CONF --config-file=$Q_L3_CONF_FILE"
317
+    if is_service_enabled q-fwaas; then
318
+        opts+=" --config-file $Q_FWAAS_CONF_FILE"
319
+    fi
320
+    echo "$opts"
321
+}
322
+
323
+# For services and agents that require it, dynamically construct a list of
324
+# --config-file arguments that are passed to the binary.
325
+function determine_config_files {
326
+    local opts=""
327
+    case "$1" in
328
+        "neutron-server") opts="$(_determine_config_server)" ;;
329
+        "neutron-vpn-agent") opts="$(_determine_config_vpn)" ;;
330
+        "neutron-l3-agent") opts="$(_determine_config_l3)" ;;
331
+    esac
332
+    if [ -z "$opts" ] ; then
333
+        die $LINENO "Could not determine config files for $1."
334
+    fi
335
+    echo "$opts"
336
+}
337
+
293 338
 # Test if any Neutron services are enabled
294 339
 # is_neutron_enabled
295 340
 function is_neutron_enabled {
... ...
@@ -530,14 +589,9 @@ function install_neutron_agent_packages {
530 530
 
531 531
 # Start running processes, including screen
532 532
 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
533
+    local cfg_file_options="$(determine_config_files neutron-server)"
539 534
     # Start the Neutron service
540
-    screen_it q-svc "cd $NEUTRON_DIR && python $NEUTRON_BIN_DIR/neutron-server $CFG_FILE_OPTIONS"
535
+    screen_it q-svc "cd $NEUTRON_DIR && python $NEUTRON_BIN_DIR/neutron-server $cfg_file_options"
541 536
     echo "Waiting for Neutron to start..."
542 537
     if ! timeout $SERVICE_TIMEOUT sh -c "while ! wget --no-proxy -q -O- http://$Q_HOST:$Q_PORT; do sleep 1; done"; then
543 538
         die $LINENO "Neutron did not start"
... ...
@@ -550,8 +604,6 @@ function start_neutron_agents {
550 550
     screen_it q-agt "cd $NEUTRON_DIR && python $AGENT_BINARY --config-file $NEUTRON_CONF --config-file /$Q_PLUGIN_CONF_FILE"
551 551
     screen_it q-dhcp "cd $NEUTRON_DIR && python $AGENT_DHCP_BINARY --config-file $NEUTRON_CONF --config-file=$Q_DHCP_CONF_FILE"
552 552
 
553
-    L3_CONF_FILES="--config-file $NEUTRON_CONF --config-file=$Q_L3_CONF_FILE"
554
-
555 553
     if is_provider_network; then
556 554
         sudo ovs-vsctl add-port $OVS_PHYSICAL_BRIDGE $PUBLIC_INTERFACE
557 555
         sudo ip link set $OVS_PHYSICAL_BRIDGE up
... ...
@@ -559,14 +611,10 @@ function start_neutron_agents {
559 559
         sudo ip link set $PUBLIC_INTERFACE up
560 560
     fi
561 561
 
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
566 562
     if is_service_enabled q-vpn; then
567
-        screen_it q-vpn "cd $NEUTRON_DIR && $AGENT_VPN_BINARY $VPN_CONF_FILES"
563
+        screen_it q-vpn "cd $NEUTRON_DIR && $AGENT_VPN_BINARY $(determine_config_files neutron-vpn-agent)"
568 564
     else
569
-        screen_it q-l3 "cd $NEUTRON_DIR && python $AGENT_L3_BINARY $L3_CONF_FILES"
565
+        screen_it q-l3 "cd $NEUTRON_DIR && python $AGENT_L3_BINARY $(determine_config_files neutron-l3-agent)"
570 566
     fi
571 567
 
572 568
     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 {
703 703
 }
704 704
 
705 705
 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
708 706
 
709 707
     cp $NEUTRON_DIR/etc/dhcp_agent.ini $Q_DHCP_CONF_FILE
710 708
 
... ...
@@ -724,20 +770,8 @@ function _configure_neutron_l3_agent {
724 724
     # for l3-agent, only use per tenant router if we have namespaces
725 725
     Q_L3_ROUTER_PER_TENANT=$Q_USE_NAMESPACE
726 726
 
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
-
734 727
     if is_service_enabled q-vpn; then
735
-        Q_VPN_CONF_FILE=$NEUTRON_CONF_DIR/vpn_agent.ini
736 728
         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
741 729
     fi
742 730
 
743 731
     cp $NEUTRON_DIR/etc/l3_agent.ini $Q_L3_CONF_FILE
... ...
@@ -753,9 +787,6 @@ function _configure_neutron_l3_agent {
753 753
 }
754 754
 
755 755
 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
-
759 756
     cp $NEUTRON_DIR/etc/metadata_agent.ini $Q_META_CONF_FILE
760 757
 
761 758
     iniset $Q_META_CONF_FILE DEFAULT verbose True