Remove nova tarball from test-requirements
Using test-requirements to get a specific version of nova for tests is preventing DevStack from installing blazar-nova, because nova is already added to upper-constraints.txt as "-e file:///opt/stack/nova#egg=nova". DevStack shows the following error message: Could not satisfy constraints for 'nova': installation from path or url cannot be constrained to a version Import tools/tox_install.sh from Neutron repos and adapt it to install Nova in tox environments used for unit tests. Minimal modifications were made to this script in order to easily track changes from Neutron repos. tox.ini is modified to use this script instead of pip. For pep8 checks, we exclude the .tmp directory where nova is cloned in gate jobs, otherwise the nova source is checked as well and triggers failures. See [1] and [2] for more details about the issue fixed by this commit. [1] https://bugs.launchpad.net/devstack/+bug/1540328/comments/13 [2] https://review.openstack.org/#/c/405630/1 Closes-Bug: #1641577 Change-Id: I542461e609866b21f597b0c4a2954807c5b8f8b7
This commit is contained in:
parent
71f02b0382
commit
dd08b76fc9
@ -15,5 +15,4 @@ testrepository>=0.0.18 # Apache-2.0/BSD
|
||||
testtools>=1.4.0 # MIT
|
||||
coverage>=4.0 # Apache-2.0
|
||||
|
||||
http://tarballs.openstack.org/nova/nova-master.tar.gz#egg=nova
|
||||
oslotest>=1.10.0 # Apache-2.0
|
||||
|
68
tools/tox_install.sh
Executable file
68
tools/tox_install.sh
Executable file
@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# The blazar-nova repo suffers from the problem of depending on nova, which
|
||||
# does not exist 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 nova 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}
|
||||
|
||||
ZUUL_CLONER=/usr/zuul-env/bin/zuul-cloner
|
||||
BRANCH_NAME=${NOVA_BRANCH:-master}
|
||||
nova_installed=$(echo "import nova" | python 2>/dev/null ; echo $?)
|
||||
NOVA_DIR=$HOME/nova
|
||||
|
||||
set -e
|
||||
set -x
|
||||
|
||||
install_cmd="pip install -c$1"
|
||||
shift
|
||||
|
||||
# The devstack based functional tests have nova checked out in
|
||||
# $NOVA_DIR on the test systems - with the change to test in it.
|
||||
# Use this directory if it exists, so that this script installs the
|
||||
# nova version to test here.
|
||||
# Note that the functional tests use sudo to run tox and thus
|
||||
# variables used for zuul-cloner to check out the correct version are
|
||||
# lost.
|
||||
if [ -d "$NOVA_DIR" ]; then
|
||||
echo "FOUND Nova code at $NOVA_DIR - using"
|
||||
$install_cmd -U -e $NOVA_DIR
|
||||
elif [ $nova_installed -eq 0 ]; then
|
||||
echo "ALREADY INSTALLED" > /tmp/tox_install.txt
|
||||
location=$(python -c "import nova; print(nova.__file__)")
|
||||
echo "ALREADY INSTALLED at $location"
|
||||
|
||||
echo "Nova already installed; using existing package"
|
||||
elif [ -x "$ZUUL_CLONER" ]; then
|
||||
echo "ZUUL CLONER" > /tmp/tox_install.txt
|
||||
# Make this relative to current working directory so that
|
||||
# git clean can remove it. We cannot remove the directory directly
|
||||
# since it is referenced after $install_cmd -e.
|
||||
mkdir -p .tmp
|
||||
NOVA_DIR=$(/bin/mktemp -d -p $(pwd)/.tmp)
|
||||
pushd $NOVA_DIR
|
||||
$ZUUL_CLONER --cache-dir \
|
||||
/opt/git \
|
||||
--branch $BRANCH_NAME \
|
||||
git://git.openstack.org \
|
||||
openstack/nova
|
||||
cd openstack/nova
|
||||
$install_cmd -e .
|
||||
popd
|
||||
else
|
||||
echo "PIP HARDCODE" > /tmp/tox_install.txt
|
||||
if [ -z "$NOVA_PIP_LOCATION" ]; then
|
||||
NOVA_PIP_LOCATION="git+https://git.openstack.org/openstack/nova@$BRANCH_NAME#egg=nova"
|
||||
fi
|
||||
$install_cmd -U -e ${NOVA_PIP_LOCATION}
|
||||
fi
|
||||
|
||||
$install_cmd -U $*
|
||||
exit $?
|
6
tox.ini
6
tox.ini
@ -1,11 +1,11 @@
|
||||
[tox]
|
||||
envlist = py35,py34,py27,pep8
|
||||
minversion = 1.6
|
||||
minversion = 2.0
|
||||
skipsdist = True
|
||||
|
||||
[testenv]
|
||||
usedevelop = True
|
||||
install_command = pip install -U {opts} {packages}
|
||||
install_command = {toxinidir}/tools/tox_install.sh {env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages}
|
||||
deps = -r{toxinidir}/test-requirements.txt
|
||||
-r{toxinidir}/requirements.txt
|
||||
setenv = VIRTUAL_ENV={envdir}
|
||||
@ -27,7 +27,7 @@ commands = {posargs}
|
||||
[flake8]
|
||||
show-source = true
|
||||
builtins = _
|
||||
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,tools
|
||||
exclude = .venv,.git,.tmp,.tox,dist,doc,*lib/python*,*egg,tools
|
||||
|
||||
[hacking]
|
||||
import_exceptions = nova.openstack.common.gettextutils
|
||||
|
Loading…
Reference in New Issue
Block a user