Deploy modern ara for CentOS 8 deployments

As CentOS 8 is not compatible with old ara, we installing new one isnted
Also providing py3 as default python for CentOS 8

Change-Id: I264e6f8bfa507668dada7b629af52a8a13001a45
This commit is contained in:
Marc Gariepy 2020-05-14 15:11:53 -04:00 committed by Dmitriy Rabotyagov
parent c351f1143c
commit 0b59539f55
5 changed files with 32 additions and 24 deletions

View File

@ -47,3 +47,4 @@ git [platform:gentoo]
# For SELinux
libselinux-python3 [platform:redhat]
libsemanage-python3 [platform:redhat]
iptables [platform:redhat]

View File

@ -55,6 +55,7 @@ case "${ID,,}" in
# tox later installing virtualenv as a dependancy with pip, and breaking later tests with
# openstack_hosts which correctly install the python-virtualenv distro package
[[ "${VERSION_ID}" == "7" ]] && extra_redhat_deps="python-virtualenv"
[[ "${VERSION_ID}" == "8" ]] && sudo alternatives --set python /usr/bin/python3
pkg_list="python3-devel redhat-lsb-core yum-utils ${extra_redhat_deps:-}"
;;
fedora)

View File

@ -87,11 +87,13 @@ function setup_ara {
[[ -L "${ANSIBLE_PLUGIN_DIR}/callback/ara" ]] && return 0
# Dynamically figure out the location of ARA (ex: py2 vs py3)
ara_location=$(python -c "import os,ara; print(os.path.dirname(ara.__file__))")
ara_location=$(python -m ara.setup.callback_plugins 2>/dev/null)
echo "Linking ${ANSIBLE_PLUGIN_DIR}/callback/ara to ${ara_location}/plugins/callbacks/"
echo "Linking ${ara_location} to ${ANSIBLE_PLUGIN_DIR}/callback/ara"
mkdir -p "${ANSIBLE_PLUGIN_DIR}/callback/ara"
ln -sf "${ara_location}/plugins/callbacks" "${ANSIBLE_PLUGIN_DIR}/callback/ara/"
if [ -d ${ara_location} ]; then
ln -sf "${ara_location}" "${ANSIBLE_PLUGIN_DIR}/callback/ara/"
fi
}
@ -188,12 +190,22 @@ else
PIP_OPTS+=" --constraint ${UPPER_CONSTRAINTS_FILE:-https://opendev.org/openstack/requirements/raw/${TESTING_BRANCH}/upper-constraints.txt}"
fi
source /etc/os-release || source /usr/lib/os-release
# Install selinux into venv
if [[ ${ID,,} =~ (centos|rhel|fedora) ]]; then
PIP_OPTS+=" selinux"
fi
# Install ARA from source if running in ARA gate, otherwise install from PyPi
ARA_SRC_HOME="${TESTING_HOME}/src/opendev.org/recordsansible/ara"
if [[ -d "${ARA_SRC_HOME}" ]]; then
PIP_OPTS+=" ${ARA_SRC_HOME}"
else
PIP_OPTS+=" ara<1.0.0"
if [[ ${VERSION_ID} == "8" && ${ID} == "centos" ]]; then
PIP_OPTS+=" ara<1.0.0;python_version<'3.0' ara[server];python_version>='3.0'"
else
PIP_OPTS+=" ara<1.0.0"
fi
fi
# Install all python packages
@ -252,18 +264,3 @@ fi
# Setup ARA
setup_ara
# Ensure that SElinux bindings are linked into the venv
source /etc/os-release || source /usr/lib/os-release
if [[ ${ID,,} =~ (centos|rhel|fedora) ]]; then
if [ "${ID}" == "fedora" ]; then
SELINUX_PKG="python2-libselinux"
else
SELINUX_PKG="libselinux-python"
fi
PYTHON_FOLDER=$(find ${VIRTUAL_ENV}/lib -maxdepth 1 -type d -name "python*")
SELINUX_FOLDER=$(rpm -ql ${SELINUX_PKG} | egrep '^.*python2.7.*/(site|dist)-packages/selinux$')
echo "RHEL variant found. Linking ${PYTHON_FOLDER}/site-packages/selinux to ${SELINUX_FOLDER}..."
ln -sfn ${SELINUX_FOLDER} ${PYTHON_FOLDER}/site-packages/selinux
fi

View File

@ -200,11 +200,20 @@ store_artifacts /var/log/ "${WORKING_DIR}/logs/host"
# As this script is not run through tox, and the tox envs are all
# different names, we need to try and find the right path to execute
# ARA from.
ARA_CMD="$(find ${WORKING_DIR}/.tox -path "*/bin/ara" -type f | head -n 1)"
source /etc/os-release || source /usr/lib/os-release
if [[ ${VERSION_ID} == "8" && ${ID} == "centos" ]]; then
#centos-8 is pinned to ara>=1.0
ARA_CMD="$(find ${WORKING_DIR}/.tox -path "*/bin/ara-manage" -type f | head -n 1)"
ARA_OPTIONS="generate ${WORKING_DIR}/logs/ara-report"
else
ARA_CMD="$(find ${WORKING_DIR}/.tox -path "*/bin/ara" -type f | head -n 1)"
ARA_OPTIONS="generate html ${WORKING_DIR}/logs/ara-report"
fi
if [[ "${ARA_CMD}" != "" ]]; then
echo "Generating ARA static html report."
${ARA_CMD} generate html "${WORKING_DIR}/logs/ara-report"
echo "Generating ARA static html report."
${ARA_CMD} ${ARA_OPTIONS}
fi
# Store the ara sqlite database in the openstack-ci expected path
@ -254,7 +263,7 @@ rename_files
# If we could not find ARA, assume it was not installed
# and skip all the related activities.
if [[ "${ARA_CMD}" != "" ]]; then
if [[ "${ARA_CMD}" != "" && ! (${VERSION_ID} == "8" && ${ID} == "centos") ]]; then
# Generate the ARA subunit report so that the
# results reflect in OpenStack-Health
mkdir -vp "${WORKING_DIR}/logs/ara-data"

View File

@ -21,4 +21,4 @@ bridges:
ip_addr: "10.1.2.1"
veth_peer: "veth-test"
ansible_python_interpreter: "/usr/bin/python2"
ansible_python_interpreter: "/usr/bin/python"