From b35949b303b85051bdde653522d02d7b33369b0d Mon Sep 17 00:00:00 2001 From: Logan V Date: Thu, 13 Sep 2018 15:19:05 -0600 Subject: [PATCH] Move ara to scripts-library Deployment jobs may wish to install the ARA callback using the same methods we use in the gate without using the test-oriented script gate-check-commit.sh. We can solve this by moving the ARA setup to a scripts-library function, and then call the function inside gate-check-commit. This will allow downstream users to source scripts-library and call the setup_ara function to install ARA as well. Change-Id: I789fb68be3f372757a4267e1cd7f8cd3b5cf8101 --- scripts/bootstrap-ansible.sh | 1 - scripts/gate-check-commit.sh | 21 ++------------------- scripts/scripts-library.sh | 24 ++++++++++++++++++++++++ 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/scripts/bootstrap-ansible.sh b/scripts/bootstrap-ansible.sh index f8e3063c66..3dfa5c7657 100755 --- a/scripts/bootstrap-ansible.sh +++ b/scripts/bootstrap-ansible.sh @@ -129,7 +129,6 @@ export UPPER_CONSTRAINTS_FILE=${UPPER_CONSTRAINTS_FILE:-"$UPPER_CONSTRAINTS_PROT virtualenv --python=${PYTHON_EXEC_PATH} --clear /opt/ansible-runtime # The vars used to prepare the Ansible runtime venv -PIP_COMMAND="/opt/ansible-runtime/bin/pip" PIP_OPTS+=" --constraint global-requirement-pins.txt" PIP_OPTS+=" --constraint ${UPPER_CONSTRAINTS_FILE}" diff --git a/scripts/gate-check-commit.sh b/scripts/gate-check-commit.sh index f10f95ca63..3c68a6d253 100755 --- a/scripts/gate-check-commit.sh +++ b/scripts/gate-check-commit.sh @@ -101,26 +101,9 @@ fi # Bootstrap Ansible source "${OSA_CLONE_DIR}/scripts/bootstrap-ansible.sh" -# PIP_COMMAND is now set within the ansible venv and PIP_OPTS is now set with constraints/proxy. -# Install ARA and add it to the callback path provided by bootstrap-ansible.sh/openstack-ansible.rc -# This is added *here* instead of bootstrap-ansible so it's used for CI purposes only. -ARA_SRC_HOME="${HOME}/src/git.openstack.org/openstack/ara" -if [[ -d "${ARA_SRC_HOME}" ]]; then - # This installs from a git checkout - # PIP_COMMAND and PIP_OPTS are exported by the bootstrap-ansible script. - # PIP_OPTS contains the whole set of constraints that need to be applied. - ${PIP_COMMAND} install --isolated ${PIP_OPTS} ${ARA_SRC_HOME} "${ANSIBLE_PACKAGE:-ansible}" -else - # This installs from pypi - # PIP_COMMAND and PIP_OPTS are exported by the bootstrap-ansible script. - # PIP_OPTS contains the whole set of constraints that need to be applied. - ${PIP_COMMAND} install --isolated ${PIP_OPTS} ara "${ANSIBLE_PACKAGE:-ansible}" -fi -# Dynamically retrieve the location of the ARA callback so we are able to find -# it on both py2 and py3 -ara_location=$(/opt/ansible-runtime/bin/python -c "import os,ara; print(os.path.dirname(ara.__file__))") -export ANSIBLE_CALLBACK_PLUGINS="/etc/ansible/roles/plugins/callback:${ara_location}/plugins/callbacks" +# Install and export the ARA callback plugin +setup_ara # Log some data about the instance and the rest of the system log_instance_info diff --git a/scripts/scripts-library.sh b/scripts/scripts-library.sh index 54a18f3a58..5c9411b542 100755 --- a/scripts/scripts-library.sh +++ b/scripts/scripts-library.sh @@ -22,6 +22,9 @@ ANSIBLE_PARAMETERS=${ANSIBLE_PARAMETERS:-""} STARTTIME="${STARTTIME:-$(date +%s)}" COMMAND_LOGS=${COMMAND_LOGS:-"/openstack/log/ansible_cmd_logs"} +# The vars used to prepare the Ansible runtime venv +PIP_COMMAND="/opt/ansible-runtime/bin/pip" + ZUUL_PROJECT="${ZUUL_PROJECT:-}" GATE_EXIT_LOG_COPY="${GATE_EXIT_LOG_COPY:-false}" GATE_EXIT_LOG_GZIP="${GATE_EXIT_LOG_GZIP:-true}" @@ -217,6 +220,27 @@ function gate_job_exit_tasks { fi } +function setup_ara { + # Install ARA and add it to the callback path provided by bootstrap-ansible.sh/openstack-ansible.rc + # This is added *here* instead of bootstrap-ansible so it's used for CI purposes only. + ARA_SRC_HOME="${HOME}/src/git.openstack.org/openstack/ara" + if [[ -d "${ARA_SRC_HOME}" ]]; then + # This installs from a git checkout + # PIP_COMMAND and PIP_OPTS are exported by the bootstrap-ansible script. + # PIP_OPTS contains the whole set of constraints that need to be applied. + ${PIP_COMMAND} install --isolated ${PIP_OPTS} ${ARA_SRC_HOME} "${ANSIBLE_PACKAGE:-ansible}" + else + # This installs from pypi + # PIP_COMMAND and PIP_OPTS are exported by the bootstrap-ansible script. + # PIP_OPTS contains the whole set of constraints that need to be applied. + ${PIP_COMMAND} install --isolated ${PIP_OPTS} ara "${ANSIBLE_PACKAGE:-ansible}" + fi + # Dynamically retrieve the location of the ARA callback so we are able to find + # it on both py2 and py3 + ara_location=$(/opt/ansible-runtime/bin/python -c "import os,ara; print(os.path.dirname(ara.__file__))") + export ANSIBLE_CALLBACK_PLUGINS="/etc/ansible/roles/plugins/callback:${ara_location}/plugins/callbacks" +} + function run_dstat { if [ "$GATE_EXIT_RUN_DSTAT" == true ]; then case ${DISTRO_ID} in