Browse Source

Port several legacy tempest jobs to Zuul v3

- cinder-tempest-lvm-multibackend is the simple LVM multibackend job
  and replaces legacy-tempest-dsvm-lvm-multibackend.
- remove legacy-tempest-dsvm-zeromq-multibackend, as ZeroMQ
  support was deprecated in Rocky and removed in Stein.
  It could be replaced by inheriting from
  cinder-tempest-lvm-multibackend in older branches
  when this patch is backported;
- replace cinder-tempest-dsvm-lvm-lio-barbican with
  cinder-tempest-dsvm-lvm-lio-barbican provided by
  cinder-tempest-plugins;
- replace legacy-tempest-dsvm-full-devstack-plugin-nfs with
  devstack-plugin-nfs-tempest-full, now provided by
  devstack-plugin-nfs;
- update cinder-plugin-ceph-tempest to also run cinderlib tests.

Conflicts:
	.zuul.yaml
	playbooks/legacy/cinder-tempest-dsvm-lvm-lio-barbican/run.yaml
- .zuul.yaml in master contains new jobs (for example, the imported legacy
  grenade jobs, which haven't been backported so far);
- the only change in cinder-tempest-dsvm-lvm-lio-barbican (removed by this
  change) is the switch to Python 3.

Depends-On: https://review.opendev.org/738078
Change-Id: Icdafaf55494b6dd74ec31c3572d7344fcc028166
(cherry picked from commit 9ab1ff0059)
changes/58/715458/3
Luigi Toscano 3 weeks ago
parent
commit
fc59ea9e6e
6 changed files with 48 additions and 179 deletions
  1. +33
    -23
      .zuul.yaml
  2. +0
    -49
      playbooks/cinderlib-run.yaml
  3. +0
    -15
      playbooks/legacy/cinder-tempest-dsvm-lvm-lio-barbican/post.yaml
  4. +0
    -88
      playbooks/legacy/cinder-tempest-dsvm-lvm-lio-barbican/run.yaml
  5. +6
    -0
      playbooks/post-cinderlib.yaml
  6. +9
    -4
      playbooks/tempest-and-cinderlib-run.yaml

+ 33
- 23
.zuul.yaml View File

@@ -11,7 +11,6 @@
- release-notes-jobs-python3
check:
jobs:
- cinder-tempest-dsvm-lvm-lio-barbican
- cinder-tox-bandit-baseline:
voting: false
- openstack-tox-functional-py36:
@@ -51,12 +50,15 @@
- openstack-tox-functional:
voting: false
irrelevant-files: *functional-irrelevant-files
- cinder-tempest-plugin-lvm-lio-barbican:
irrelevant-files: *gate-irrelevant-files
- legacy-grenade-dsvm-cinder-mn-sub-volbak:
voting: false
irrelevant-files: *gate-irrelevant-files
- legacy-tempest-dsvm-lvm-multibackend:
- cinder-tempest-lvm-multibackend:
voting: false
irrelevant-files: *gate-irrelevant-files
- legacy-tempest-dsvm-full-devstack-plugin-nfs:
- devstack-plugin-nfs-tempest-full:
voting: false
irrelevant-files: *gate-irrelevant-files
- neutron-grenade:
@@ -89,8 +91,6 @@
jobs:
- tempest-cinder-v2-api:
irrelevant-files: *gate-irrelevant-files
- legacy-tempest-dsvm-zeromq-multibackend:
irrelevant-files: *gate-irrelevant-files
- legacy-tempest-dsvm-multibackend-matrix:
irrelevant-files: *gate-irrelevant-files
- legacy-grenade-dsvm-cinder-mn-sub-volschbak:
@@ -104,22 +104,6 @@
- tempest-full-py3-opensuse15:
irrelevant-files: *gate-irrelevant-files

- job:
# Previously named legacy-tempest-dsvm-full-lio
name: cinder-tempest-dsvm-lvm-lio-barbican
parent: legacy-dsvm-base
run: playbooks/legacy/cinder-tempest-dsvm-lvm-lio-barbican/run.yaml
post-run: playbooks/legacy/cinder-tempest-dsvm-lvm-lio-barbican/post.yaml
timeout: 10800
required-projects:
- openstack/devstack-gate
- openstack/barbican
- openstack/cinderlib
- openstack/python-barbicanclient
- openstack/tempest
- openstack/os-brick
irrelevant-files: *gate-irrelevant-files

- job:
# Security testing for known issues
name: cinder-tox-bandit-baseline
@@ -149,7 +133,33 @@
- job:
name: cinder-plugin-ceph-tempest
parent: devstack-plugin-ceph-tempest
roles:
- zuul: opendev.org/openstack/cinderlib
- zuul: opendev.org/openstack/cinder-tempest-plugin
run: playbooks/tempest-and-cinderlib-run.yaml
post-run: playbooks/post-cinderlib.yaml
required-projects:
- openstack/cinderlib
- openstack/tempest
- opendev.org/openstack/cinderlib
vars:
zuul_additional_subunit_dirs:
- "{{ ansible_user_dir }}/{{ zuul.projects['opendev.org/openstack/cinderlib'].src_dir }}"

- job:
name: cinder-tempest-lvm-multibackend
parent: devstack-tempest
description: |
Cinder tempest job based on LVM and multiple backends.
Former names for this job were:
* legacy-tempest-dsvm-lvm-multibackend
timeout: 10800
required-projects:
- opendev.org/openstack/cinder-tempest-plugin
vars:
tox_envlist: all
tempest_test_regex: '(?!.*\[.*\bslow\b.*\])(^tempest\.(api|scenario)|(^cinder_tempest_plugin))'
tempest_plugins:
- cinder-tempest-plugin
devstack_localrc:
CINDER_ENABLED_BACKENDS: 'lvm:lvmdriver-1,lvm:lvmdriver-2'
CINDER_VOLUME_CLEAR: none
irrelevant-files: *gate-irrelevant-files

+ 0
- 49
playbooks/cinderlib-run.yaml View File

@@ -1,49 +0,0 @@
# Variables: devstack_base_dir, cinderlib_log_file, cinderlib_ignore_errors
- hosts: "{{ cinderlib_hosts | default('all') }}"
become: True
vars:
base_dir: "{{ devstack_base_dir | default('/opt/stack/new') }}"
default_log_file: "{{ ansible_user_dir }}/zuul-output/logs/cinderlib.txt"

tasks:
- name: Find cinderlib location in required-projects
set_fact:
cinderlib_location: "{{ ansible_user_dir }}/{{ item.src_dir}}"
with_items: "{{ zuul.projects.values() | list }}"
when:
- cinderlib_location is not defined
- item.short_name == 'cinderlib'

- name: Default cinderlib location to devstack directory
set_fact:
cinderlib_location: "{{ base_dir }}/cinderlib"
when:
- cinderlib_location is not defined

- name: Install cinderlib
pip:
name: ./
editable: yes
extra_args: --no-cache-dir
chdir: "{{ cinderlib_location }}"

- name: Locate unit2 binary location
shell:
cmd: which unit2
register: unit2_which

- name: Add sudoers role for cinderlib unit2
copy:
dest: /etc/sudoers.d/zuul-sudo-unit2
content: "zuul ALL = NOPASSWD:{{ unit2_which.stdout }} discover -v -s cinderlib/tests/functional\n"
mode: 0440

- name: Validate sudoers config after edits
command: "/usr/sbin/visudo -c"

- name: Run cinderlib functional tests
shell:
cmd: "set -o pipefail && {{ unit2_which.stdout }} discover -v -s cinderlib/tests/functional 2>&1 | tee {{ cinderlib_log_file | default(default_log_file)}}"
chdir: "{{ cinderlib_location }}"
executable: /bin/bash
ignore_errors: "{{ cinderlib_ignore_errors | default(false) | bool}}"

+ 0
- 15
playbooks/legacy/cinder-tempest-dsvm-lvm-lio-barbican/post.yaml View File

@@ -1,15 +0,0 @@
- hosts: primary
tasks:

- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=/logs/**
- --include=*/
- --exclude=*
- --prune-empty-dirs

+ 0
- 88
playbooks/legacy/cinder-tempest-dsvm-lvm-lio-barbican/run.yaml View File

@@ -1,88 +0,0 @@
- hosts: all
name: Test the LVM driver with the LIO iSCSI target and Barbican
tasks:

- name: Ensure legacy workspace directory
file:
path: '{{ ansible_user_dir }}/workspace'
state: directory

- shell:
cmd: |
set -e
set -x
cat > clonemap.yaml << EOF
clonemap:
- name: openstack/devstack-gate
dest: devstack-gate
EOF
/usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
https://opendev.org \
openstack/devstack-gate
executable: /bin/bash
chdir: '{{ ansible_user_dir }}/workspace'
environment: '{{ zuul | zuul_legacy_vars }}'

- shell:
cmd: |
set -e
set -x
cat << 'EOF' >>"/tmp/dg-local.conf"
[[local|localrc]]
CINDER_ISCSI_HELPER=lioadm
CINDER_LVM_TYPE=thin
enable_service barbican
enable_plugin barbican https://opendev.org/openstack/barbican

# Test with local file locks
CINDER_COORDINATION_URL='file://$state_path'

EOF
executable: /bin/bash
chdir: '{{ ansible_user_dir }}/workspace'
environment: '{{ zuul | zuul_legacy_vars }}'

- shell:
cmd: |
set -e
set -x
export PROJECTS="openstack/barbican $PROJECTS"
export PROJECTS="openstack/python-barbicanclient $PROJECTS"
export PYTHONUNBUFFERED=true
if [ "$ZUUL_BRANCH" == "master" ]; then
# Use os-brick head for master, use os-brick from
# pip for stable branches.
export DEVSTACK_PROJECT_FROM_GIT=os-brick
fi
export DEVSTACK_GATE_TEMPEST=1
export DEVSTACK_GATE_TEMPEST_ALL_PLUGINS=1
# As we are setting DEVSTACK_GATE_TEMPEST_ALL_PLUGINS, we need to add
# the regex to limit the tests to the same as a tempest -efull would
# run.
DEVSTACK_GATE_TEMPEST_REGEX='(^tempest\.(api|scenario\.test_encrypted_cinder_volumes|scenario\.test_volume|scenario\.test_shelve_instance)|(^cinder\.tests.tempest))'
DEVSTACK_GATE_TEMPEST_REGEX+='(?!.*VolumesSnapshotTestJSON.test_snapshot_backup)'
DEVSTACK_GATE_TEMPEST_REGEX+='(?!.*VolumesBackupsAdminTest.test_volume_backup_export_import)'
DEVSTACK_GATE_TEMPEST_REGEX+='(?!.*VolumesBackupsAdminTest.test_volume_backup_reset_status)'
DEVSTACK_GATE_TEMPEST_REGEX+='(?!.*VolumesBackupsTest.test_backup_create_attached_volume)'
DEVSTACK_GATE_TEMPEST_REGEX+='(?!.*VolumesBackupsTest.test_backup_create_and_restore_to_an_existing_volume)'
DEVSTACK_GATE_TEMPEST_REGEX+='(?!.*VolumesBackupsTest.test_bootable_volume_backup_and_restore)'
DEVSTACK_GATE_TEMPEST_REGEX+='(?!.*VolumesBackupsTest.test_incremental_backup)'
DEVSTACK_GATE_TEMPEST_REGEX+='(?!.*VolumesBackupsTest.test_volume_backup_create_get_detailed_list_restore_delete)'
DEVSTACK_GATE_TEMPEST_REGEX+='(?!.*VolumesBackupsTest.test_volume_snapshot_backup)'
DEVSTACK_GATE_TEMPEST_REGEX+='(?!.*VolumesBackupsV39Test.test_update_backup)'
DEVSTACK_GATE_TEMPEST_REGEX+='(?!.*TestVolumeBackupRestore.test_volume_backup_restore)'
export DEVSTACK_GATE_TEMPEST_REGEX
export BRANCH_OVERRIDE=default
if [ "$BRANCH_OVERRIDE" != "default" ] ; then
export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
fi

cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
./safe-devstack-vm-gate-wrap.sh
executable: /bin/bash
chdir: '{{ ansible_user_dir }}/workspace'
environment: '{{ zuul | zuul_legacy_vars }}'

- import_playbook: ../../cinderlib-run.yaml
vars:
default_log_file: "{{ ansible_user_dir }}/workspace/logs/cinderlib.txt"

+ 6
- 0
playbooks/post-cinderlib.yaml View File

@@ -0,0 +1,6 @@
- hosts: all
vars:
tox_envlist: functional
zuul_work_dir: "{{ ansible_user_dir }}/{{ zuul.projects['opendev.org/openstack/cinderlib'].src_dir }}"
roles:
- fetch-tox-output

+ 9
- 4
playbooks/tempest-and-cinderlib-run.yaml View File

@@ -1,4 +1,4 @@
# Playbook imported from https://opendev.org/openstack/tempest/src/branch/master/playbooks/devstack-tempest.yaml
# Playbook imported from https://opendev.org/openstack/tempest/src/tag/23.0.0/playbooks/devstack-tempest.yaml

# Changes that run through devstack-tempest are likely to have an impact on
# the devstack part of the job, so we keep devstack in the main play to
@@ -18,6 +18,11 @@
- setup-tempest-run-dir
- setup-tempest-data-dir
- acl-devstack-files
- run-tempest

- import_playbook: cinderlib-run.yaml cinderlib_hosts=tempest
- role: run-tempest
# ignore the errors, so that run-cinderlib-tests is always executed
ignore_errors: yes
- role: change-devstack-data-owner
devstack_data_subdir_changed: cinder
devstack_data_subdir_owner: zuul
- role: run-cinderlib-tests
cinderlib_base_dir: "{{ ansible_user_dir }}/{{ zuul.projects['opendev.org/openstack/cinderlib'].src_dir }}"

Loading…
Cancel
Save