From 3c0a7dbb638b633855658baed38e3b871a5bcac0 Mon Sep 17 00:00:00 2001 From: Victor Morales Date: Thu, 1 Oct 2020 17:24:32 -0400 Subject: [PATCH] Switch to Python Virtual Environment Virtual Environments allow the python modules installation without affecting the hosting node. This helps to control dependencies required by this project. Signed-off-by: Victor Morales Change-Id: Ib53d9dd335a4707ff863a6fd732d23d323513430 Reviewed-on: https://gerrit.opnfv.org/gerrit/c/kuberef/+/71195 Tested-by: jenkins-ci Reviewed-by: Michael Pedersen Reviewed-by: Rihab Banday --- bindep.txt | 1 + deploy.sh | 9 ++++++++- functions.sh | 33 +++++++++++++++++++++++++++++---- tox.ini | 1 + 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/bindep.txt b/bindep.txt index f989692..fc14d44 100644 --- a/bindep.txt +++ b/bindep.txt @@ -1,5 +1,6 @@ python3-all-dev [platform:dpkg] python3-all [platform:dpkg] python-all-dev [platform:dpkg] +pkg-config [platform:dpkg] python-devel [platform:rpm !platform:centos-8] python3-devel [platform:rpm] diff --git a/deploy.sh b/deploy.sh index 7b230f1..d817022 100755 --- a/deploy.sh +++ b/deploy.sh @@ -8,9 +8,11 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -set -o xtrace set -o errexit set -o nounset +if [ "${DEBUG:-false}" == "true" ]; then + set -o xtrace +fi # Script for end to end RI-2 deployment using Infra engine and BMRA. # Please refer to README for detailed information. @@ -30,6 +32,11 @@ check_prerequisites # shellcheck source=./deploy.env source "$CURRENTPATH/deploy.env" +# --------------------------------------------------------------------- +# creates a virtual environment for installation of dependencies +# --------------------------------------------------------------------- +creates_virtualenv + # --------------------------------------------------------------------- # bootstrap install prerequisites # --------------------------------------------------------------------- diff --git a/functions.sh b/functions.sh index 03e2284..305dcb7 100755 --- a/functions.sh +++ b/functions.sh @@ -26,6 +26,9 @@ assert_non_empty() { error "$2" fi } +if [ "${DEBUG:-false}" == "true" ]; then + set -o xtrace +fi check_prerequisites() { info "Check prerequisites" @@ -65,7 +68,21 @@ check_prerequisites() { sudo sed -i "s/^Defaults.*env_reset/#&/" /etc/sudoers #------------------------------------------------------------------------------- - # Check if some tools are installed + # Check if Python Virtual Environment is installed + #------------------------------------------------------------------------------- + if ! command -v virtualenv &> /dev/null; then + error "VirtualEnv not found. Please install." + fi + + #------------------------------------------------------------------------------- + # Check if PIP Installs Packages is installed + #------------------------------------------------------------------------------- + if ! command -v pip &> /dev/null; then + error "PIP not found. Please install." + fi + + #------------------------------------------------------------------------------- + # Check is libvirt is installed #------------------------------------------------------------------------------- for tool in ansible yq virsh jq; do if ! command -v "$tool" &> /dev/null; then @@ -253,11 +270,19 @@ EOF fi } +# Creates a python virtual environment +creates_virtualenv() { + if [ ! -d "$CURRENTPATH/.venv" ]; then + virtualenv .venv + fi + # shellcheck disable=SC1090 + source "$CURRENTPATH/.venv/bin/activate" + pip install -r "$CURRENTPATH/requirements.txt" +} + # Executes a specific Ansible playbook run_playbook() { - ansible_cmd="$(command -v ansible-playbook)" - ansible_cmd+=" -i $CURRENTPATH/inventory/localhost.ini" - ansible_cmd+=" -e ansible_python_interpreter=$(command -v python)" + ansible_cmd="$(command -v ansible-playbook) -i $CURRENTPATH/inventory/localhost.ini -e ansible_python_interpreter=$(command -v python)" if [ "${DEBUG:-false}" == "true" ]; then ansible_cmd+=" -vvv" fi diff --git a/tox.ini b/tox.ini index 0d309d7..a4d4dc7 100644 --- a/tox.ini +++ b/tox.ini @@ -12,6 +12,7 @@ deps = whitelist_externals = bash commands = bash -c "find {toxinidir} \ -not -path {toxinidir}/.tox/\* \ + -not -path {toxinidir}/.venv/\* \ # E006 check for lines longer than 79 columns -name \*.sh | xargs bashate -v -iE006" bash -c "yamllint {toxinidir}" -- 2.16.6