devstack/lib/quantum
Yoshihiro Kaneko 602cf9bd68 Add support for the Quantum Ryu plugin.
This patch allows using the Quantum Ryu plugin.
Ryu plugin lets Quantum link Open vSwitch and Ryu OpenFlow controller[1].

Ryu OpenFlow controller is not Openstack component, but I added some
processing that is related with Ryu to stack.sh for the convenience of
the person who intend to try the plugin.

Instructions for using Ryu plugin:
1. Enable services: "q-svc", "q-agt", "q-dhcp", "q-l3", "quantum", "ryu"
2. Set Q_PLUGIN to "ryu"
3. Set an internal network interface name to connect br-int on plural
   hosts to RYU_INTERNAL_INTERFACE (optional)

Example localrc:
  disable_service n-net
  enable_service q-svc q-agt q-dhcp q-l3 quantum ryu
  Q_PLUGIN=ryu
  RYU_INTERNAL_INTERFACE=eth1

[1] http://osrg.github.com/ryu/

Change-Id: Ic1da132fa421f1c70c10a319ee3239831b0f956f
2012-10-19 07:00:32 +00:00

62 lines
2.0 KiB
Plaintext

# lib/quantum
# functions - funstions specific to quantum
# Save trace setting
XTRACE=$(set +o | grep xtrace)
set +o xtrace
# Configures keystone integration for quantum service and agents
function quantum_setup_keystone() {
local conf_file=$1
local section=$2
local use_auth_url=$3
if [[ -n $use_auth_url ]]; then
iniset $conf_file $section auth_url "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_AUTH_HOST:$KEYSTONE_AUTH_PORT/v2.0"
else
iniset $conf_file $section auth_host $KEYSTONE_SERVICE_HOST
iniset $conf_file $section auth_port $KEYSTONE_AUTH_PORT
iniset $conf_file $section auth_protocol $KEYSTONE_SERVICE_PROTOCOL
fi
iniset $conf_file $section admin_tenant_name $SERVICE_TENANT_NAME
iniset $conf_file $section admin_user $Q_ADMIN_USERNAME
iniset $conf_file $section admin_password $SERVICE_PASSWORD
}
function quantum_setup_ovs_bridge() {
local bridge=$1
for PORT in `sudo ovs-vsctl --no-wait list-ports $bridge`; do
if [[ "$PORT" =~ tap* ]]; then echo `sudo ip link delete $PORT` > /dev/null; fi
sudo ovs-vsctl --no-wait del-port $bridge $PORT
done
sudo ovs-vsctl --no-wait -- --if-exists del-br $bridge
sudo ovs-vsctl --no-wait add-br $bridge
sudo ovs-vsctl --no-wait br-set-external-id $bridge bridge-id $bridge
}
function quantum_setup_external_bridge() {
local bridge=$1
# Create it if it does not exist
sudo ovs-vsctl --no-wait -- --may-exist add-br $bridge
# remove internal ports
for PORT in `sudo ovs-vsctl --no-wait list-ports $bridge`; do
TYPE=$(sudo ovs-vsctl get interface $PORT type)
if [[ "$TYPE" == "internal" ]]; then
echo `sudo ip link delete $PORT` > /dev/null
sudo ovs-vsctl --no-wait del-port $bridge $PORT
fi
done
# ensure no IP is configured on the public bridge
sudo ip addr flush dev $bridge
}
function is_quantum_ovs_base_plugin() {
local plguin=$1
if [[ ",openvswitch,ryu," =~ ,${plugin}, ]]; then
return 0
fi
return 1
}
# Restore xtrace
$XTRACE