neutron-vpnaas/tools/tox_install.sh
Paul Michali 6fff6428b9 Support for VPN functional tests on Neutron commits
Currently, when the VPN functional tests run, it uses tox_install.sh to install
neutron code (as well as other packages, as passed in).

For functional tests invoked via the post_test_hook.sh script, tox_install.sh
would try to "import neutron", and if successful, then it is assumed that
Neutron is already installed. Otherwise a check is done to see if it can pip
install using the cache from Zuul cloner. For a local test run, tox_install.sh
would pip install Neutron from git.openstack.org.

If, however, one invokes the new Neutron experimental job that runs the VPN
functional tests on a Neutron patch set, tox_install.sh was determining that
Neutron was already installed. This was using the upstream version of Neutron
in /tmp/openstack, instead of the changeset code in /opt/stack/new.

This change attempts to fix this case, but first checking to see if the
Neutron directory exists at /opt/stack/new ($HOME/neutron actually). If it
does exist, that is pip installed for the VPN functional tests. Otherwise,
it does the same checks as explained above.

The end goal here is to be able to detect cross project breakages, by using
the (currently experimental) gate-neutron-vpnaas-dsvm-functional-sswan.

Change-Id: Ifa8ef994a571c72236a4a22a4eeb27496202db2b
2015-09-08 12:38:56 +00:00

50 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
# Many of neutron's repos suffer from the problem of depending on neutron,
# but it not existing on pypi.
# This wrapper for tox's package installer will use the existing package
# if it exists, else use zuul-cloner if that program exists, else grab it
# from neutron master via a hard-coded URL. That last case should only
# happen with devs running unit tests locally.
# From the tox.ini config page:
# install_command=ARGV
# default:
# pip install {opts} {packages}
set -x
exec > /tmp/tox_install.txt 2>&1
ZUUL_CLONER=/usr/zuul-env/bin/zuul-cloner
neutron_installed=$(echo "import neutron" | python 2>/dev/null ; echo $?)
NEUTRON_DIR=$HOME/neutron
set -e
if [ -d "$NEUTRON_DIR" ]; then
echo "FOUND Neutron code at $NEUTRON_DIR - using"
pip install -U -e $NEUTRON_DIR
elif [ $neutron_installed -eq 0 ]; then
location=$(python -c "import neutron; print(neutron.__file__)")
echo "ALREADY INSTALLED at $location"
elif [ -x "$ZUUL_CLONER" ]; then
echo "USING ZUUL CLONER to obtain Neutron code"
cwd=$(/bin/pwd)
cd /tmp
$ZUUL_CLONER --cache-dir \
/opt/git \
git://git.openstack.org \
openstack/neutron
cd openstack/neutron
pip install -e .
cd "$cwd"
else
echo "LOCAL - Obtaining Neutron code from git.openstack.org"
pip install -U -egit+https://git.openstack.org/openstack/neutron#egg=neutron
fi
pip install -U $*
exit $?