From 8ae853d309bf3daec8f17065819a8d6aeec5b224 Mon Sep 17 00:00:00 2001 From: Qin Wang Date: Wed, 17 Aug 2016 22:28:40 +0000 Subject: [PATCH] Add SNI support via OS packages for os_rally Some Linux distributions, such as CentOS 7 and Xenial, have trouble validating SSL certificates when using get_url with servers that use Server Name Indication (SNI). This patch adds those packages to the list of required packages and uses bindep to install them in developer test environments the same way that the gate tests install them. Change-Id: Ic3bf4b4238c1c6260d3c8dc0e4800ff26691ae93 --- bindep.txt | 29 ++++++++++++++++++++++++++--- run_tests.sh | 32 ++++++++++++++++++++++---------- 2 files changed, 48 insertions(+), 13 deletions(-) diff --git a/bindep.txt b/bindep.txt index a57dc98..931e963 100644 --- a/bindep.txt +++ b/bindep.txt @@ -10,6 +10,29 @@ # will fall back to installing its default packages which # will potentially be detrimental to the tests executed. -# Requirements for Paramiko 2.0 -libssl-dev -libffi-dev +# Base requirements for Ubuntu +build-essential [platform:dpkg] +git-core [platform:dpkg] +libssl-dev [platform:dpkg] +libffi-dev [platform:dpkg] +python2.7 [platform:dpkg] +python-dev [platform:dpkg] + +# Base requirements for CentOS +gcc [platform:rpm] +gcc-c++ [platform:rpm] +git [platform:rpm] +python-devel [platform:rpm] +libffi-devel [platform:rpm] +openssl-devel [platform:rpm] + +# For SELinux +libselinux-python [platform:rpm] + +# For SSL SNI support +python-pyasn1 [platform:dpkg] +python-openssl [platform:dpkg] +python-ndg-httpsclient [platform:ubuntu !platform:ubuntu-trusty] +python2-pyasn1 [platform:rpm] +pyOpenSSL [platform:rpm] +python-ndg_httpsclient [platform:rpm] diff --git a/run_tests.sh b/run_tests.sh index d9d15b8..0a49aa3 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -17,25 +17,37 @@ set -euov FUNCTIONAL_TEST=${FUNCTIONAL_TEST:-true} -# prep the host -if [ "$(which apt-get)" ]; then - apt-get install -y build-essential python2.7 python-dev git-core libssl-dev libffi-dev -fi - -# get pip, if necessary +# Install pip if [ ! "$(which pip)" ]; then curl --silent --show-error --retry 5 \ https://bootstrap.pypa.io/get-pip.py | sudo python2.7 fi -# install tox -pip install tox +# Install bindep and tox +pip install bindep tox + +# CentOS 7 requires two additional packages: +# redhat-lsb-core - for bindep profile support +# epel-release - required to install python-ndg_httpsclient/python2-pyasn1 +if [ "$(which yum)" ]; then + yum -y install redhat-lsb-core epel-release +fi + +# Install OS packages using bindep +if apt-get -v >/dev/null 2>&1 ; then + apt-get update + DEBIAN_FRONTEND=noninteractive \ + apt-get -q --option "Dpkg::Options::=--force-confold" \ + --assume-yes install `bindep -b -f bindep.txt test` +else + yum install -y `bindep -b -f bindep.txt test` +fi # run through each tox env and execute the test for tox_env in $(awk -F= '/envlist/ {print $2}' tox.ini | sed 's/,/ /g'); do - if [ "${tox_env}" != "functional" ]; then + if [ "${tox_env}" != "ansible-functional" ]; then tox -e ${tox_env} - elif [ "${tox_env}" == "functional" ]; then + elif [ "${tox_env}" == "ansible-functional" ]; then if ${FUNCTIONAL_TEST}; then tox -e ${tox_env} fi