From 60996b1b60c3efb1376b9f0d659acebd05c47f09 Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Wed, 8 Apr 2015 09:06:49 -0400 Subject: [PATCH] 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 --- inc/python | 14 +++++++++++++- lib/ceilometer | 3 +++ lib/databases/mysql | 2 +- lib/databases/postgresql | 2 +- lib/horizon | 2 +- lib/ironic | 4 ++-- lib/keystone | 2 +- lib/ldap | 2 +- lib/nova_plugins/functions-libvirt | 6 +++--- lib/nova_plugins/hypervisor-xenserver | 2 +- lib/rpc_backend | 2 +- lib/tempest | 2 +- lib/zaqar | 4 ++-- pkg/elasticsearch.sh | 2 +- stack.sh | 2 +- 15 files changed, 33 insertions(+), 18 deletions(-) diff --git a/inc/python b/inc/python index 39684b6fc5..c7cbb52884 100644 --- a/inc/python +++ b/inc/python @@ -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 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 diff --git a/lib/ceilometer b/lib/ceilometer index 81353093b2..dba92ba542 100644 --- a/lib/ceilometer +++ b/lib/ceilometer @@ -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 } diff --git a/lib/databases/mysql b/lib/databases/mysql index 310817b69a..1b9a08199f 100644 --- a/lib/databases/mysql +++ b/lib/databases/mysql @@ -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" } diff --git a/lib/databases/postgresql b/lib/databases/postgresql index a6bcf8c0a2..e087a1e0d4 100644 --- a/lib/databases/postgresql +++ b/lib/databases/postgresql @@ -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" } diff --git a/lib/horizon b/lib/horizon index 63a9d0fe46..f953f5cc01 100644 --- a/lib/horizon +++ b/lib/horizon @@ -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 } diff --git a/lib/ironic b/lib/ironic index c8481ab992..7afed052e9 100644 --- a/lib/ironic +++ b/lib/ironic @@ -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 diff --git a/lib/keystone b/lib/keystone index 7b41812fca..31659f4338 100644 --- a/lib/keystone +++ b/lib/keystone @@ -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 } diff --git a/lib/ldap b/lib/ldap index d69d3f84a5..d2dbc3b728 100644 --- a/lib/ldap +++ b/lib/ldap @@ -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 } diff --git a/lib/nova_plugins/functions-libvirt b/lib/nova_plugins/functions-libvirt index d4a07688cd..04da5e2b60 100755 --- a/lib/nova_plugins/functions-libvirt +++ b/lib/nova_plugins/functions-libvirt @@ -31,12 +31,12 @@ function install_libvirt { install_package python-guestfs fi install_package libvirt-bin libvirt-dev - pip_install libvirt-python - #pip_install + pip_install_gr libvirt-python + #pip_install_gr 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 diff --git a/lib/nova_plugins/hypervisor-xenserver b/lib/nova_plugins/hypervisor-xenserver index 4d0ec898ad..efce383222 100644 --- a/lib/nova_plugins/hypervisor-xenserver +++ b/lib/nova_plugins/hypervisor-xenserver @@ -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 diff --git a/lib/rpc_backend b/lib/rpc_backend index cc083de449..2b7c6cbc64 100644 --- a/lib/rpc_backend +++ b/lib/rpc_backend @@ -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 diff --git a/lib/tempest b/lib/tempest index e8e9e0b239..cd8fbd725f 100644 --- a/lib/tempest +++ b/lib/tempest @@ -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 diff --git a/lib/zaqar b/lib/zaqar index 34f1915025..8d51910896 100644 --- a/lib/zaqar +++ b/lib/zaqar @@ -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 diff --git a/pkg/elasticsearch.sh b/pkg/elasticsearch.sh index f53c7f2ff2..29dc22fb88 100755 --- a/pkg/elasticsearch.sh +++ b/pkg/elasticsearch.sh @@ -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 diff --git a/stack.sh b/stack.sh index adcaa219cc..69b76a9e19 100755 --- a/stack.sh +++ b/stack.sh @@ -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