aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2023-12-14 21:01:51 +0000
committerGerrit Code Review <review@openstack.org>2023-12-14 21:01:51 +0000
commit7fc76fb4e92b04a542c8a71bcded4f854029798e (patch)
tree8e6fecbc1632a3a069fafa7a2c0e658b87a9d054
parent17a76d2a0edee95057585e122b7e3b1bedf81a04 (diff)
parent56cbf8c0314c9d076c6ac02071976ff731902234 (diff)
downloadkolla-ansible-7fc76fb4e92b04a542c8a71bcded4f854029798e.tar.gz
kolla-ansible-7fc76fb4e92b04a542c8a71bcded4f854029798e.zip
Merge "CI: Move openstack clients setup to a role"
-rw-r--r--roles/openstack-clients/README.rst18
-rw-r--r--roles/openstack-clients/defaults/main.yml32
-rw-r--r--roles/openstack-clients/tasks/main.yml9
-rw-r--r--tests/run.yml4
-rwxr-xr-xtests/setup_gate.sh35
5 files changed, 63 insertions, 35 deletions
diff --git a/roles/openstack-clients/README.rst b/roles/openstack-clients/README.rst
new file mode 100644
index 000000000..c8348ee0a
--- /dev/null
+++ b/roles/openstack-clients/README.rst
@@ -0,0 +1,18 @@
+Install openstack clients required for Kolla-Ansible CI scripts.
+The defaults are suitable for CI environment.
+
+**Role Variables**
+
+.. zuul:rolevar:: openstack_clients_pip_packages
+
+ List of dictionaries, with package and enabled keys, e.g.:
+ - package: python-barbicanclient
+ enabled: true
+
+.. zuul:rolevar:: openstack_clients_venv_base
+
+ Directory used as base for python venv
+
+.. zuul:rolevar:: openstack_clients_venv_name
+
+ Name of python venv to use for package installations
diff --git a/roles/openstack-clients/defaults/main.yml b/roles/openstack-clients/defaults/main.yml
new file mode 100644
index 000000000..8935f3c54
--- /dev/null
+++ b/roles/openstack-clients/defaults/main.yml
@@ -0,0 +1,32 @@
+---
+openstack_clients_pip_packages:
+ - package: python-barbicanclient
+ enabled: "{{ scenario == 'scenario_nfv' }}"
+ - package: python-designateclient
+ enabled: "{{ scenario == 'magnum' }}"
+ - package: python-heatclient
+ enabled: true
+ - package: python-ironicclient
+ enabled: "{{ scenario == 'ironic' }}"
+ - package: python-ironic-inspector-client
+ enabled: "{{ scenario == 'ironic' }}"
+ - package: python-magnumclient
+ enabled: "{{ scenario == 'magnum' }}"
+ - package: python-masakariclient
+ enabled: "{{ scenario == 'masakari' }}"
+ - package: python-mistralclient
+ enabled: "{{ scenario == 'scenario_nfv' }}"
+ - package: python-octaviaclient
+ enabled: "{{ scenario in ['octavia', 'ovn'] }}"
+ - package: python-openstackclient
+ enabled: true
+ - package: python-tackerclient
+ enabled: "{{ scenario == 'scenario_nfv' }}"
+ - package: python-troveclient
+ enabled: "{{ scenario == 'magnum' }}"
+ - package: python-zunclient
+ enabled: "{{ scenario == 'zun' }}"
+
+openstack_clients_venv_base: "{{ ansible_user_dir }}"
+openstack_clients_venv_name: "openstackclient-venv"
+openstack_clients_venv_path: "{{ openstack_clients_venv_base }}/{{ openstack_clients_venv_name }}"
diff --git a/roles/openstack-clients/tasks/main.yml b/roles/openstack-clients/tasks/main.yml
new file mode 100644
index 000000000..e2924c1b7
--- /dev/null
+++ b/roles/openstack-clients/tasks/main.yml
@@ -0,0 +1,9 @@
+---
+- name: Setup OpenStack clients
+ ansible.builtin.pip:
+ name: "{{ item.package }}"
+ virtualenv: "{{ openstack_clients_venv_path }}"
+ virtualenv_command: "python3 -m venv"
+ become: true
+ when: item.enabled
+ loop: "{{ openstack_clients_pip_packages }}"
diff --git a/tests/run.yml b/tests/run.yml
index ffaf28169..03e90e232 100644
--- a/tests/run.yml
+++ b/tests/run.yml
@@ -334,6 +334,10 @@
args:
executable: /bin/bash
+ - name: Ensure OpenStack clients are installed
+ import_role:
+ name: openstack-clients
+
# NOTE(mgoddard): We are using the script module here and later to ensure
# we use the local copy of these scripts, rather than the one on the remote
# host, which could be checked out to a previous release (in an upgrade
diff --git a/tests/setup_gate.sh b/tests/setup_gate.sh
index f86511563..c2245c072 100755
--- a/tests/setup_gate.sh
+++ b/tests/setup_gate.sh
@@ -7,39 +7,6 @@ set -o pipefail
# Enable unbuffered output for Ansible in Jenkins.
export PYTHONUNBUFFERED=1
-
-function setup_openstack_clients {
- # Prepare virtualenv for openstack deployment tests
- local packages=(python-openstackclient python-heatclient)
- if [[ $SCENARIO == zun ]]; then
- packages+=(python-zunclient)
- fi
- if [[ $SCENARIO == ironic ]]; then
- packages+=(python-ironicclient python-ironic-inspector-client)
- fi
- if [[ $SCENARIO == magnum ]]; then
- packages+=(python-designateclient python-magnumclient python-troveclient)
- fi
- if [[ $SCENARIO == octavia ]]; then
- packages+=(python-octaviaclient)
- fi
- if [[ $SCENARIO == masakari ]]; then
- packages+=(python-masakariclient)
- fi
- if [[ $SCENARIO == scenario_nfv ]]; then
- packages+=(python-tackerclient python-barbicanclient python-mistralclient)
- fi
- if [[ $SCENARIO == ovn ]]; then
- packages+=(python-octaviaclient)
- fi
- if [[ "debian" == $BASE_DISTRO ]]; then
- sudo apt -y install python3-venv
- fi
- python3 -m venv ~/openstackclient-venv
- ~/openstackclient-venv/bin/pip install -U pip
- ~/openstackclient-venv/bin/pip install -c $UPPER_CONSTRAINTS ${packages[@]}
-}
-
function prepare_images {
if [[ "${BUILD_IMAGE}" == "False" ]]; then
return
@@ -146,8 +113,6 @@ EOF
}
-setup_openstack_clients
-
RAW_INVENTORY=/etc/kolla/inventory
source $KOLLA_ANSIBLE_VENV_PATH/bin/activate