summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmrith Kumar <amrith@amrith.org>2016-11-16 20:23:10 -0500
committerAmrith Kumar <amrith@amrith.org>2016-11-16 22:38:20 -0500
commit1ae94d4107dc0faf8d936d55f3bb398a709428c4 (patch)
tree759d0f9e8f1cfa0d8f257d6f1d94dcaa62d1f61d
parentf2435453f38210cd758d616c1bba5490cfb3ca99 (diff)
downloadpython-troveclient-1ae94d4107dc0faf8d936d55f3bb398a709428c4.tar.gz
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
-rwxr-xr-xtools/tox_install.sh55
-rw-r--r--tox.ini4
2 files changed, 58 insertions, 1 deletions
diff --git a/tools/tox_install.sh b/tools/tox_install.sh
new file mode 100755
index 0000000..1a3164c
--- /dev/null
+++ b/tools/tox_install.sh
@@ -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 $?
diff --git a/tox.ini b/tox.ini
index ff61a4d..a329143 100644
--- a/tox.ini
+++ b/tox.ini
@@ -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