3d6d89935f
The OpenDaylight project recently released their latest release, codenamed Helium. This commit updates the devstack support for OpenDaylight to this new version, which includes changes to configuration files as well as the startup of OpenDaylight itself. Also update my email address in MAINTAINERS.rst. Change-Id: I124b5e7e8ef7feb6c90de907916a9530409c4ad4
190 lines
5.6 KiB
Plaintext
190 lines
5.6 KiB
Plaintext
# lib/opendaylight
|
|
# Functions to control the configuration and operation of the opendaylight service
|
|
|
|
# Dependencies:
|
|
#
|
|
# ``functions`` file
|
|
# ``DEST`` must be defined
|
|
# ``STACK_USER`` must be defined
|
|
|
|
# ``stack.sh`` calls the entry points in this order:
|
|
#
|
|
# - is_opendaylight_enabled
|
|
# - is_opendaylight-compute_enabled
|
|
# - install_opendaylight
|
|
# - install_opendaylight-compute
|
|
# - configure_opendaylight
|
|
# - init_opendaylight
|
|
# - start_opendaylight
|
|
# - stop_opendaylight-compute
|
|
# - stop_opendaylight
|
|
# - cleanup_opendaylight
|
|
|
|
# Save trace setting
|
|
XTRACE=$(set +o | grep xtrace)
|
|
set +o xtrace
|
|
|
|
|
|
# For OVS_BRIDGE and PUBLIC_BRIDGE
|
|
source $TOP_DIR/lib/neutron_plugins/ovs_base
|
|
|
|
# Defaults
|
|
# --------
|
|
|
|
# The IP address of ODL. Set this in local.conf.
|
|
# ODL_MGR_IP=
|
|
ODL_MGR_IP=${ODL_MGR_IP:-$SERVICE_HOST}
|
|
|
|
# The ODL endpoint URL
|
|
ODL_ENDPOINT=${ODL_ENDPOINT:-http://${ODL_MGR_IP}:8080/controller/nb/v2/neutron}
|
|
|
|
# The ODL username
|
|
ODL_USERNAME=${ODL_USERNAME:-admin}
|
|
|
|
# The ODL password
|
|
ODL_PASSWORD=${ODL_PASSWORD:-admin}
|
|
|
|
# <define global variables here that belong to this project>
|
|
ODL_DIR=$DEST/opendaylight
|
|
|
|
# The OpenDaylight Package, currently using 'Hydrogen' release
|
|
ODL_PKG=${ODL_PKG:-distribution-karaf-0.2.0-Helium.zip}
|
|
|
|
# The OpenDaylight URL
|
|
ODL_URL=${ODL_URL:-https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.0-Helium}
|
|
|
|
# Default arguments for OpenDaylight. This is typically used to set
|
|
# Java memory options.
|
|
# ``ODL_ARGS=Xmx1024m -XX:MaxPermSize=512m``
|
|
ODL_ARGS=${ODL_ARGS:-"-XX:MaxPermSize=384m"}
|
|
|
|
# How long to pause after ODL starts to let it complete booting
|
|
ODL_BOOT_WAIT=${ODL_BOOT_WAIT:-20}
|
|
|
|
# The physical provider network to device mapping
|
|
ODL_PROVIDER_MAPPINGS=${ODL_PROVIDER_MAPPINGS:-physnet1:eth1}
|
|
|
|
# Enable OpenDaylight l3 forwarding
|
|
ODL_L3=${ODL_L3:-False}
|
|
|
|
|
|
# Entry Points
|
|
# ------------
|
|
|
|
# Test if OpenDaylight is enabled
|
|
# is_opendaylight_enabled
|
|
function is_opendaylight_enabled {
|
|
[[ ,${ENABLED_SERVICES} =~ ,"odl-" ]] && return 0
|
|
return 1
|
|
}
|
|
|
|
# cleanup_opendaylight() - Remove residual data files, anything left over from previous
|
|
# runs that a clean run would need to clean up
|
|
function cleanup_opendaylight {
|
|
:
|
|
}
|
|
|
|
# configure_opendaylight() - Set config files, create data dirs, etc
|
|
function configure_opendaylight {
|
|
# Add odl-ovsdb-openstack if it's not already there
|
|
local ODLOVSDB=$(cat $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/org.apache.karaf.features.cfg | grep featuresBoot= | grep odl)
|
|
if [ "$ODLOVSDB" == "" ]; then
|
|
sed -i '/^featuresBoot=/ s/$/,odl-ovsdb-openstack/' $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/org.apache.karaf.features.cfg
|
|
fi
|
|
|
|
# Configure OpenFlow 1.3 if it's not there
|
|
local OFLOW13=$(cat $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/custom.properties | grep ^of.version)
|
|
if [ "$OFLOW13" == "" ]; then
|
|
echo "ovsdb.of.version=1.3" >> $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/custom.properties
|
|
fi
|
|
|
|
# Configure L3 if the user wants it
|
|
if [ "${ODL_L3}" == "True" ]; then
|
|
# Configure L3 FWD if it's not there
|
|
local L3FWD=$(cat $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/custom.properties | grep ^ovsdb.l3.fwd.enabled)
|
|
if [ "$L3FWD" == "" ]; then
|
|
echo "ovsdb.l3.fwd.enabled=yes" >> $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/custom.properties
|
|
fi
|
|
fi
|
|
}
|
|
|
|
function configure_ml2_odl {
|
|
populate_ml2_config /$Q_PLUGIN_CONF_FILE ml2_odl url=$ODL_ENDPOINT
|
|
populate_ml2_config /$Q_PLUGIN_CONF_FILE ml2_odl username=$ODL_USERNAME
|
|
populate_ml2_config /$Q_PLUGIN_CONF_FILE ml2_odl password=$ODL_PASSWORD
|
|
}
|
|
|
|
# init_opendaylight() - Initialize databases, etc.
|
|
function init_opendaylight {
|
|
# clean up from previous (possibly aborted) runs
|
|
# create required data files
|
|
:
|
|
}
|
|
|
|
# install_opendaylight() - Collect source and prepare
|
|
function install_opendaylight {
|
|
local _pwd=$(pwd)
|
|
|
|
if is_ubuntu; then
|
|
install_package maven openjdk-7-jre openjdk-7-jdk
|
|
else
|
|
yum_install maven java-1.7.0-openjdk
|
|
fi
|
|
|
|
# Download OpenDaylight
|
|
mkdir -p $ODL_DIR
|
|
cd $ODL_DIR
|
|
wget -N $ODL_URL/$ODL_PKG
|
|
unzip -u $ODL_PKG
|
|
}
|
|
|
|
# install_opendaylight-compute - Make sure OVS is installed
|
|
function install_opendaylight-compute {
|
|
# packages are the same as for Neutron OVS agent
|
|
_neutron_ovs_base_install_agent_packages
|
|
}
|
|
|
|
# start_opendaylight() - Start running processes, including screen
|
|
function start_opendaylight {
|
|
if is_ubuntu; then
|
|
JHOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
|
|
else
|
|
JHOME=/usr/lib/jvm/java-1.7.0-openjdk
|
|
fi
|
|
|
|
# The flags to ODL have the following meaning:
|
|
# -of13: runs ODL using OpenFlow 1.3 protocol support.
|
|
# -virt ovsdb: Runs ODL in "virtualization" mode with OVSDB support
|
|
|
|
run_process odl-server "cd $ODL_DIR/distribution-karaf-0.2.0-Helium && JAVA_HOME=$JHOME bin/karaf"
|
|
|
|
# Sleep a bit to let OpenDaylight finish starting up
|
|
sleep $ODL_BOOT_WAIT
|
|
}
|
|
|
|
# stop_opendaylight() - Stop running processes (non-screen)
|
|
function stop_opendaylight {
|
|
stop_process odl-server
|
|
}
|
|
|
|
# stop_opendaylight-compute() - Remove OVS bridges
|
|
function stop_opendaylight-compute {
|
|
# remove all OVS ports that look like Neutron created ports
|
|
for port in $(sudo ovs-vsctl list port | grep -o -e tap[0-9a-f\-]* -e q[rg]-[0-9a-f\-]*); do
|
|
sudo ovs-vsctl del-port ${port}
|
|
done
|
|
|
|
# remove all OVS bridges created by Neutron
|
|
for bridge in $(sudo ovs-vsctl list-br | grep -o -e ${OVS_BRIDGE} -e ${PUBLIC_BRIDGE}); do
|
|
sudo ovs-vsctl del-br ${bridge}
|
|
done
|
|
}
|
|
|
|
# Restore xtrace
|
|
$XTRACE
|
|
|
|
# Tell emacs to use shell-script-mode
|
|
## Local variables:
|
|
## mode: shell-script
|
|
## End:
|