From c6215bd702826707e7bc6a44c07fd9e73abbf7f4 Mon Sep 17 00:00:00 2001 From: Luigi Toscano Date: Fri, 21 Feb 2020 12:42:58 +0100 Subject: [PATCH] Update cinder-tempest-plugin-lvm-lio (revamp) The changes should make this job a valid replacement for the legacy cinder-tempest-dsvm-lvm-lio-barbican job defined inside cinder.git. - rename as cinder-tempest-plugin-lvm-lio-barbican; - add it to the gate queue as well, together with devstack-plugin-ceph-tempest-py3; - use the proper functional tox environment provided by cinderlib; - synchronize the blacklist with the one used by the legacy job, and use the same devstack options; - remove barbicanclient and os-brick from required-projects, so that the stable libraries are used, as usual for normal jobs. Child jobs can add them if they need to test against the master version of those libraries. And a few minor changes (namespaces for the repositories, prepare it to be multinode-compatible). Change-Id: I0ed43c8eda445af8da61d861536da1efdd5a7b1f --- .zuul.yaml | 47 ++++++++++++------- playbooks/post-cinderlib.yaml | 6 +++ playbooks/tempest-and-cinderlib-run.yaml | 28 +++++++++++ roles/change-devstack-data-owner/README.rst | 23 +++++++++ .../defaults/main.yaml | 3 ++ .../tasks/main.yaml | 6 +++ tempest_blacklist.txt | 21 +++++---- 7 files changed, 107 insertions(+), 27 deletions(-) create mode 100644 playbooks/post-cinderlib.yaml create mode 100644 playbooks/tempest-and-cinderlib-run.yaml create mode 100644 roles/change-devstack-data-owner/README.rst create mode 100644 roles/change-devstack-data-owner/defaults/main.yaml create mode 100644 roles/change-devstack-data-owner/tasks/main.yaml diff --git a/.zuul.yaml b/.zuul.yaml index df01cbfc..b2ede727 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -4,35 +4,48 @@ - tempest-plugin-jobs check: jobs: - - cinder-tempest-plugin-lvm-lio + - cinder-tempest-plugin-lvm-lio-barbican + - devstack-plugin-ceph-tempest-py3 + gate: + jobs: + - cinder-tempest-plugin-lvm-lio-barbican - devstack-plugin-ceph-tempest-py3 - job: - name: cinder-tempest-plugin-lvm-lio - voting: false + name: cinder-tempest-plugin-lvm-lio-barbican description: | - Run Cinder Tempest Plugin tests + This jobs configures Cinder with LVM, LIO, barbican and + runs tempest tests and cinderlib tests. parent: devstack-tempest + roles: + - zuul: opendev.org/openstack/cinderlib required-projects: - - openstack/devstack-gate - - openstack/barbican - - openstack/python-barbicanclient - - openstack/tempest - - openstack/os-brick - - openstack/cinder-tempest-plugin - - openstack/cinder + - opendev.org/openstack/barbican + - opendev.org/openstack/tempest + - opendev.org/openstack/cinder-tempest-plugin + - opendev.org/openstack/cinder + - opendev.org/openstack/cinderlib + run: playbooks/tempest-and-cinderlib-run.yaml + # Required to collect the tox-based logs of the cinderlib functional tests + post-run: playbooks/post-cinderlib.yaml + host-vars: + controller: + devstack_plugins: + barbican: https://opendev.org/openstack/barbican vars: - tempest_test_regex: (tempest\.(api|scenario)|cinder_tempest_plugin) - tempest_test_blacklist: '{{ ansible_user_dir }}/{{ zuul.project.src_dir }}/tempest_blacklist.txt' + tempest_test_regex: '(^tempest\.(api|scenario\.test_encrypted_cinder_volumes|scenario\.test_volume|scenario\.test_shelve_instance)|(^cinder_tempest_plugin))' + tempest_test_blacklist: "{{ ansible_user_dir }}/{{ zuul.projects['opendev.org/openstack/cinder-tempest-plugin'].src_dir }}/tempest_blacklist.txt" tox_envlist: all devstack_localrc: CINDER_ISCSI_HELPER: lioadm - TEMPEST_PLUGINS: /opt/stack/cinder-tempest-plugin - USE_PYTHON3: true - devstack_plugins: - barbican: https://opendev.org/openstack/barbican + CINDER_LVM_TYPE: thin + CINDER_COORDINATION_URL: 'file://\$state_path' devstack_services: barbican: true + tempest_plugins: + - cinder-tempest-plugin + fetch_subunit_output_additional_dirs: + - "{{ ansible_user_dir }}/{{ zuul.projects['opendev.org/openstack/cinderlib'].src_dir }}" irrelevant-files: - ^.*\.rst$ - ^doc/.*$ diff --git a/playbooks/post-cinderlib.yaml b/playbooks/post-cinderlib.yaml new file mode 100644 index 00000000..f61775c0 --- /dev/null +++ b/playbooks/post-cinderlib.yaml @@ -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 diff --git a/playbooks/tempest-and-cinderlib-run.yaml b/playbooks/tempest-and-cinderlib-run.yaml new file mode 100644 index 00000000..5dddf7f0 --- /dev/null +++ b/playbooks/tempest-and-cinderlib-run.yaml @@ -0,0 +1,28 @@ +# 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 +# avoid zuul retrying on legitimate failures. +- hosts: all + roles: + - orchestrate-devstack + +# We run tests only on one node, regardless how many nodes are in the system +- hosts: tempest + environment: + # This enviroment variable is used by the optional tempest-gabbi + # job provided by the gabbi-tempest plugin. It can be safely ignored + # if that plugin is not being used. + GABBI_TEMPEST_PATH: "{{ gabbi_tempest_path | default('') }}" + roles: + - setup-tempest-run-dir + - setup-tempest-data-dir + - acl-devstack-files + - 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 }}" diff --git a/roles/change-devstack-data-owner/README.rst b/roles/change-devstack-data-owner/README.rst new file mode 100644 index 00000000..33ddddce --- /dev/null +++ b/roles/change-devstack-data-owner/README.rst @@ -0,0 +1,23 @@ +Change the ownership of a specific devstack data subdirectory + +This is needed in order to have cinderlib functional tests, +which are normally executed by the `zuul` user, run under +a devstack deployment where the `stack` user is the owner. + +**Role Variables** + +.. zuul:rolevar:: devstack_data_dir + :default: /opt/stack/data + + The devstack data directory. + +.. zuul:rolevar:: devstack_data_subdir_changed + :default: cinder + + The devstack data subdirectory whose ownership + is changed. + +.. zuul:rolevar:: devstack_data_subdir_owner + :default: zuul + + The new owner of the specified devstack data subdirectory. diff --git a/roles/change-devstack-data-owner/defaults/main.yaml b/roles/change-devstack-data-owner/defaults/main.yaml new file mode 100644 index 00000000..ea868746 --- /dev/null +++ b/roles/change-devstack-data-owner/defaults/main.yaml @@ -0,0 +1,3 @@ +devstack_data_dir: /opt/stack/data +devstack_data_subdir_changed: cinder +devstack_data_subdir_owner: zuul diff --git a/roles/change-devstack-data-owner/tasks/main.yaml b/roles/change-devstack-data-owner/tasks/main.yaml new file mode 100644 index 00000000..bd1977a6 --- /dev/null +++ b/roles/change-devstack-data-owner/tasks/main.yaml @@ -0,0 +1,6 @@ +- name: Change the owner of specific devstack data files + file: + path: "{{ devstack_data_dir }}/{{ devstack_data_subdir_changed }}" + owner: "{{ devstack_data_subdir_owner }}" + recurse: yes + become: yes diff --git a/tempest_blacklist.txt b/tempest_blacklist.txt index 4d173c51..d68709f9 100644 --- a/tempest_blacklist.txt +++ b/tempest_blacklist.txt @@ -1,10 +1,11 @@ -# List of tests getting skipped -.*\[.*\bslow\b.*\] -.*\.*VolumesSnapshotTestJSON\.test_snapshot_backup -.*\.*VolumesBackupsTest\.test_backup_create_attached_volume -.*\.*VolumesBackupsTest\.test_backup_create_and_restore_to_an_existing_volume -.*\.*VolumesBackupsTest\.test_bootable_volume_backup_and_restore -.*\.*VolumesBackupsTest\.test_incremental_backup -.*\.*VolumesBackupsTest\.test_volume_backup_create_get_detailed_list_restore_delete -.*\.*VolumesBackupsTest\.test_volume_snapshot_backup -.*\.*VolumesBackupsV39Test\.test_update_backup +.*VolumesSnapshotTestJSON.test_snapshot_backup +.*VolumesBackupsAdminTest.test_volume_backup_export_import +.*VolumesBackupsAdminTest.test_volume_backup_reset_status +.*VolumesBackupsTest.test_backup_create_attached_volume +.*VolumesBackupsTest.test_backup_create_and_restore_to_an_existing_volume +.*VolumesBackupsTest.test_bootable_volume_backup_and_restore +.*VolumesBackupsTest.test_incremental_backup +.*VolumesBackupsTest.test_volume_backup_create_get_detailed_list_restore_delete +.*VolumesBackupsTest.test_volume_snapshot_backup +.*VolumesBackupsV39Test.test_update_backup +.*TestVolumeBackupRestore.test_volume_backup_restore