diff options
author | Lucas Alvares Gomes <lucasagomes@gmail.com> | 2021-05-27 17:23:38 +0100 |
---|---|---|
committer | Lucas Alvares Gomes <lucasagomes@gmail.com> | 2021-05-31 09:41:57 +0100 |
commit | 7f0ca67ed6e81f396c64a3972a1287cfdb913abe (patch) | |
tree | d615d4a75fa50e854826709d056b39fa95052aad /devstack | |
parent | 6fb4de724379be7f86c0b120e5e2c49e69e07804 (diff) | |
download | neutron-7f0ca67ed6e81f396c64a3972a1287cfdb913abe.tar.gz |
Remove the devstack/lib/ovs in favour of "ovs_source" from DevStack
This patch removes the devstack/lib/ovs module and update the scripts to
use the ovs_source module from DevStack instead.
Depends-On: https://review.opendev.org/c/openstack/devstack/+/791085
Change-Id: I65fe53ee753ac68340f7d4d928643d3d8e5c8694
Signed-off-by: Lucas Alvares Gomes <lucasagomes@gmail.com>
Diffstat (limited to 'devstack')
-rw-r--r-- | devstack/lib/ovs | 213 | ||||
-rw-r--r-- | devstack/plugin.sh | 4 |
2 files changed, 3 insertions, 214 deletions
diff --git a/devstack/lib/ovs b/devstack/lib/ovs deleted file mode 100644 index b7449ace90..0000000000 --- a/devstack/lib/ovs +++ /dev/null @@ -1,213 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -# Defaults -# -------- - -# Set variables for building OVS from source -OVS_REPO=${OVS_REPO:-https://github.com/openvswitch/ovs.git} -OVS_REPO_NAME=$(basename ${OVS_REPO} | cut -f1 -d'.') -OVS_REPO_NAME=${OVS_REPO_NAME:-ovs} -OVS_BRANCH=${OVS_BRANCH:-0047ca3a0290f1ef954f2c76b31477cf4b9755f5} - -# Functions - -# load_module() - Load module using modprobe module given by argument and dies -# on failure -# - fatal argument is optional and says whether function should -# exit if module can't be loaded -function load_module { - local module=$1 - local fatal=$2 - - if [ "$(trueorfalse True fatal)" == "True" ]; then - sudo modprobe $module || (dmesg && die $LINENO "FAILED TO LOAD $module") - else - sudo modprobe $module || (echo "FAILED TO LOAD $module" && dmesg) - fi -} - -# prepare_for_compilation() - Fetch ovs git repository and install packages needed for -# compilation. -function prepare_for_ovs_compilation { - local build_modules=${1:-False} - OVS_DIR=$DEST/$OVS_REPO_NAME - - if [ ! -d $OVS_DIR ] ; then - # We can't use git_clone here because we want to ignore ERROR_ON_CLONE - git_timed clone $OVS_REPO $OVS_DIR - cd $OVS_DIR - git checkout $OVS_BRANCH - else - # Even though the directory already exists, call git_clone to update it - # if needed based on the RECLONE option - git_clone $OVS_REPO $OVS_DIR $OVS_BRANCH - cd $OVS_DIR - fi - - # TODO: Can you create package list files like you can inside devstack? - install_package autoconf automake libtool gcc patch make - - # If build_modules is False, we don't need to install the kernel-* - # packages. Just return. - if [[ "$build_modules" == "False" ]]; then - return - fi - - KERNEL_VERSION=`uname -r` - if is_fedora ; then - # is_fedora covers Fedora, RHEL, CentOS, etc... - if [[ "$os_VENDOR" == "Fedora" ]]; then - install_package elfutils-libelf-devel - KERNEL_VERSION=`echo $KERNEL_VERSION | cut --delimiter='-' --field 1` - elif [[ ${KERNEL_VERSION:0:2} != "3." ]]; then - # dash is illegal character in rpm version so replace - # them with underscore like it is done in the kernel - # https://github.com/torvalds/linux/blob/master/scripts/package/mkspec#L25 - # but only for latest series of the kernel, not 3.x - - KERNEL_VERSION=`echo $KERNEL_VERSION | tr - _` - fi - - echo NOTE: if kernel-devel-$KERNEL_VERSION or kernel-headers-$KERNEL_VERSION installation - echo failed, please, provide a repository with the package, or yum update / reboot - echo your machine to get the latest kernel. - - install_package kernel-devel-$KERNEL_VERSION - install_package kernel-headers-$KERNEL_VERSION - - elif is_ubuntu ; then - install_package linux-headers-$KERNEL_VERSION - fi -} - -# load_ovs_kernel_modules() - load openvswitch kernel module -function load_ovs_kernel_modules { - load_module openvswitch - load_module vport-geneve False - dmesg | tail -} - -# reload_ovs_kernel_modules() - reload openvswitch kernel module -function reload_ovs_kernel_modules { - set +e - ovs_system=$(sudo ovs-dpctl dump-dps | grep ovs-system) - if [ -n "$ovs_system" ]; then - sudo ovs-dpctl del-dp ovs-system - fi - set -e - sudo modprobe -r vport_geneve - sudo modprobe -r openvswitch - load_ovs_kernel_modules -} - -# compile_ovs() - Compile OVS from source and load needed modules. -# Accepts two parameters: -# - first one is False by default and means that modules are not built and installed. -# - second optional parameter defines prefix for ovs compilation -# - third optional parameter defines localstatedir for ovs single machine runtime -# Env variables OVS_REPO_NAME, OVS_REPO and OVS_BRANCH must be set -function compile_ovs { - local _pwd=$PWD - local build_modules=${1:-False} - local prefix=$2 - local localstatedir=$3 - - if [ -n "$prefix" ]; then - prefix="--prefix=$prefix" - fi - - if [ -n "$localstatedir" ]; then - localstatedir="--localstatedir=$localstatedir" - fi - - prepare_for_ovs_compilation $build_modules - - KERNEL_VERSION=$(uname -r) - major_version=$(echo "${KERNEL_VERSION}" | cut -d '.' -f1) - patch_level=$(echo "${KERNEL_VERSION}" | cut -d '.' -f2) - if [ "${major_version}" -gt 5 ] || [ "${major_version}" == 5 ] && [ "${patch_level}" -gt 5 ]; then - echo "NOTE: KERNEL VERSION is ${KERNEL_VERSION} and OVS doesn't support compiling " - echo "Kernel module for version higher than 5.5. Skipping module compilation..." - build_modules="False" - fi - - if [ ! -f configure ] ; then - ./boot.sh - fi - if [ ! -f config.status ] || [ configure -nt config.status ] ; then - if [[ "$build_modules" == "True" ]]; then - ./configure $prefix $localstatedir --with-linux=/lib/modules/$(uname -r)/build - else - ./configure $prefix $localstatedir - fi - fi - make -j$[$(nproc) + 1] - sudo make install - if [[ "$build_modules" == "True" ]]; then - sudo make INSTALL_MOD_DIR=kernel/net/openvswitch modules_install - reload_ovs_kernel_modules - else - load_ovs_kernel_modules - fi - - cd $_pwd -} - -# action_service - call an action over openvswitch service -# Accepts one parameter that can be either -# 'start', 'restart' and 'stop'. -function action_openvswitch { - local action=$1 - - if is_ubuntu; then - ${action}_service openvswitch-switch - elif is_fedora; then - ${action}_service openvswitch - elif is_suse; then - if [[ $DISTRO == "sle12" ]] && [[ $os_RELEASE -lt 12.2 ]]; then - ${action}_service openvswitch-switch - else - ${action}_service openvswitch - fi - fi -} - -# start_new_ovs() - removes old ovs database, creates a new one and starts ovs -function start_new_ovs () { - sudo rm -f /etc/openvswitch/conf.db /etc/openvswitch/.conf.db~lock~ - sudo /usr/share/openvswitch/scripts/ovs-ctl start -} - -# stop_new_ovs() - stops ovs -function stop_new_ovs () { - local ovs_ctl='/usr/share/openvswitch/scripts/ovs-ctl' - - if [ -x $ovs_ctl ] ; then - sudo $ovs_ctl stop - fi -} - -# remove_ovs_packages() - removes old ovs packages from the system -function remove_ovs_packages() { - for package in openvswitch openvswitch-switch openvswitch-common; do - if is_package_installed $package; then - uninstall_package $package - fi - done -} - - -# load_conntrack_gre_module() - loads nf_conntrack_proto_gre kernel module -function load_conntrack_gre_module() { - sudo modprobe nf_conntrack_proto_gre -} diff --git a/devstack/plugin.sh b/devstack/plugin.sh index 8eb710b329..ed4e1f5151 100644 --- a/devstack/plugin.sh +++ b/devstack/plugin.sh @@ -9,7 +9,6 @@ source $LIBDIR/l3_conntrack_helper source $LIBDIR/ml2 source $LIBDIR/network_segment_range source $LIBDIR/qos -source $LIBDIR/ovs source $LIBDIR/segments source $LIBDIR/trunk source $LIBDIR/placement @@ -20,6 +19,9 @@ source $LIBDIR/tag_ports_during_bulk_creation source $LIBDIR/octavia source $LIBDIR/loki +# source the OVS/OVN compilation helper methods +source $DEST/devstack/lib/neutron_plugins/ovs_source + Q_BUILD_OVS_FROM_GIT=$(trueorfalse False Q_BUILD_OVS_FROM_GIT) function is_ovn_enabled { |