introduce pip_install_gr

This creates a new pip_install_gr that installs from global
requirements allowed versions. Now that stable branches are getting
capped all of devstack needs to be fixed to do things like this.

Change-Id: I8fd0ef2bfc544ca2576fab09d3018f760b8848fe
This commit is contained in:
Sean Dague 2015-04-08 09:06:49 -04:00
parent d1549d624d
commit 60996b1b60
15 changed files with 33 additions and 18 deletions

View File

@ -52,6 +52,18 @@ function get_python_exec_prefix {
fi
}
# Wrapper for ``pip install`` that only installs versions of libraries
# from the global-requirements specification.
#
# Uses globals ``REQUIREMENTS_DIR``
#
# pip_install_gr packagename
function pip_install_gr {
local name=$1
local clean_name=$(get_from_global_requirements $name)
pip_install $clean_name
}
# Wrapper for ``pip install`` to set cache and proxy environment variables
# Uses globals ``OFFLINE``, ``PIP_VIRTUAL_ENV``,
# ``PIP_UPGRADE``, ``TRACK_DEPENDS``, ``*_proxy``
@ -125,7 +137,7 @@ function pip_install {
# get_from_global_requirements <package>
function get_from_global_requirements {
local package=$1
local required_pkg=$(grep -h ${package} $REQUIREMENTS_DIR/global-requirements.txt | cut -d\# -f1)
local required_pkg=$(grep -h ^${package} $REQUIREMENTS_DIR/global-requirements.txt | cut -d\# -f1)
if [[ $required_pkg == "" ]]; then
die $LINENO "Can't find package $package in requirements"
fi

View File

@ -315,6 +315,9 @@ function install_ceilometermiddleware {
git_clone_by_name "ceilometermiddleware"
setup_dev_lib "ceilometermiddleware"
else
# BUG: this should be a pip_install_gr except it was never
# included in global-requirements. Needs to be fixed by
# https://bugs.launchpad.net/ceilometer/+bug/1441655
pip_install ceilometermiddleware
fi
}

View File

@ -155,7 +155,7 @@ EOF
function install_database_python_mysql {
# Install Python client module
pip_install MySQL-python
pip_install_gr MySQL-python
ADDITIONAL_VENV_PACKAGES+=",MySQL-python"
}

View File

@ -104,7 +104,7 @@ EOF
function install_database_python_postgresql {
# Install Python client module
pip_install psycopg2
pip_install_gr psycopg2
ADDITIONAL_VENV_PACKAGES+=",psycopg2"
}

View File

@ -183,7 +183,7 @@ function stop_horizon {
# NOTE: It can be moved to common functions, but it is only used by compilation
# of django_openstack_auth catalogs at the moment.
function _prepare_message_catalog_compilation {
pip_install $(get_from_global_requirements Babel)
pip_install_gr Babel
}

View File

@ -206,7 +206,7 @@ function install_ironicclient {
sudo install -D -m 0644 -o $STACK_USER {${GITDIR["python-ironicclient"]}/tools/,/etc/bash_completion.d/}ironic.bash_completion
else
# nothing actually "requires" ironicclient, so force instally from pypi
pip_install python-ironicclient
pip_install_gr python-ironicclient
fi
}
@ -729,7 +729,7 @@ function upload_baremetal_ironic_deploy {
# install diskimage-builder
if [[ $(type -P ramdisk-image-create) == "" ]]; then
pip_install diskimage_builder
pip_install_gr "diskimage-builder"
fi
if [ -z "$IRONIC_DEPLOY_KERNEL" -o -z "$IRONIC_DEPLOY_RAMDISK" ]; then

View File

@ -524,7 +524,7 @@ function install_keystonemiddleware {
setup_dev_lib "keystonemiddleware"
else
# When not installing from repo, keystonemiddleware is still needed...
pip_install keystonemiddleware
pip_install_gr keystonemiddleware
fi
}

View File

@ -142,7 +142,7 @@ function install_ldap {
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
fi
pip_install ldappool
pip_install_gr ldappool
rm -rf $tmp_ldap_dir
}

View File

@ -31,12 +31,12 @@ function install_libvirt {
install_package python-guestfs
fi
install_package libvirt-bin libvirt-dev
pip_install libvirt-python
#pip_install <there-si-no-guestfs-in-pypi>
pip_install_gr libvirt-python
#pip_install_gr <there-si-no-guestfs-in-pypi>
elif is_fedora || is_suse; then
install_package kvm
install_package libvirt libvirt-devel
pip_install libvirt-python
pip_install_gr libvirt-python
install_package python-libguestfs
fi

View File

@ -94,7 +94,7 @@ CRONTAB
# install_nova_hypervisor() - Install external components
function install_nova_hypervisor {
pip_install xenapi
pip_install_gr xenapi
}
# start_nova_hypervisor - Start any required external services

View File

@ -141,7 +141,7 @@ function install_rpc_backend {
# TODO(kgiusti) can remove once python qpid bindings are
# available on all supported platforms _and_ pyngus is added
# to the requirements.txt file in oslo.messaging
pip_install pyngus
pip_install_gr pyngus
fi
if is_service_enabled rabbit; then

View File

@ -103,7 +103,7 @@ function configure_tempest {
setup_develop $TEMPEST_DIR
else
# install testr since its used to process tempest logs
pip_install $(get_from_global_requirements testrepository)
pip_install_gr testrepository
fi
local image_lines

View File

@ -140,10 +140,10 @@ function configure_zaqar {
function configure_redis {
if is_ubuntu; then
install_package redis-server
pip_install redis
pip_install_gr redis
elif is_fedora; then
install_package redis
pip_install redis
pip_install_gr redis
else
exit_distro_not_supported "redis installation"
fi

View File

@ -77,7 +77,7 @@ function stop_elasticsearch {
}
function install_elasticsearch {
pip_install elasticsearch
pip_install_gr elasticsearch
if is_package_installed elasticsearch; then
echo "Note: elasticsearch was already installed."
return

View File

@ -847,7 +847,7 @@ if use_library_from_git "python-openstackclient"; then
git_clone_by_name "python-openstackclient"
setup_dev_lib "python-openstackclient"
else
pip_install 'python-openstackclient>=1.0.2'
pip_install_gr python-openstackclient
fi
if [[ $TRACK_DEPENDS = True ]]; then