diff --git a/.zuul.yaml b/.zuul.yaml index df01cbf..b2ede72 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 0000000..f61775c --- /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 0000000..5dddf7f --- /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 0000000..33ddddc --- /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 0000000..ea86874 --- /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 0000000..bd1977a --- /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 4d173c5..d68709f 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