From: Anil Belur Date: Wed, 7 Sep 2022 12:20:28 +0000 (+1000) Subject: Feat!: Re-factor lf-activate-venv() to re-use venv X-Git-Tag: v0.81.0~1 X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F97%2F70597%2F8;p=releng%2Fglobal-jjb.git Feat!: Re-factor lf-activate-venv() to re-use venv Add new CLI option to set venv file. Example: lf-activate-venv --venv-file /tmp/.robot_venv \ robotframework Modify lf-activate-venv() to allow creation of a venv file and re-use the venv to improve job performance. When a dependency is already installed, pip skips the package therefore reduces the time it takes to create venv in every script. Precedence for venv file. a. Re-use an existing venv file if one exists. 1. Use venv file path from --venv-file 2. Use default venv file path "/tmp/.os_lf_venv" b. Create new venv when 1. and 2. is absent Note: The default file "/tmp/.os_lf_venv" is created by a pre-build script (../shell/python-tools-install.sh). In the situation where a fresh venv is required remove "/tmp/.os_lf_venv" before calling lf-activate-venv(). Update all the required scripts that call lf-activate-venv(). Issue-ID: RELENG-4403 Change-Id: I559f759a8dba7eca0a62f8b73a360dc627699ed2 Signed-off-by: Anil Belur --- diff --git a/jenkins-init-scripts/lf-env.sh b/jenkins-init-scripts/lf-env.sh index 114f0c17..bd9f7807 100644 --- a/jenkins-init-scripts/lf-env.sh +++ b/jenkins-init-scripts/lf-env.sh @@ -95,7 +95,7 @@ lf-boolean () { ################################################################################ # # NAME -# lf-activate-venv [-p|--python python] [--no-path] +# lf-activate-venv [-p|--python python] [-v|--venv-file] [--no-path] # [--system-site-packages] [package]... # # SYNOPSIS @@ -110,6 +110,8 @@ lf-boolean () { # or # lf-activate-venv --python python3.8 git-review # +# lf-activate-venv --python python3.8 --venv-file /tmp/.myvenv git-review +# # DESCRIPTION # This function will create a new Python Virtual Environment (venv) and # install the specified packages in the new venv. The venv will be installed @@ -117,8 +119,19 @@ lf-boolean () { # to the PATH. # # The 'lf_venv' variable will be set so you can directly execute commands -# in the venv with: $lf_venv/bin/command. Beware that subsequent calls to -# lf-activate-venv() will overwrite 'lf_venv'. +# in the venv with: $lf_venv/bin/command. lf-activate-venv() will check for +# existing file '/tmp/.os_lf_venv' and set 'lf_venv' if the file exists. +# +# The function provides a --venv-file path for saving the value of the 'lf_env' +# that can re-used later. By default '/tmp/.os_lf_venv' venv file is created +# when the --venv-file option is not specified. +# +# Subsequent calls to lf-activate-venv() will re-use the existing venv +# throught and will NOT overwrite 'lf_venv', if the '/tmp/.os_lf_venv' +# already exists. +# +# If a new venv is required delete the file '/tmp/.os_lf_venv' before +# calling lf-activate-venv() will create a fresh venv. # # By default all packages are installed with '--upgrade-strategy eager'. # The venv will always contain pip & virtualenv. @@ -148,17 +161,20 @@ lf-boolean () { lf-activate-venv () { lf_venv=$(mktemp -d /tmp/venv-XXXX) + local venv_file="/tmp/.os_lf_venv" local python=python3 local options local set_path=true local install_args="" - options=$(getopt -o 'n:p:' -l 'no-path,python:,system-site-packages' \ + # set -x + options=$(getopt -o 'np:v:' -l 'no-path,system-site-packages,python:,venv-file:' \ -n "${FUNCNAME[0]}" -- "$@" ) eval set -- "$options" while true; do case $1 in -n|--no-path) set_path=false ; shift ;; - -p|--python) python=$2 ; shift 2 ;; + -p|--python) python="$2" ; shift 2 ;; + -v|--venv-file) venv_file="$2" ; shift 2 ;; --system-site-packages) install_args="--system-site-packages" ; shift ;; --) shift; break ;; @@ -168,8 +184,6 @@ lf-activate-venv () { esac done - echo "${FUNCNAME[0]}(): INFO: Creating $python venv at $lf_venv" - case $python in python2*) local pkg_list="$*" @@ -189,7 +203,6 @@ lf-activate-venv () { local pkg_list="" # Use pyenv for selecting the python version if [[ -d "/opt/pyenv" ]]; then - # set_python_version = pyver "${python//[a-zA-Z]/}" echo "Setup pyenv:" export PYENV_ROOT="/opt/pyenv" export PATH="$PYENV_ROOT/bin:$PATH" @@ -199,6 +212,7 @@ lf-activate-venv () { pyenv local $(lf-pyver "${python}") fi fi + # Add version specifier for some packages for arg in "$@"; do case $arg in @@ -207,7 +221,23 @@ lf-activate-venv () { *) pkg_list+="$arg " ;; esac done - $python -m venv "$install_args" "$lf_venv" || return 1 + + # Precedence: + # - Re-use venv: + # 1. --venv-file as lf_venv + # 2. default: "/tmp/.os_lf_venv" + # - Create new venv when 1. and 2. is absent + if [ -f "$venv_file" ]; then + lf_venv=$(cat "$venv_file") + echo "${FUNCNAME[0]}(): INFO: Reuse venv:$lf_venv from" \ + "file:$venv_file" + elif [ ! -f "$venv_file" ]; then + $python -m venv "$install_args" "$lf_venv" || return 1 + echo "${FUNCNAME[0]}(): INFO: Creating $python venv at $lf_venv" + echo "$lf_venv" > "$venv_file" + echo "${FUNCNAME[0]}(): INFO: Save venv in file: $venv_file" + fi + "$lf_venv/bin/pip" install --upgrade --quiet pip virtualenv || return 1 if [[ -z $pkg_list ]]; then echo "${FUNCNAME[0]}(): WARNING: No packages to install" diff --git a/releasenotes/notes/refactor-lf-activate-venv-0bf51b617553ab93.yaml b/releasenotes/notes/refactor-lf-activate-venv-0bf51b617553ab93.yaml new file mode 100644 index 00000000..e8316e60 --- /dev/null +++ b/releasenotes/notes/refactor-lf-activate-venv-0bf51b617553ab93.yaml @@ -0,0 +1,29 @@ +--- +features: + - | + Add support for a new option to set venv file. + + lf-activate-venv --venv-file /tmp/.robot_venv robotframework + + Modify lf-activate-venv() to allow creation of a venv file and re-use the + venv to improve job performance. When a dependency is already installed, pip + skips the package therefore reduces the time it takes to create + venv in every script. + + Precedence for venv file. + a. Re-use an existing venv file if one exists. + 1. Use venv file path from --venv-file + 2. Use default venv file path "/tmp/.os_lf_venv" + b. Create new venv when 1. and 2. is absent + + Note: The default file "/tmp/.os_lf_venv" is created by a pre-build + script (../shell/python-tools-install.sh). + + In the situation where a fresh venv is required remove "/tmp/.os_lf_venv" + before calling lf-activate-venv(). + + Update all the required scripts that call lf-activate-venv(). +fixes: + - | + Clean up conditions introduce in the shell scripts, while these checks + are performed within lf-activate-venv(). diff --git a/shell/deploy-maven-file.sh b/shell/deploy-maven-file.sh index e4559abb..a057fe19 100644 --- a/shell/deploy-maven-file.sh +++ b/shell/deploy-maven-file.sh @@ -31,6 +31,11 @@ echo "---> deploy-maven-file.sh" set -e -o pipefail set +u +# shellcheck disable=SC1090 +. ~/lf-env.sh + +lf-activate-venv --python python3 lftools + export MAVEN_OPTIONS export MAVEN_PARAMS diff --git a/shell/jenkins-configure-clouds.sh b/shell/jenkins-configure-clouds.sh index 18589c0b..06cb4a3d 100644 --- a/shell/jenkins-configure-clouds.sh +++ b/shell/jenkins-configure-clouds.sh @@ -292,6 +292,10 @@ get_template_cfg() { echo ")" } +# shellcheck disable=SC1090 +. ~/lf-env.sh + +lf-activate-venv --python python3 lftools mapfile -t clouds < <(ls -d1 "$OS_CLOUD_DIR"/*/) diff --git a/shell/jenkins-configure-global-vars.sh b/shell/jenkins-configure-global-vars.sh index 86b1bcde..873e0b33 100644 --- a/shell/jenkins-configure-global-vars.sh +++ b/shell/jenkins-configure-global-vars.sh @@ -24,6 +24,11 @@ silos="${jenkins_silos:-jenkins}" set -eu -o pipefail +# shellcheck disable=SC1090 +. ~/lf-env.sh + +lf-activate-venv --python python3 lftools + for silo in $silos; do if [ ! -f "$WORKSPACE/jenkins-config/global-vars-$silo.sh" ]; then echo "WARN: jenkins-config/global-vars-$silo.sh does not exist. Skipping cloud management..." diff --git a/shell/jenkins-sandbox-cleanup.sh b/shell/jenkins-sandbox-cleanup.sh index 90dbb684..1dd520a8 100644 --- a/shell/jenkins-sandbox-cleanup.sh +++ b/shell/jenkins-sandbox-cleanup.sh @@ -14,9 +14,9 @@ echo "---> jenkins-sandbox-cleanup.sh" set -euf -o pipefail # shellcheck disable=SC1090 -source ~/lf-env.sh +. ~/lf-env.sh -lf-activate-venv jenkins-job-builder +lf-activate-venv --python python3 --venv-file /tmp/.jjb_venv jenkins-job-builder # jenkins-jobs does not always open 'stdin' which may cause 'yes' to fail (yes || true) | jenkins-jobs -s sandbox delete-all diff --git a/shell/jjb-deploy-job.sh b/shell/jjb-deploy-job.sh index 152a02e1..08e64aa5 100644 --- a/shell/jjb-deploy-job.sh +++ b/shell/jjb-deploy-job.sh @@ -20,7 +20,7 @@ set -uef -o pipefail source ~/lf-env.sh # Version controlled by JJB_VERSION -lf-activate-venv jenkins-job-builder +lf-activate-venv --python python3 --venv-file /tmp/.jjb_venv jenkins-job-builder # Fetch patch if gerrit project matches the jjb-deploy project if [ "${GERRIT_PROJECT}" == "${PROJECT}" ]; then diff --git a/shell/jjb-verify-job.sh b/shell/jjb-verify-job.sh index 7d679bd1..fc63884d 100644 --- a/shell/jjb-verify-job.sh +++ b/shell/jjb-verify-job.sh @@ -18,7 +18,7 @@ source ~/lf-env.sh lf-git-validate-jira-urls lf-jjb-check-ascii -lf-activate-venv jenkins-job-builder +lf-activate-venv --python python3 --venv-file /tmp/.jjb_venv jenkins-job-builder jenkins-jobs test --recursive -o archives/job-configs --config-xml jjb/ diff --git a/shell/maven-central.sh b/shell/maven-central.sh index 88c3bc14..829c4dd7 100644 --- a/shell/maven-central.sh +++ b/shell/maven-central.sh @@ -15,6 +15,11 @@ profile_id="${OSSRH_PROFILE_ID:-}" # Ensure we fail the job if any steps fail. set -eux -o pipefail +# shellcheck disable=SC1090 +. ~/lf-env.sh + +lf-activate-venv --python python3 lftools + MC_TMP_FILE="$(mktemp)" echo "Staging in OSSRH for Maven Central" lftools deploy nexus-stage "https://oss.sonatype.org" "$profile_id" "$WORKSPACE/m2repo" | tee "$MC_TMP_FILE" diff --git a/shell/maven-deploy.sh b/shell/maven-deploy.sh index f9e28893..5da6158d 100644 --- a/shell/maven-deploy.sh +++ b/shell/maven-deploy.sh @@ -41,8 +41,9 @@ find "$m2repo_dir" -type d -empty -delete echo "-----> Install lftools" # shellcheck disable=SC1090 -source ~/lf-env.sh -lf-activate-venv lftools +. ~/lf-env.sh + +lf-activate-venv --python python3 lftools echo "-----> Upload files to Nexus" lftools deploy nexus -s "$nexus_repo_url" "$m2repo_dir" diff --git a/shell/maven-javadoc-publish.sh b/shell/maven-javadoc-publish.sh index a3838ca2..97d57bff 100644 --- a/shell/maven-javadoc-publish.sh +++ b/shell/maven-javadoc-publish.sh @@ -16,6 +16,11 @@ echo "---> maven-javadoc-publish.sh" set -e -o pipefail set +u +# shellcheck disable=SC1090 +. ~/lf-env.sh + +lf-activate-venv --python python3 lftools + JAVADOC_DIR="$WORKSPACE/archives/javadoc" pushd "$JAVADOC_DIR" diff --git a/shell/maven-stage.sh b/shell/maven-stage.sh index fa890475..a976312f 100644 --- a/shell/maven-stage.sh +++ b/shell/maven-stage.sh @@ -18,6 +18,11 @@ echo "---> maven-stage.sh" # Ensure we fail the job if any steps fail. set -xeu -o pipefail +# shellcheck disable=SC1090 +. ~/lf-env.sh + +lf-activate-venv --python python3 lftools + TMP_FILE="$(mktemp)" lftools deploy nexus-stage "$NEXUS_URL" "$STAGING_PROFILE_ID" "$WORKSPACE/m2repo" | tee "$TMP_FILE" staging_repo=$(sed -n -e 's/Staging repository \(.*\) created\./\1/p' "$TMP_FILE") diff --git a/shell/openstack-cleanup-old-images.sh b/shell/openstack-cleanup-old-images.sh index 8d1ddd5d..79eee278 100644 --- a/shell/openstack-cleanup-old-images.sh +++ b/shell/openstack-cleanup-old-images.sh @@ -14,27 +14,16 @@ echo "---> Cleanup old images" # shellcheck disable=SC1090 source ~/lf-env.sh -set -x -# Check if openstack venv was previously created -if [ -f "/tmp/.os_lf_venv" ]; then - os_lf_venv=$(cat "/tmp/.os_lf_venv") -fi - -if [ -d "${os_lf_venv}" ] && [ -f "${os_lf_venv}/bin/openstack" ]; then - echo "Re-use existing venv: ${os_lf_venv}" - PATH=$os_lf_venv/bin:$PATH -else - lf-activate-venv --python python3 "cryptography<3.4" \ - "lftools[openstack]" \ - kubernetes \ - "niet~=1.4.2" \ - python-heatclient \ - python-openstackclient \ - python-magnumclient \ - setuptools \ - "openstacksdk<0.99" \ - yq -fi +# TODO: "openstacksdk<0.99" AttributeError: 'Image' object has no +# attribute 'protected' +lf-activate-venv --python python3 "lftools[openstack]" \ + kubernetes \ + niet \ + "openstacksdk<0.99" \ + python-heatclient \ + python-openstackclient \ + python-magnumclient \ + yq os_cloud="${OS_CLOUD:-vex}" os_image_cleanup_age="${OS_IMAGE_CLEANUP_AGE:-30}" diff --git a/shell/openstack-cleanup-orphaned-k8s-clusters.sh b/shell/openstack-cleanup-orphaned-k8s-clusters.sh index 33fcaa65..0e5f392d 100644 --- a/shell/openstack-cleanup-orphaned-k8s-clusters.sh +++ b/shell/openstack-cleanup-orphaned-k8s-clusters.sh @@ -60,21 +60,12 @@ cluster_in_jenkins() { # shellcheck disable=SC1090 source ~/lf-env.sh -# Check if openstack venv was previously created -if [ -f "/tmp/.os_lf_venv" ]; then - os_lf_venv=$(cat "/tmp/.os_lf_venv") -fi -if [ -d "${os_lf_venv}" ] && [ -f "${os_lf_venv}/bin/openstack" ]; then - echo "Re-use existing venv: ${os_lf_venv}" - PATH=$os_lf_venv/bin:$PATH -else - lf-activate-venv --python python3 \ - kubernetes \ - python-heatclient \ - python-openstackclient \ - python-magnumclient -fi +lf-activate-venv --python python3 \ + kubernetes \ + python-heatclient \ + python-openstackclient \ + python-magnumclient ######################### ## FETCH ACTIVE BUILDS ## diff --git a/shell/openstack-cleanup-orphaned-ports.sh b/shell/openstack-cleanup-orphaned-ports.sh index e1f84360..c25ba59f 100644 --- a/shell/openstack-cleanup-orphaned-ports.sh +++ b/shell/openstack-cleanup-orphaned-ports.sh @@ -16,19 +16,9 @@ source ~/lf-env.sh os_cloud="${OS_CLOUD:-vex}" -# Check if openstack venv was previously created -if [ -f "/tmp/.os_lf_venv" ]; then - os_lf_venv=$(cat "/tmp/.os_lf_venv") -fi - -if [ -d "${os_lf_venv}" ] && [ -f "${os_lf_venv}/bin/openstack" ]; then - echo "Re-use existing venv: ${os_lf_venv}" - PATH=$os_lf_venv/bin:$PATH -else - lf-activate-venv --python python3 \ - python-heatclient \ - python-openstackclient -fi +lf-activate-venv --python python3 \ + python-heatclient \ + python-openstackclient set -eux -o pipefail diff --git a/shell/openstack-cleanup-orphaned-servers.sh b/shell/openstack-cleanup-orphaned-servers.sh index 4dad6ed0..ddbf1c61 100644 --- a/shell/openstack-cleanup-orphaned-servers.sh +++ b/shell/openstack-cleanup-orphaned-servers.sh @@ -50,26 +50,14 @@ minion_in_jenkins() { # shellcheck disable=SC1090 source ~/lf-env.sh -# Check if openstack venv was previously created -if [ -f "/tmp/.os_lf_venv" ]; then - os_lf_venv=$(cat "/tmp/.os_lf_venv") -fi - -if [ -d "${os_lf_venv}" ] && [ -f "${os_lf_venv}/bin/openstack" ]; then - echo "Re-use existing venv: ${os_lf_venv}" - PATH=$os_lf_venv/bin:$PATH -else - lf-activate-venv --python python3 "cryptography<3.4" \ - "lftools[openstack]" \ - kubernetes \ - "niet~=1.4.2" \ - python-heatclient \ - python-openstackclient \ - python-magnumclient \ - setuptools \ - "openstacksdk<0.99" \ - yq -fi +lf-activate-venv --python python3 "lftools[openstack]" \ + kubernetes \ + niet \ + python-heatclient \ + python-openstackclient \ + python-magnumclient \ + yq + ########################## ## FETCH ACTIVE MINIONS ## ########################## diff --git a/shell/openstack-cleanup-orphaned-stacks.sh b/shell/openstack-cleanup-orphaned-stacks.sh index 187a83d1..e9299b53 100644 --- a/shell/openstack-cleanup-orphaned-stacks.sh +++ b/shell/openstack-cleanup-orphaned-stacks.sh @@ -60,26 +60,13 @@ stack_in_jenkins() { # shellcheck disable=SC1090 source ~/lf-env.sh -# Check if openstack venv was previously created -if [ -f "/tmp/.os_lf_venv" ]; then - os_lf_venv=$(cat "/tmp/.os_lf_venv") -fi - -if [ -d "${os_lf_venv}" ] && [ -f "${os_lf_venv}/bin/openstack" ]; then - echo "Re-use existing venv: ${os_lf_venv}" - PATH=$os_lf_venv/bin:$PATH -else - lf-activate-venv --python python3 "cryptography<3.4" \ - "lftools[openstack]" \ - kubernetes \ - "niet~=1.4.2" \ - python-heatclient \ - python-openstackclient \ - python-magnumclient \ - setuptools \ - "openstacksdk<0.99" \ - yq -fi +lf-activate-venv --python python3 "lftools[openstack]" \ + kubernetes \ + niet \ + python-heatclient \ + python-openstackclient \ + python-magnumclient \ + yq set -x ######################### diff --git a/shell/openstack-cleanup-orphaned-volumes.sh b/shell/openstack-cleanup-orphaned-volumes.sh index c5cc0b2b..f6d75343 100644 --- a/shell/openstack-cleanup-orphaned-volumes.sh +++ b/shell/openstack-cleanup-orphaned-volumes.sh @@ -17,26 +17,15 @@ set -eux -o pipefail # shellcheck disable=SC1090 source ~/lf-env.sh -# Check if openstack venv was previously created -if [ -f "/tmp/.os_lf_venv" ]; then - os_lf_venv=$(cat "/tmp/.os_lf_venv") -fi -if [ -d "${os_lf_venv}" ] && [ -f "${os_lf_venv}/bin/openstack" ]; then - echo "Re-use existing venv: ${os_lf_venv}" - PATH=$os_lf_venv/bin:$PATH -else - lf-activate-venv --python python3 "cryptography<3.4" \ - "lftools[openstack]" \ - kubernetes \ - "niet~=1.4.2" \ - python-heatclient \ - python-openstackclient \ - python-magnumclient \ - setuptools \ - "openstacksdk<0.99" \ - yq -fi +lf-activate-venv --python python3 "lftools[openstack]" \ + kubernetes \ + niet \ + python-heatclient \ + python-openstackclient \ + python-magnumclient \ + yq + mapfile -t os_volumes < <(openstack --os-cloud "$os_cloud" volume list -f value -c ID --status Available) if [ ${#os_volumes[@]} -eq 0 ]; then diff --git a/shell/openstack-kubernetes-create.sh b/shell/openstack-kubernetes-create.sh index 5aef45d1..b4054c33 100755 --- a/shell/openstack-kubernetes-create.sh +++ b/shell/openstack-kubernetes-create.sh @@ -16,26 +16,13 @@ set -eux -o pipefail # shellcheck disable=SC1090 source ~/lf-env.sh -# Check if openstack venv was previously created -if [ -f "/tmp/.os_lf_venv" ]; then - os_lf_venv=$(cat "/tmp/.os_lf_venv") -fi - -if [ -d "${os_lf_venv}" ] && [ -f "${os_lf_venv}/bin/openstack" ]; then - echo "Re-use existing venv: ${os_lf_venv}" - PATH=$os_lf_venv/bin:$PATH -else - lf-activate-venv --python python3 "cryptography<3.4" \ - "lftools[openstack]" \ - kubernetes \ - "niet~=1.4.2" \ - python-heatclient \ - python-openstackclient \ - python-magnumclient \ - setuptools \ - "openstacksdk<0.99" \ - yq -fi +lf-activate-venv --python python3 "lftools[openstack]" \ + kubernetes \ + niet \ + python-heatclient \ + python-openstackclient \ + python-magnumclient \ + yq os_cloud="${OS_CLOUD:-vex}" fixed_network="${FIXED_NETWORK}" diff --git a/shell/openstack-protect-in-use-images.sh b/shell/openstack-protect-in-use-images.sh index 07294407..0d1624ca 100644 --- a/shell/openstack-protect-in-use-images.sh +++ b/shell/openstack-protect-in-use-images.sh @@ -22,19 +22,10 @@ os_cloud="${OS_CLOUD:-vex}" # shellcheck disable=SC1090 source ~/lf-env.sh -# Check if openstack venv was previously created -if [ -f "/tmp/.os_lf_venv" ]; then - os_lf_venv=$(cat "/tmp/.os_lf_venv") -fi - -if [ -d "${os_lf_venv}" ] && [ -f "${os_lf_venv}/bin/openstack" ]; then - echo "Re-use existing venv: ${os_lf_venv}" - PATH=$os_lf_venv/bin:$PATH -else - lf-activate-venv --python python3 \ - python-heatclient \ - python-openstackclient -fi +lf-activate-venv --python python3 "lftools[openstack]" \ + kubernetes \ + python-heatclient \ + python-openstackclient images=() while read -r -d $'\n' ; do diff --git a/shell/openstack-stack-copy-ssh-keys.sh b/shell/openstack-stack-copy-ssh-keys.sh index 0509bb8f..f20e1d91 100644 --- a/shell/openstack-stack-copy-ssh-keys.sh +++ b/shell/openstack-stack-copy-ssh-keys.sh @@ -53,19 +53,10 @@ copy_ssh_keys () { # shellcheck disable=SC1090 source ~/lf-env.sh -# Check if openstack venv was previously created -if [ -f "/tmp/.os_lf_venv" ]; then - os_lf_venv=$(cat "/tmp/.os_lf_venv") -fi - -if [ -d "${os_lf_venv}" ] && [ -f "${os_lf_venv}/bin/openstack" ]; then - echo "Re-use existing venv: ${os_lf_venv}" - PATH=$os_lf_venv/bin:$PATH -else - lf-activate-venv --python python3 \ - python-heatclient \ - python-openstackclient -fi +lf-activate-venv --python python3 "lftools[openstack]" \ + kubernetes \ + python-heatclient \ + python-openstackclient # IP Addresses are returned as a space separated list so word splitting is ok # shellcheck disable=SC2207 diff --git a/shell/openstack-stack-create.sh b/shell/openstack-stack-create.sh index 0a2dc9ff..d4ce7879 100644 --- a/shell/openstack-stack-create.sh +++ b/shell/openstack-stack-create.sh @@ -21,26 +21,14 @@ set -eux -o pipefail # shellcheck disable=SC1090 source ~/lf-env.sh -# Check if openstack venv was previously created -if [ -f "/tmp/.os_lf_venv" ]; then - os_lf_venv=$(cat "/tmp/.os_lf_venv") -fi +lf-activate-venv --python python3 "lftools[openstack]" \ + kubernetes \ + niet \ + python-heatclient \ + python-openstackclient \ + python-magnumclient \ + yq -if [ -d "${os_lf_venv}" ] && [ -f "${os_lf_venv}/bin/openstack" ]; then - echo "Re-use existing venv: ${os_lf_venv}" - PATH=$os_lf_venv/bin:$PATH -else - lf-activate-venv --python python3 "cryptography<3.4" \ - "lftools[openstack]" \ - kubernetes \ - "niet~=1.4.2" \ - python-heatclient \ - python-openstackclient \ - python-magnumclient \ - setuptools \ - "openstacksdk<0.99" \ - yq -fi openstack --os-cloud "$os_cloud" limits show --absolute pushd "$stack_template_dir" || exit 1 diff --git a/shell/openstack-stack-delete.sh b/shell/openstack-stack-delete.sh index 512ea99a..09e1ed52 100644 --- a/shell/openstack-stack-delete.sh +++ b/shell/openstack-stack-delete.sh @@ -15,19 +15,10 @@ set -eufo pipefail # shellcheck disable=SC1090 source ~/lf-env.sh -# Check if openstack venv was previously created -if [ -f "/tmp/.os_lf_venv" ]; then - os_lf_venv=$(cat "/tmp/.os_lf_venv") -fi - -if [ -d "${os_lf_venv}" ] && [ -f "${os_lf_venv}/bin/openstack" ]; then - echo "Re-use existing venv: ${os_lf_venv}" - PATH=$os_lf_venv/bin:$PATH -else - lf-activate-venv --python python3 lftools[openstack] \ - python-heatclient \ - python-openstackclient -fi +lf-activate-venv --python python3 "lftools[openstack]" \ + kubernetes \ + python-heatclient \ + python-openstackclient echo "INFO: Retrieving stack cost for: $OS_STACK_NAME" if ! lftools openstack --os-cloud "$OS_CLOUD" stack cost "$OS_STACK_NAME" > stack-cost; then diff --git a/shell/rtdv3.sh b/shell/rtdv3.sh index e4e0b3c8..66a6a76f 100644 --- a/shell/rtdv3.sh +++ b/shell/rtdv3.sh @@ -11,6 +11,11 @@ echo "---> rtdv3.sh" set -euo pipefail +# shellcheck disable=SC1090 +. ~/lf-env.sh + +lf-activate-venv --python python3 lftools + watchbuild(){ echo "INFO: Running build against branch $1" local buildid diff --git a/shell/sigul-sign-dir.sh b/shell/sigul-sign-dir.sh index f708d37d..724f1907 100644 --- a/shell/sigul-sign-dir.sh +++ b/shell/sigul-sign-dir.sh @@ -13,6 +13,11 @@ echo "---> sigul-sign-dir.sh" # Ensure we fail the job if any steps fail. set -e -o pipefail +# shellcheck disable=SC1090 +. ~/lf-env.sh + +lf-activate-venv --python python3 lftools + OS=$(facter operatingsystem | tr '[:upper:]' '[:lower:]') OS_RELEASE=$(facter lsbdistrelease | tr '[:upper:]' '[:lower:]') if [[ "$OS_RELEASE" == "8" && "$OS" == 'centos' ]]; then