Merge "Openstack-clients: don't hard code venv"

This commit is contained in:
Jenkins 2014-04-25 13:21:58 +00:00 committed by Gerrit Code Review
commit 2947b6d998
11 changed files with 129 additions and 16 deletions

View File

@ -2,22 +2,61 @@
set -eux
client=$1
function usage() {
echo "options:"
echo " -h show usage and exit"
echo " -c client bin name"
echo " -i Optional: installation directory for the virtualenv."
echo " If not specified defaults to /opt/stack/venv/python-<client name>client"
echo " -s enable --system-site-packages in the virtualenv."
exit $1
}
client=""
install_dir=""
system_site_packages="False"
nshift=0
while getopts "hsi:c:" opt; do
case "$opt" in
c) client=$OPTARG;;
i) install_dir=$OPTARG;;
s) system_site_packages="True";;
h) usage 0;;
\?) usage 1;;
:) usage 1;;
esac
done
if [[ -z "$client" ]]; then
echo "missing required 'client' parameter"
exit 1
fi
repo=python-${client}client
client_manifest=$(get-pip-manifest ${repo})
venv_base=/opt/stack/venvs
if [ -z "$install_dir" ]; then
install_dir="/opt/stack/venvs/$repo"
fi
# We would like to use --system-site-packages here but if requirements.txt
# contains libraries that are installed globally with versions that don't
# satisfy our requirements.txt, we end up using the incorrect global library.
# Because the global site-packages appears first in sys.path
# TODO : Add this back in when we are using virtualenv >= 1.11
virtualenv $venv_base/$repo
SITE_PCKGS="--no-site-packages"
if [ $system_site_packages == "True" ]; then
SITE_PCKGS="--system-site-packages"
fi
virtualenv $SITE_PCKGS $install_dir
set +u
source $venv_base/$repo/bin/activate
source $install_dir/bin/activate
set -u
pushd /opt/stack/$repo
client_manifest=$(get-pip-manifest ${repo})
if [ -n "$client_manifest" ]; then
use-pip-manifest $client_manifest
else
@ -41,7 +80,7 @@ python setup.py develop
# Write the manifest of what was installed
write-pip-manifest $repo
ln -s $venv_base/$repo/bin/$client /usr/local/bin/$client
ln -s $install_dir/bin/$client /usr/local/bin/$client
popd
set +u

View File

@ -0,0 +1,73 @@
#!/bin/bash
# ceilometerclient
if [ -z "${CEILOMETERCLIENT_VENV_DIR:-}" ]; then
export CEILOMETERCLIENT_VENV_DIR=${OPENSTACK_VENV_DIR:-"/opt/stack/venvs/python-ceilometerclient"}
fi
if [ -z "${CEILOMETERCLIENT_EXTRA_INSTALL_OPTS:-}" ]; then
export CEILOMETERCLIENT_EXTRA_INSTALL_OPTS=${OPENSTACK_EXTRA_INSTALL_OPTS:-""}
fi
# cinderclient
if [ -z "${CINDERCLIENT_VENV_DIR:-}" ]; then
export CINDERCLIENT_VENV_DIR=${OPENSTACK_VENV_DIR:-"/opt/stack/venvs/python-cinderclient"}
fi
if [ -z "${CINDERCLIENT_EXTRA_INSTALL_OPTS:-}" ]; then
export CINDERCLIENT_EXTRA_INSTALL_OPTS=${OPENSTACK_EXTRA_INSTALL_OPTS:-""}
fi
# glanceclient
if [ -z "${GLANCECLIENT_VENV_DIR:-}" ]; then
export GLANCECLIENT_VENV_DIR=${OPENSTACK_VENV_DIR:-"/opt/stack/venvs/python-glanceclient"}
fi
if [ -z "${GLANCECLIENT_EXTRA_INSTALL_OPTS:-}" ]; then
export GLANCECLIENT_EXTRA_INSTALL_OPTS=${OPENSTACK_EXTRA_INSTALL_OPTS:-""}
fi
# heatclient
if [ -z "${HEATCLIENT_VENV_DIR:-}" ]; then
export HEATCLIENT_VENV_DIR=${OPENSTACK_VENV_DIR:-"/opt/stack/venvs/python-heatclient"}
fi
if [ -z "${HEATCLIENT_EXTRA_INSTALL_OPTS:-}" ]; then
export HEATCLIENT_EXTRA_INSTALL_OPTS=${OPENSTACK_EXTRA_INSTALL_OPTS:-""}
fi
# ironicclient
if [ -z "${IRONICCLIENT_VENV_DIR:-}" ]; then
export IRONICCLIENT_VENV_DIR=${OPENSTACK_VENV_DIR:-"/opt/stack/venvs/python-ironicclient"}
fi
if [ -z "${IRONICCLIENT_EXTRA_INSTALL_OPTS:-}" ]; then
export IRONICCLIENT_EXTRA_INSTALL_OPTS=${OPENSTACK_EXTRA_INSTALL_OPTS:-""}
fi
# keystoneclient
if [ -z "${KEYSTONECLIENT_VENV_DIR:-}" ]; then
export KEYSTONECLIENT_VENV_DIR=${OPENSTACK_VENV_DIR:-"/opt/stack/venvs/python-keystoneclient"}
fi
if [ -z "${KEYSTONECLIENT_EXTRA_INSTALL_OPTS:-}" ]; then
export KEYSTONECLIENT_EXTRA_INSTALL_OPTS=${OPENSTACK_EXTRA_INSTALL_OPTS:-""}
fi
# neutronclient
if [ -z "${NEUTRONCLIENT_VENV_DIR:-}" ]; then
export NEUTRONCLIENT_VENV_DIR=${OPENSTACK_VENV_DIR:-"/opt/stack/venvs/python-neutronclient"}
fi
if [ -z "${NEUTRONCLIENT_EXTRA_INSTALL_OPTS:-}" ]; then
export NEUTRONCLIENT_EXTRA_INSTALL_OPTS=${OPENSTACK_EXTRA_INSTALL_OPTS:-""}
fi
# novaclient
if [ -z "${NOVACLIENT_VENV_DIR:-}" ]; then
export NOVACLIENT_VENV_DIR=${OPENSTACK_VENV_DIR:-"/opt/stack/venvs/python-novaclient"}
fi
if [ -z "${NOVACLIENT_EXTRA_INSTALL_OPTS:-}" ]; then
export NOVACLIENT_EXTRA_INSTALL_OPTS=${OPENSTACK_EXTRA_INSTALL_OPTS:-""}
fi
# swiftclient
if [ -z "${SWIFTCLIENT_VENV_DIR:-}" ]; then
export SWIFTCLIENT_VENV_DIR=${OPENSTACK_VENV_DIR:-"/opt/stack/venvs/python-swiftclient"}
fi
if [ -z "${SWIFTCLIENT_EXTRA_INSTALL_OPTS:-}" ]; then
export SWIFTCLIENT_EXTRA_INSTALL_OPTS=${OPENSTACK_EXTRA_INSTALL_OPTS:-""}
fi

View File

@ -2,4 +2,4 @@
set -eux
install-openstack-client ceilometer
install-openstack-client $CEILOMETERCLIENT_EXTRA_INSTALL_OPTS -c ceilometer -i $CEILOMETERCLIENT_VENV_DIR

View File

@ -2,4 +2,5 @@
set -eux
install-openstack-client cinder
install-openstack-client $CINDERCLIENT_EXTRA_INSTALL_OPTS -c cinder -i $CINDERCLIENT_VENV_DIR

View File

@ -2,4 +2,4 @@
set -eux
install-openstack-client glance
install-openstack-client $GLANCECLIENT_EXTRA_INSTALL_OPTS -c glance -i $GLANCECLIENT_VENV_DIR

View File

@ -2,4 +2,4 @@
set -eux
install-openstack-client heat
install-openstack-client $HEATCLIENT_EXTRA_INSTALL_OPTS -c heat -i $HEATCLIENT_VENV_DIR

View File

@ -2,4 +2,4 @@
set -eux
install-openstack-client ironic
install-openstack-client $IRONICCLIENT_EXTRA_INSTALL_OPTS -c ironic -i $IRONICCLIENT_VENV_DIR

View File

@ -2,4 +2,4 @@
set -eux
install-openstack-client keystone
install-openstack-client $KEYSTONECLIENT_EXTRA_INSTALL_OPTS -c keystone -i $KEYSTONECLIENT_VENV_DIR

View File

@ -2,4 +2,4 @@
set -eux
install-openstack-client neutron
install-openstack-client $IRONICCLIENT_EXTRA_INSTALL_OPTS -c neutron -i $IRONICCLIENT_VENV_DIR

View File

@ -2,4 +2,4 @@
set -eux
install-openstack-client nova
install-openstack-client $NOVACLIENT_EXTRA_INSTALL_OPTS -c nova -i $NOVACLIENT_VENV_DIR

View File

@ -2,8 +2,8 @@
set -eux
install-openstack-client swift
install-openstack-client $SWIFTCLIENT_EXTRA_INSTALL_OPTS -c swift -i $SWIFTCLIENT_VENV_DIR
# the swift client doesn't have keystoneclient as a dependency, tripleo is
# using keystone auth so we need to explicitly install it. Bug 1085740.
/opt/stack/venvs/python-swiftclient/bin/pip install python-keystoneclient
$SWIFTCLIENT_VENV_DIR/bin/pip install python-keystoneclient