Get python-troveclient to use upper-constraints.txt

In review[1] which passed just fine in check some days ago failed in
gate today. This is because the current tox environment uses requests
v2.12.1 which appears to not work and is beyond the value in
upper-constraints.txt. As observed in [2] we need
upper-constraints.txt in python-troveclient.

But since python-troveclient is itself listed in upper-constraints.txt
you can't just stick it in tox.ini and expect good things to happen.

I'm adding a co-author to this change based on [2].

[1] https://review.openstack.org/#/c/382493/
[2] https://review.openstack.org/#/c/398339/

Co-Authored-By: jiansong <jian.song@easystack.cn>
Change-Id: I386efb2d5c147417af7ea25704405977c9b6bbcd
This commit is contained in:
Amrith Kumar 2016-11-16 20:23:10 -05:00
parent f2435453f3
commit 1ae94d4107
2 changed files with 58 additions and 1 deletions

55
tools/tox_install.sh Executable file
View File

@ -0,0 +1,55 @@
#!/usr/bin/env bash
# Client constraint file contains this client version pin that is in conflict
# with installing the client from source. We should replace the version pin in
# the constraints file before applying it for from-source installation.
ZUUL_CLONER=/usr/zuul-env/bin/zuul-cloner
BRANCH_NAME=master
CLIENT_NAME=python-troveclient
requirements_installed=$(echo "import openstack_requirements" | python 2>/dev/null ; echo $?)
set -e
CONSTRAINTS_FILE=$1
shift
install_cmd="pip install"
mydir=$(mktemp -dt "$CLIENT_NAME-tox_install-XXXXXXX")
trap "rm -rf $mydir" EXIT
localfile=$mydir/upper-constraints.txt
if [[ $CONSTRAINTS_FILE != http* ]]; then
CONSTRAINTS_FILE=file://$CONSTRAINTS_FILE
fi
curl $CONSTRAINTS_FILE -k -o $localfile
install_cmd="$install_cmd -c$localfile"
if [ $requirements_installed -eq 0 ]; then
echo "ALREADY INSTALLED" > /tmp/tox_install.txt
echo "Requirements already installed; using existing package"
elif [ -x "$ZUUL_CLONER" ]; then
echo "ZUUL CLONER" > /tmp/tox_install.txt
pushd $mydir
$ZUUL_CLONER --cache-dir \
/opt/git \
--branch $BRANCH_NAME \
git://git.openstack.org \
openstack/requirements
cd openstack/requirements
$install_cmd -e .
popd
else
echo "PIP HARDCODE" > /tmp/tox_install.txt
if [ -z "$REQUIREMENTS_PIP_LOCATION" ]; then
REQUIREMENTS_PIP_LOCATION="git+https://git.openstack.org/openstack/requirements@$BRANCH_NAME#egg=requirements"
fi
$install_cmd -U -e ${REQUIREMENTS_PIP_LOCATION}
fi
# This is the main purpose of the script: Allow local installation of
# the current repo. It is listed in constraints file and thus any
# install will be constrained and we need to unconstrain it.
edit-constraints $localfile -- $CLIENT_NAME "-e file://$PWD#egg=$CLIENT_NAME"
$install_cmd -U $*
exit $?

View File

@ -13,7 +13,9 @@ setenv = VIRTUAL_ENV={envdir}
NOSE_OPENSTACK_YELLOW=0.025
NOSE_OPENSTACK_SHOW_ELAPSED=1
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}/requirements.txt
-r{toxinidir}/test-requirements.txt
commands = find . -type f -name "*.pyc" -delete