Revert "Install OVS via the OS and make it an OS service"
This reverts commit 0b73b880cb
.
Change-Id: Idd5b94abd41d1fb501e45dba65a1f672d7d9aa96
This commit is contained in:
parent
e9b3b56dba
commit
df7893e330
|
@ -19,3 +19,6 @@ if ! nb_db_driver_status_server; then
|
|||
echo "Going to start db"
|
||||
nb_db_driver_start_server
|
||||
fi
|
||||
|
||||
# Start ovs db and etcd/ramcloud
|
||||
start_ovs
|
||||
|
|
|
@ -1,122 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
OVS_INSTALL_FROM_GIT=${OVS_INSTALL_FROM_GIT:-"True"}
|
||||
|
||||
function _neutron_ovs_get_dnf {
|
||||
if is_fedora; then
|
||||
if [ $OS_RELEASE -ge 22 ]; then
|
||||
echo "dnf"
|
||||
else
|
||||
echo "yum"
|
||||
fi
|
||||
else
|
||||
die "This function is only supported on fedora"
|
||||
fi
|
||||
}
|
||||
|
||||
function _neutron_ovs_install_ovs_deps_fedora {
|
||||
DNF=`_neutron_ovs_get_dnf`
|
||||
sudo $DNF install -y rpm-build
|
||||
# So apparently we need to compile to learn the requirements...
|
||||
set `cat ../rhel/openvswitch-fedora.spec.in | sed 's/@VERSION@/0/' | rpmspec -q --buildrequires /dev/stdin`
|
||||
set "$@" `cat ../rhel/openvswitch-kmod-fedora.spec.in | sed 's/@VERSION@/0/' | rpmspec -q --buildrequires /dev/stdin`
|
||||
if [ $# > 0 ]; then
|
||||
sudo $DNF install -y $@
|
||||
fi
|
||||
}
|
||||
|
||||
function _neutron_ovs_get_rpm_basename {
|
||||
PACKAGE=$1
|
||||
SPEC=${2:-../rhel/openvswitch-fedora.spec}
|
||||
BASENAME=`rpmspec -q $SPEC --provides | awk "/^$PACKAGE\s*=/ {print \\\$1\"-\"\\\$3}" | head -1`
|
||||
echo `rpmspec -q $SPEC | grep "^$BASENAME"`
|
||||
}
|
||||
|
||||
function _neutron_ovs_get_rpm_file {
|
||||
BASENAME=`_neutron_ovs_get_rpm_basename "$@"`
|
||||
find -name "$BASENAME.rpm" | head -1
|
||||
}
|
||||
|
||||
function _neutron_ovs_clone_ovs {
|
||||
if [ -d $DEST/ovs ]; then
|
||||
pushd $DEST/ovs
|
||||
git checkout master
|
||||
git pull
|
||||
popd
|
||||
else
|
||||
pushd $DEST
|
||||
git clone $OVS_REPO
|
||||
popd
|
||||
fi
|
||||
}
|
||||
|
||||
function _neutron_ovs_install_ovs_fedora {
|
||||
_neutron_ovs_clone_ovs
|
||||
|
||||
mkdir -p $DEST/ovs/build-dragonflow
|
||||
pushd $DEST/ovs/build-dragonflow
|
||||
|
||||
pushd ..
|
||||
./boot.sh
|
||||
popd
|
||||
|
||||
../configure
|
||||
make
|
||||
_neutron_ovs_install_ovs_deps_fedora
|
||||
make rpm-fedora RPMBUILD_OPT="--without check"
|
||||
make rpm-fedora-kmod
|
||||
OVS_RPM_BASENAME=`_neutron_ovs_get_rpm_file openvswitch`
|
||||
OVS_PY_RPM_BASENAME=`_neutron_ovs_get_rpm_file python-openvswitch`
|
||||
OVS_KMOD_RPM_BASENAME=`_neutron_ovs_get_rpm_file openvswitch-kmod ../rhel/openvswitch-kmod-fedora.spec`
|
||||
DNF=`_neutron_ovs_get_dnf`
|
||||
sudo $DNF install -y $OVS_RPM_BASENAME $OVS_PY_RPM_BASENAME $OVS_KMOD_RPM_BASENAME
|
||||
|
||||
popd
|
||||
}
|
||||
|
||||
function _neutron_ovs_install_ovs_deps_ubuntu {
|
||||
sudo apt-get install -y build-essential fakeroot devscripts equivs dkms
|
||||
sudo mk-build-deps -i -t "/usr/bin/apt-get --no-install-recommends -y"
|
||||
}
|
||||
|
||||
function _neutron_ovs_install_ovs_ubuntu {
|
||||
_neutron_ovs_clone_ovs
|
||||
|
||||
pushd $DEST/ovs
|
||||
_neutron_ovs_install_ovs_deps_ubuntu
|
||||
DEB_BUILD_OPTIONS='nocheck' fakeroot debian/rules binary
|
||||
sudo dpkg -i ../openvswitch-datapath-dkms*.deb
|
||||
sudo dpkg -i ../openvswitch-common*.deb ../openvswitch-switch*.deb ../python-openvswitch*.deb
|
||||
popd
|
||||
}
|
||||
|
||||
function _neutron_ovs_install_ovs {
|
||||
if [ "$OVS_INSTALL_FROM_GIT" == "True" ]; then
|
||||
echo "Installing OVS and dependent packages from git"
|
||||
# If OVS is already installed, remove it, because we're about to re-install
|
||||
# it from source.
|
||||
for package in openvswitch openvswitch-switch openvswitch-common; do
|
||||
# TODO(oanson)
|
||||
#mark_ovs_was_installed
|
||||
if is_package_installed $package ; then
|
||||
uninstall_package $package
|
||||
fi
|
||||
done
|
||||
|
||||
if is_ubuntu; then
|
||||
_neutron_ovs_install_ovs_ubuntu
|
||||
elif is_fedora; then
|
||||
_neutron_ovs_install_ovs_fedora
|
||||
else
|
||||
echo "Unsupported system. Trying to install via package manager"
|
||||
install_package $(get_packages "openvswitch")
|
||||
fi
|
||||
else
|
||||
echo "Installing OVS and dependent packages via package manager"
|
||||
install_package $(get_packages "openvswitch")
|
||||
fi
|
||||
}
|
||||
|
||||
function install_ovs {
|
||||
_neutron_ovs_install_ovs
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
# dragonflow.sh - Devstack extras script to install Dragonflow
|
||||
|
||||
# The git repo to use
|
||||
OVS_REPO=${OVS_REPO:-${GIT_BASE}/openvswitch/ovs.git}
|
||||
OVS_REPO=${OVS_REPO:-http://github.com/openvswitch/ovs.git}
|
||||
OVS_REPO_NAME=$(basename ${OVS_REPO} | cut -f1 -d'.')
|
||||
|
||||
# The branch to use from $OVS_REPO
|
||||
|
@ -26,10 +26,9 @@ PUBLISHERS_HOSTS=${PUBLISHERS_HOSTS:-"$SERVICE_HOST"}
|
|||
#ovs related pid files
|
||||
OVS_DB_SERVICE="ovsdb-server"
|
||||
OVS_VSWITCHD_SERVICE="ovs-vswitchd"
|
||||
OVS_DIR="/var/run/openvswitch"
|
||||
OVS_DIR="/usr/local/var/run/openvswitch"
|
||||
OVS_DB_PID=$OVS_DIR"/"$OVS_DB_SERVICE".pid"
|
||||
OVS_VSWITCHD_PID=$OVS_DIR"/"$OVS_VSWITCHD_SERVICE".pid"
|
||||
OVS_VSWITCH_OCSSCHEMA_FILE=${OVS_VSWITCH_OCSSCHEMA_FILE:-"/usr/share/openvswitch/vswitch.ovsschema"}
|
||||
|
||||
# Pluggable DB drivers
|
||||
#----------------------
|
||||
|
@ -62,7 +61,6 @@ fi
|
|||
# Dragonflow installation uses functions from these files
|
||||
source $TOP_DIR/lib/neutron_plugins/ovs_base
|
||||
source $TOP_DIR/lib/neutron_plugins/openvswitch_agent
|
||||
source $DEST/dragonflow/devstack/ovs_manager.sh
|
||||
|
||||
# Entry Points
|
||||
# ------------
|
||||
|
@ -83,6 +81,10 @@ function cleanup_ovs {
|
|||
sudo ovs-vsctl del-port ${port}
|
||||
done
|
||||
|
||||
local _pwd=$(pwd)
|
||||
cd $DEST/$OVS_REPO_NAME
|
||||
sudo make uninstall
|
||||
cd $_pwd
|
||||
}
|
||||
|
||||
function configure_df_plugin {
|
||||
|
@ -175,7 +177,7 @@ function init_ovs {
|
|||
rm -f $base_dir/.*.db.~lock~
|
||||
|
||||
echo "Creating OVS Database"
|
||||
ovsdb-tool create $base_dir/conf.db $OVS_VSWITCH_OCSSCHEMA_FILE
|
||||
ovsdb-tool create $base_dir/conf.db $DEST/$OVS_REPO_NAME/vswitchd/vswitch.ovsschema
|
||||
}
|
||||
|
||||
function install_zeromq {
|
||||
|
@ -207,6 +209,29 @@ function install_df {
|
|||
setup_package $DRAGONFLOW_DIR
|
||||
}
|
||||
|
||||
# install_ovs() - Collect source and prepare
|
||||
function install_ovs {
|
||||
echo "Installing OVS and dependent packages"
|
||||
|
||||
# If OVS is already installed, remove it, because we're about to re-install
|
||||
# it from source.
|
||||
for package in openvswitch openvswitch-switch openvswitch-common; do
|
||||
if is_package_installed $package ; then
|
||||
uninstall_package $package
|
||||
fi
|
||||
done
|
||||
|
||||
if ! is_neutron_enabled ; then
|
||||
install_neutron
|
||||
fi
|
||||
|
||||
install_package python-openvswitch
|
||||
source $NEUTRON_DIR/devstack/lib/ovs
|
||||
compile_ovs True
|
||||
sudo chown $(whoami) /usr/local/var/run/openvswitch
|
||||
sudo chown $(whoami) /usr/local/var/log/openvswitch
|
||||
}
|
||||
|
||||
# stop_ovs_dp() - Stop OVS datapath
|
||||
function stop_ovs_dp {
|
||||
sudo ovs-dpctl dump-dps | sudo xargs -n1 ovs-dpctl del-dp
|
||||
|
@ -216,14 +241,22 @@ function stop_ovs_dp {
|
|||
|
||||
function stop_ovs
|
||||
{
|
||||
SERVICE_NAME=openvswitch # Default value
|
||||
if is_fedora; then
|
||||
SERVICE_NAME=openvswitch
|
||||
elif is_ubuntu; then
|
||||
SERVICE_NAME=openvswitch-switch
|
||||
fi
|
||||
# Stop ovs db
|
||||
ovs_service_stop $OVS_DB_SERVICE
|
||||
# Stop ovs vswitch
|
||||
ovs_service_stop $OVS_VSWITCHD_SERVICE
|
||||
|
||||
stop_service $SERVICE_NAME
|
||||
while ovs_service_status $OVS_DB_SERVICE; do
|
||||
echo "Waiting for the $OVS_DB_SERVICE to be stopped..."
|
||||
sleep 1
|
||||
ovs_service_stop $OVS_DB_SERVICE
|
||||
done
|
||||
|
||||
while ovs_service_status $OVS_VSWITCHD_SERVICE; do
|
||||
echo "Waiting for the ovsdb-vswitchd to be stopped..."
|
||||
sleep 1
|
||||
ovs_service_stop $OVS_VSWITCHD_SERVICE
|
||||
done
|
||||
}
|
||||
|
||||
# The following returns "0" when service is live.
|
||||
|
@ -243,46 +276,60 @@ function ovs_service_status
|
|||
return 1
|
||||
}
|
||||
|
||||
function load_module_if_not_loaded() {
|
||||
MOD=$1
|
||||
if test lsmod | grep -q $MOD; then
|
||||
echo "Loading module: $MOD"
|
||||
sudo modprobe $MOD || die $LINENO "Failed to load module: $MOD"
|
||||
else
|
||||
echo "Module already loaded: $MOD"
|
||||
# Kills a service
|
||||
function ovs_service_stop
|
||||
{
|
||||
TEMP_PID=$OVS_DIR"/"$1".pid"
|
||||
if [ -e $TEMP_PID ]
|
||||
then
|
||||
TEMP_PID_VALUE=$(cat $TEMP_PID 2>/dev/null)
|
||||
if [ -e /proc/$TEMP_PID_VALUE ]
|
||||
then
|
||||
sudo kill $TEMP_PID_VALUE
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function start_ovs {
|
||||
echo "Starting OVS"
|
||||
SERVICE_NAME=openvswitch # Default value
|
||||
if is_fedora; then
|
||||
SERVICE_NAME=openvswitch
|
||||
elif is_ubuntu; then
|
||||
SERVICE_NAME=openvswitch-switch
|
||||
fi
|
||||
|
||||
start_service $SERVICE_NAME
|
||||
|
||||
local _pwd=$(pwd)
|
||||
cd $DATA_DIR/ovs
|
||||
|
||||
EXTRA_DBS=""
|
||||
OVSDB_REMOTE="--remote=ptcp:6640:$HOST_IP"
|
||||
|
||||
if ! ovs_service_status $OVS_DB_SERVICE; then
|
||||
die "$OVS_DB_SERVICE is not running"
|
||||
#echo "Going to start $OVS_DB_SERVICE"
|
||||
$OVS_DB_SERVICE --remote=punix:$OVS_DIR"/db.sock" \
|
||||
--remote=db:Open_vSwitch,Open_vSwitch,manager_options \
|
||||
--pidfile=$OVS_DB_PID --detach -vconsole:off --log-file $OVSDB_REMOTE \
|
||||
conf.db ${EXTRA_DBS}
|
||||
|
||||
echo -n "Waiting for $OVS_DB_SERVICE to start ... "
|
||||
while ! test -e $OVS_DIR"/db.sock" ; do
|
||||
sleep 1
|
||||
done
|
||||
echo "done."
|
||||
ovs-vsctl --no-wait init
|
||||
fi
|
||||
|
||||
if is_service_enabled df-controller ; then
|
||||
if ! ovs_service_status $OVS_VSWITCHD_SERVICE; then
|
||||
die "$OVS_VSWITCHD_SERVICE is not running"
|
||||
fi
|
||||
load_module_if_not_loaded openvswitch
|
||||
# TODO This needs to be a fatal error when doing multi-node testing, but
|
||||
# breaks testing in OpenStack CI where geneve isn't available.
|
||||
load_module_if_not_loaded geneve || true
|
||||
load_module_if_not_loaded vport_geneve || true
|
||||
#echo "Going to start $OVS_VSWITCHD_SERVICE"
|
||||
sudo modprobe openvswitch || die $LINENO "Failed to load openvswitch module"
|
||||
# TODO This needs to be a fatal error when doing multi-node testing, but
|
||||
# breaks testing in OpenStack CI where geneve isn't available.
|
||||
#sudo modprobe geneve || die $LINENO "Failed to load geneve module"
|
||||
sudo modprobe geneve || true
|
||||
#sudo modprobe vport_geneve || die $LINENO "Failed to load vport_geneve module"
|
||||
sudo modprobe vport_geneve || true
|
||||
|
||||
_neutron_ovs_base_setup_bridge br-int
|
||||
sudo ovs-vsctl --no-wait set bridge br-int fail-mode=secure other-config:disable-in-band=true
|
||||
_neutron_ovs_base_setup_bridge br-int
|
||||
ovs-vsctl --no-wait set bridge br-int fail-mode=secure other-config:disable-in-band=true
|
||||
|
||||
sudo $OVS_VSWITCHD_SERVICE --pidfile=$OVS_VSWITCHD_PID --detach -vconsole:off --log-file
|
||||
fi
|
||||
fi
|
||||
|
||||
cd $_pwd
|
||||
|
@ -297,7 +344,7 @@ function start_df {
|
|||
echo "Starting Dragonflow"
|
||||
|
||||
if is_service_enabled df-controller ; then
|
||||
sudo ovs-vsctl --no-wait set-controller br-int tcp:$HOST_IP:6633
|
||||
ovs-vsctl --no-wait set-controller br-int tcp:$HOST_IP:6633
|
||||
run_process df-controller "python $DF_LOCAL_CONTROLLER --config-file $NEUTRON_CONF"
|
||||
run_process df-ext-services "bash $DEST/dragonflow/devstack/df-ext-services.sh"
|
||||
fi
|
||||
|
@ -307,11 +354,14 @@ function start_df {
|
|||
function stop_df {
|
||||
if is_service_enabled df-controller ; then
|
||||
stop_process df-controller
|
||||
ovs_service_stop $OVS_VSWITCHD_SERVICE
|
||||
fi
|
||||
|
||||
cleanup_nb_db
|
||||
|
||||
nb_db_driver_stop_server
|
||||
|
||||
ovs_service_stop $OVS_DB_SERVICE
|
||||
}
|
||||
|
||||
function disable_libvirt_apparmor {
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
DRAGONFLOW_REPO=${DRAGONFLOW_REPO:-${GIT_BASE}/openstack/dragonflow.git}
|
||||
NETWORKING_OVN_REPO=${NETWORKING_OVN_REPO:-${GIT_BASE}/openstack/networking-ovn.git}
|
||||
DRAGONFLOW_REPO=${DRAGONFLOW_REPO:-git://github.com/openstack/dragonflow.git}
|
||||
DRAGONFLOW_DIR=$DEST/dragonflow
|
||||
DRAGONFLOW_BRANCH=${DRAGONFLOW_BRANCH:-master}
|
||||
|
||||
|
|
Loading…
Reference in New Issue