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
This commit is contained in:
Sumit Naiksatam 2013-01-04 10:32:54 -08:00
parent eae8f82678
commit 4b26d3191e
3 changed files with 67 additions and 2 deletions

View File

@ -35,6 +35,7 @@ Matt Joyce <matt.joyce@cloudscaling.com>
Osamu Habuka <xiu.yushen@gmail.com> Osamu Habuka <xiu.yushen@gmail.com>
Russell Bryant <rbryant@redhat.com> Russell Bryant <rbryant@redhat.com>
Scott Moser <smoser@ubuntu.com> Scott Moser <smoser@ubuntu.com>
Sumit Naiksatam <sumitnaiksatam@gmail.com>
Thierry Carrez <thierry@openstack.org> Thierry Carrez <thierry@openstack.org>
Todd Willey <xtoddx@gmail.com> Todd Willey <xtoddx@gmail.com>
Tres Henry <tres@treshenry.net> Tres Henry <tres@treshenry.net>

50
lib/bigswitch_floodlight Normal file
View File

@ -0,0 +1,50 @@
# Big Switch/FloodLight OpenFlow Controller
# ------------------------------------------
# Save trace setting
XTRACE=$(set +o | grep xtrace)
set +o xtrace
BS_FL_CONTROLLERS_PORT=${BS_FL_CONTROLLERS_PORT:-localhost:80}
BS_FL_OF_PORT=${BS_FL_OF_PORT:-6633}
OVS_BRIDGE=${OVS_BRIDGE:-br-int}
function configure_bigswitch_floodlight() {
:
}
function init_bigswitch_floodlight() {
install_quantum_agent_packages
echo -n "Installing OVS managed by the openflow controllers:"
echo ${BS_FL_CONTROLLERS_PORT}
# Create local OVS bridge and configure it
sudo ovs-vsctl --no-wait -- --if-exists del-br ${OVS_BRIDGE}
sudo ovs-vsctl --no-wait add-br ${OVS_BRIDGE}
sudo ovs-vsctl --no-wait br-set-external-id ${OVS_BRIDGE} bridge-id ${OVS_BRIDGE}
ctrls=
for ctrl in `echo ${BS_FL_CONTROLLERS_PORT} | tr ',' ' '`
do
ctrl=${ctrl%:*}
ctrls="${ctrls} tcp:${ctrl}:${BS_FL_OF_PORT}"
done
echo "Adding Network conttrollers: " ${ctrls}
sudo ovs-vsctl --no-wait set-controller ${OVS_BRIDGE} ${ctrls}
}
function install_bigswitch_floodlight() {
:
}
function start_bigswitch_floodlight() {
:
}
function stop_bigswitch_floodlight() {
:
}
# Restore xtrace
$XTRACE

View File

@ -217,6 +217,8 @@ function create_nova_conf_quantum() {
iniset $NOVA_CONF DEFAULT libvirt_ovs_integration_bridge "$OVS_BRIDGE" iniset $NOVA_CONF DEFAULT libvirt_ovs_integration_bridge "$OVS_BRIDGE"
iniset $NOVA_CONF DEFAULT linuxnet_ovs_ryu_api_host "$RYU_API_HOST:$RYU_API_PORT" iniset $NOVA_CONF DEFAULT linuxnet_ovs_ryu_api_host "$RYU_API_HOST:$RYU_API_PORT"
iniset $NOVA_CONF DEFAULT libvirt_ovs_ryu_api_host "$RYU_API_HOST:$RYU_API_PORT" iniset $NOVA_CONF DEFAULT libvirt_ovs_ryu_api_host "$RYU_API_HOST:$RYU_API_PORT"
elif [[ "$Q_PLUGIN" = "bigswitch_floodlight" ]]; then
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver"}
fi fi
iniset $NOVA_CONF DEFAULT libvirt_vif_driver "$NOVA_VIF_DRIVER" iniset $NOVA_CONF DEFAULT libvirt_vif_driver "$NOVA_VIF_DRIVER"
iniset $NOVA_CONF DEFAULT linuxnet_interface_driver "$LINUXNET_VIF_DRIVER" iniset $NOVA_CONF DEFAULT linuxnet_interface_driver "$LINUXNET_VIF_DRIVER"
@ -332,7 +334,7 @@ function install_quantum_agent_packages() {
function is_quantum_ovs_base_plugin() { function is_quantum_ovs_base_plugin() {
local plugin=$1 local plugin=$1
if [[ ",openvswitch,ryu," =~ ,${plugin}, ]]; then if [[ ",openvswitch,ryu,bigswitch_floodlight," =~ ,${plugin}, ]]; then
return 0 return 0
fi fi
return 1 return 1
@ -407,6 +409,13 @@ function _configure_quantum_common() {
Q_PLUGIN_CONF_FILENAME=ryu.ini Q_PLUGIN_CONF_FILENAME=ryu.ini
Q_DB_NAME="ovs_quantum" Q_DB_NAME="ovs_quantum"
Q_PLUGIN_CLASS="quantum.plugins.ryu.ryu_quantum_plugin.RyuQuantumPluginV2" Q_PLUGIN_CLASS="quantum.plugins.ryu.ryu_quantum_plugin.RyuQuantumPluginV2"
elif [[ "$Q_PLUGIN" = "bigswitch_floodlight" ]]; then
Q_PLUGIN_CONF_PATH=etc/quantum/plugins/bigswitch
Q_PLUGIN_CONF_FILENAME=restproxy.ini
Q_DB_NAME="restproxy_quantum"
Q_PLUGIN_CLASS="quantum.plugins.bigswitch.plugin.QuantumRestProxyV2"
BS_FL_CONTROLLERS_PORT=${BS_FL_CONTROLLERS_PORT:-localhost:80}
BS_FL_CONTROLLER_TIMEOUT=${BS_FL_CONTROLLER_TIMEOUT:-10}
fi fi
if [[ $Q_PLUGIN_CONF_PATH == '' || $Q_PLUGIN_CONF_FILENAME == '' || $Q_PLUGIN_CLASS == '' ]]; then if [[ $Q_PLUGIN_CONF_PATH == '' || $Q_PLUGIN_CONF_FILENAME == '' || $Q_PLUGIN_CLASS == '' ]]; then
@ -674,6 +683,9 @@ function _configure_quantum_service() {
elif [[ "$Q_PLUGIN" = "ryu" ]]; then elif [[ "$Q_PLUGIN" = "ryu" ]]; then
iniset /$Q_PLUGIN_CONF_FILE OVS openflow_controller $RYU_OFP_HOST:$RYU_OFP_PORT iniset /$Q_PLUGIN_CONF_FILE OVS openflow_controller $RYU_OFP_HOST:$RYU_OFP_PORT
iniset /$Q_PLUGIN_CONF_FILE OVS openflow_rest_api $RYU_API_HOST:$RYU_API_PORT iniset /$Q_PLUGIN_CONF_FILE OVS openflow_rest_api $RYU_API_HOST:$RYU_API_PORT
elif [[ "$Q_PLUGIN" = "bigswitch_floodlight" ]]; then
iniset /$Q_PLUGIN_CONF_FILE RESTPROXY servers $BS_FL_CONTROLLERS_PORT
iniset /$Q_PLUGIN_CONF_FILE RESTPROXY servertimeout $BS_FL_CONTROLLER_TIMEOUT
fi fi
} }
@ -749,6 +761,8 @@ function _quantum_setup_interface_driver() {
iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.BridgeInterfaceDriver iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.BridgeInterfaceDriver
elif [[ "$Q_PLUGIN" = "ryu" ]]; then elif [[ "$Q_PLUGIN" = "ryu" ]]; then
iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.RyuInterfaceDriver iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.RyuInterfaceDriver
elif [[ "$Q_PLUGIN" = "bigswitch_floodlight" ]]; then
iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.OVSInterfaceDriver
fi fi
} }
@ -835,7 +849,7 @@ function _ssh_check_quantum() {
# Quantum 3rd party programs # Quantum 3rd party programs
#--------------------------- #---------------------------
# A comma-separated list of 3rd party programs # A comma-separated list of 3rd party programs
QUANTUM_THIRD_PARTIES="ryu" QUANTUM_THIRD_PARTIES="ryu,bigswitch_floodlight"
for third_party in ${QUANTUM_THIRD_PARTIES//,/ }; do for third_party in ${QUANTUM_THIRD_PARTIES//,/ }; do
source lib/$third_party source lib/$third_party
done done