Browse code

Quantum FloodLight/BigSwitch Plugin Support

The patch introduces devstack support for the Quantum FloodLight/BigSwitch
RESTProxy Plugin.

Change-Id: I8c032fd16723ed6055821de0860fae508df371b7
Implements: blueprint quantum-floodlight-bigswitch-plugin-support

Sumit Naiksatam authored on 2013/01/05 03:32:54
Showing 3 changed files
... ...
@@ -35,6 +35,7 @@ Matt Joyce <matt.joyce@cloudscaling.com>
35 35
 Osamu Habuka <xiu.yushen@gmail.com>
36 36
 Russell Bryant <rbryant@redhat.com>
37 37
 Scott Moser <smoser@ubuntu.com>
38
+Sumit Naiksatam <sumitnaiksatam@gmail.com>
38 39
 Thierry Carrez <thierry@openstack.org>
39 40
 Todd Willey <xtoddx@gmail.com>
40 41
 Tres Henry <tres@treshenry.net>
41 42
new file mode 100644
... ...
@@ -0,0 +1,50 @@
0
+# Big Switch/FloodLight  OpenFlow Controller
1
+# ------------------------------------------
2
+
3
+# Save trace setting
4
+XTRACE=$(set +o | grep xtrace)
5
+set +o xtrace
6
+
7
+BS_FL_CONTROLLERS_PORT=${BS_FL_CONTROLLERS_PORT:-localhost:80}
8
+BS_FL_OF_PORT=${BS_FL_OF_PORT:-6633}
9
+OVS_BRIDGE=${OVS_BRIDGE:-br-int}
10
+
11
+function configure_bigswitch_floodlight() {
12
+    :
13
+}
14
+
15
+function init_bigswitch_floodlight() {
16
+    install_quantum_agent_packages
17
+
18
+    echo -n "Installing OVS managed by the openflow controllers:"
19
+    echo ${BS_FL_CONTROLLERS_PORT}
20
+
21
+    # Create local OVS bridge and configure it
22
+    sudo ovs-vsctl --no-wait -- --if-exists del-br ${OVS_BRIDGE}
23
+    sudo ovs-vsctl --no-wait add-br ${OVS_BRIDGE}
24
+    sudo ovs-vsctl --no-wait br-set-external-id ${OVS_BRIDGE} bridge-id ${OVS_BRIDGE}
25
+
26
+    ctrls=
27
+    for ctrl in `echo ${BS_FL_CONTROLLERS_PORT} | tr ',' ' '`
28
+    do
29
+        ctrl=${ctrl%:*}
30
+        ctrls="${ctrls} tcp:${ctrl}:${BS_FL_OF_PORT}"
31
+    done
32
+    echo "Adding Network conttrollers: " ${ctrls}
33
+    sudo ovs-vsctl --no-wait set-controller ${OVS_BRIDGE} ${ctrls}
34
+}
35
+
36
+function install_bigswitch_floodlight() {
37
+    :
38
+}
39
+
40
+function start_bigswitch_floodlight() {
41
+    :
42
+}
43
+
44
+function stop_bigswitch_floodlight() {
45
+    :
46
+}
47
+
48
+# Restore xtrace
49
+$XTRACE
... ...
@@ -217,6 +217,8 @@ function create_nova_conf_quantum() {
217 217
         iniset $NOVA_CONF DEFAULT libvirt_ovs_integration_bridge "$OVS_BRIDGE"
218 218
         iniset $NOVA_CONF DEFAULT linuxnet_ovs_ryu_api_host "$RYU_API_HOST:$RYU_API_PORT"
219 219
         iniset $NOVA_CONF DEFAULT libvirt_ovs_ryu_api_host "$RYU_API_HOST:$RYU_API_PORT"
220
+    elif [[ "$Q_PLUGIN" = "bigswitch_floodlight" ]]; then
221
+        NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver"}
220 222
     fi
221 223
     iniset $NOVA_CONF DEFAULT libvirt_vif_driver "$NOVA_VIF_DRIVER"
222 224
     iniset $NOVA_CONF DEFAULT linuxnet_interface_driver "$LINUXNET_VIF_DRIVER"
... ...
@@ -332,7 +334,7 @@ function install_quantum_agent_packages() {
332 332
 
333 333
 function is_quantum_ovs_base_plugin() {
334 334
     local plugin=$1
335
-    if [[ ",openvswitch,ryu," =~ ,${plugin}, ]]; then
335
+    if [[ ",openvswitch,ryu,bigswitch_floodlight," =~ ,${plugin}, ]]; then
336 336
         return 0
337 337
     fi
338 338
     return 1
... ...
@@ -407,6 +409,13 @@ function _configure_quantum_common() {
407 407
         Q_PLUGIN_CONF_FILENAME=ryu.ini
408 408
         Q_DB_NAME="ovs_quantum"
409 409
         Q_PLUGIN_CLASS="quantum.plugins.ryu.ryu_quantum_plugin.RyuQuantumPluginV2"
410
+    elif [[ "$Q_PLUGIN" = "bigswitch_floodlight" ]]; then
411
+        Q_PLUGIN_CONF_PATH=etc/quantum/plugins/bigswitch
412
+        Q_PLUGIN_CONF_FILENAME=restproxy.ini
413
+        Q_DB_NAME="restproxy_quantum"
414
+        Q_PLUGIN_CLASS="quantum.plugins.bigswitch.plugin.QuantumRestProxyV2"
415
+        BS_FL_CONTROLLERS_PORT=${BS_FL_CONTROLLERS_PORT:-localhost:80}
416
+        BS_FL_CONTROLLER_TIMEOUT=${BS_FL_CONTROLLER_TIMEOUT:-10}
410 417
     fi
411 418
 
412 419
     if [[ $Q_PLUGIN_CONF_PATH == '' || $Q_PLUGIN_CONF_FILENAME == '' || $Q_PLUGIN_CLASS == '' ]]; then
... ...
@@ -674,6 +683,9 @@ function _configure_quantum_service() {
674 674
     elif [[ "$Q_PLUGIN" = "ryu" ]]; then
675 675
         iniset /$Q_PLUGIN_CONF_FILE OVS openflow_controller $RYU_OFP_HOST:$RYU_OFP_PORT
676 676
         iniset /$Q_PLUGIN_CONF_FILE OVS openflow_rest_api $RYU_API_HOST:$RYU_API_PORT
677
+    elif [[ "$Q_PLUGIN" = "bigswitch_floodlight" ]]; then
678
+        iniset /$Q_PLUGIN_CONF_FILE RESTPROXY servers $BS_FL_CONTROLLERS_PORT
679
+        iniset /$Q_PLUGIN_CONF_FILE RESTPROXY servertimeout $BS_FL_CONTROLLER_TIMEOUT
677 680
     fi
678 681
 }
679 682
 
... ...
@@ -749,6 +761,8 @@ function _quantum_setup_interface_driver() {
749 749
         iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.BridgeInterfaceDriver
750 750
     elif [[ "$Q_PLUGIN" = "ryu" ]]; then
751 751
         iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.RyuInterfaceDriver
752
+    elif [[ "$Q_PLUGIN" = "bigswitch_floodlight" ]]; then
753
+        iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.OVSInterfaceDriver
752 754
     fi
753 755
 }
754 756
 
... ...
@@ -835,7 +849,7 @@ function _ssh_check_quantum() {
835 835
 # Quantum 3rd party programs
836 836
 #---------------------------
837 837
 # A comma-separated list of 3rd party programs
838
-QUANTUM_THIRD_PARTIES="ryu"
838
+QUANTUM_THIRD_PARTIES="ryu,bigswitch_floodlight"
839 839
 for third_party in ${QUANTUM_THIRD_PARTIES//,/ }; do
840 840
     source lib/$third_party
841 841
 done