Browse code

Implements blueprint quantum-lbaas-plugin-support

Add support for quantum lbaas plugin.
Configure service_plugins and lbaas agent
in case q-lbaas service is enabled in localrc

Change-Id: Iebaa1ed6a7209175504230faf802a94dc841392f

Eugene Nikanorov authored on 2013/03/06 21:28:33
Showing 2 changed files
... ...
@@ -176,6 +176,11 @@ fi
176 176
 # Please refer to lib/quantum_plugins/README.md for details.
177 177
 source $TOP_DIR/lib/quantum_plugins/$Q_PLUGIN
178 178
 
179
+# Agent loadbalancer service plugin functions
180
+# -------------------------------------------
181
+# Hardcoding for 1 service plugin for now
182
+source $TOP_DIR/lib/quantum_plugins/agent_loadbalancer
183
+
179 184
 # Entry Points
180 185
 # ------------
181 186
 
... ...
@@ -185,6 +190,10 @@ function configure_quantum() {
185 185
     _configure_quantum_common
186 186
     iniset_rpc_backend quantum $QUANTUM_CONF DEFAULT
187 187
 
188
+    # goes before q-svc to init Q_SERVICE_PLUGIN_CLASSES
189
+    if is_service_enabled q-lbaas; then
190
+        _configure_quantum_lbaas
191
+    fi
188 192
     if is_service_enabled q-svc; then
189 193
         _configure_quantum_service
190 194
     fi
... ...
@@ -362,6 +371,10 @@ function start_quantum_agents() {
362 362
     screen_it q-dhcp "python $AGENT_DHCP_BINARY --config-file $QUANTUM_CONF --config-file=$Q_DHCP_CONF_FILE"
363 363
     screen_it q-meta "python $AGENT_META_BINARY --config-file $QUANTUM_CONF --config-file=$Q_META_CONF_FILE"
364 364
     screen_it q-l3 "python $AGENT_L3_BINARY --config-file $QUANTUM_CONF --config-file=$Q_L3_CONF_FILE"
365
+
366
+    if is_service_enabled q-lbaas; then
367
+        screen_it q-lbaas "python $AGENT_LBAAS_BINARY --config-file $QUANTUM_CONF --config-file=$LBAAS_AGENT_CONF_FILENAME"
368
+    fi
365 369
 }
366 370
 
367 371
 # stop_quantum() - Stop running processes (non-screen)
... ...
@@ -483,6 +496,13 @@ function _configure_quantum_metadata_agent() {
483 483
     _quantum_setup_keystone $Q_META_CONF_FILE DEFAULT set_auth_url
484 484
 }
485 485
 
486
+function _configure_quantum_lbaas()
487
+{
488
+    quantum_agent_lbaas_install_agent_packages
489
+    quantum_agent_lbaas_configure_common
490
+    quantum_agent_lbaas_configure_agent
491
+}
492
+
486 493
 # _configure_quantum_plugin_agent() - Set config files for quantum plugin agent
487 494
 # It is called when q-agt is enabled.
488 495
 function _configure_quantum_plugin_agent() {
... ...
@@ -512,6 +532,10 @@ function _configure_quantum_service() {
512 512
     # Update either configuration file with plugin
513 513
     iniset $QUANTUM_CONF DEFAULT core_plugin $Q_PLUGIN_CLASS
514 514
 
515
+    if [[ $Q_SERVICE_PLUGIN_CLASSES != '' ]]; then
516
+        iniset $QUANTUM_CONF DEFAULT service_plugins $Q_SERVICE_PLUGIN_CLASSES
517
+    fi
518
+
515 519
     iniset $QUANTUM_CONF DEFAULT verbose True
516 520
     iniset $QUANTUM_CONF DEFAULT debug True
517 521
     iniset $QUANTUM_CONF DEFAULT state_path $DATA_DIR/quantum
518 522
new file mode 100644
... ...
@@ -0,0 +1,45 @@
0
+# Quantum loadbalancer plugin
1
+# ---------------------------
2
+
3
+# Save trace setting
4
+MY_XTRACE=$(set +o | grep xtrace)
5
+set +o xtrace
6
+
7
+
8
+AGENT_LBAAS_BINARY="$QUANTUM_DIR/bin/quantum-lbaas-agent"
9
+
10
+function quantum_agent_lbaas_install_agent_packages() {
11
+    if is_ubuntu || is_fedora; then
12
+        install_package haproxy
13
+    fi
14
+}
15
+
16
+function quantum_agent_lbaas_configure_common() {
17
+    if [[ $Q_SERVICE_PLUGIN_CLASSES == '' ]]; then
18
+        Q_SERVICE_PLUGIN_CLASSES="quantum.plugins.services.agent_loadbalancer.plugin.LoadBalancerPlugin"
19
+    else
20
+        Q_SERVICE_PLUGIN_CLASSES="$Q_SERVICE_PLUGIN_CLASSES,quantum.plugins.services.agent_loadbalancer.plugin.LoadBalancerPlugin"
21
+    fi
22
+}
23
+
24
+function quantum_agent_lbaas_configure_agent() {
25
+    LBAAS_AGENT_CONF_PATH=/etc/quantum/plugins/services/agent_loadbalancer
26
+    mkdir -p $LBAAS_AGENT_CONF_PATH
27
+
28
+    LBAAS_AGENT_CONF_FILENAME="$LBAAS_AGENT_CONF_PATH/lbaas_agent.ini"
29
+
30
+    cp $QUANTUM_DIR/etc/lbaas_agent.ini /$LBAAS_AGENT_CONF_FILENAME
31
+
32
+    if [[ $Q_PLUGIN == 'linuxbridge' || $Q_PLUGIN == 'brocade' ]]; then
33
+        iniset $LBAAS_AGENT_CONF_FILENAME DEFAULT interface_driver "quantum.agent.linux.interface.BridgeInterfaceDriver"
34
+    else
35
+        iniset $LBAAS_AGENT_CONF_FILENAME DEFAULT interface_driver "quantum.agent.linux.interface.OVSInterfaceDriver"
36
+    fi
37
+
38
+    if is_fedora; then
39
+        iniset $LBAAS_AGENT_CONF_FILENAME DEFAULT user_group "nobody"
40
+    fi
41
+}
42
+
43
+# Restore xtrace
44
+$MY_XTRACE