diff --git a/.zuul.yaml b/.zuul.yaml
new file mode 100644
index 0000000..dd66e2c
--- /dev/null
+++ b/.zuul.yaml
@@ -0,0 +1,36 @@
+- project:
+    check:
+      jobs:
+        - cinder-tempest-plugin-lvm-lio
+    gate:
+      jobs:
+        - cinder-tempest-plugin-lvm-lio
+
+- job:
+    name: cinder-tempest-plugin-lvm-lio
+    description: |
+      Run Cinder Tempest Plugin tests
+    parent: devstack-tempest
+    required-projects:
+      - openstack-infra/devstack-gate
+      - openstack/barbican
+      - openstack/python-barbicanclient
+      - openstack/tempest
+      - openstack/os-brick
+      - openstack/cinder-tempest-plugin
+      - openstack/cinder
+    vars:
+      tempest_test_regex: (tempest\.(api|scenario)|cinder_tempest_plugin)
+      tempest_test_blacklist: "{{ ansible_user_dir }}/{{ zuul.project.src_dir }}/tempest_blacklist.txt"
+      tox_envlist: 'all'
+      devstack_localrc:
+        CINDER_ISCSI_HELPER: 'lioadm'
+        TEMPEST_PLUGINS: '/opt/stack/cinder-tempest-plugin'
+      devstack_plugins:
+        barbican: 'git://git.openstack.org/openstack/barbican'
+      devstack_services:
+        barbican: true
+    irrelevant-files:
+      - ^.*\.rst$
+      - ^doc/.*$
+      - ^releasenotes/.*$
diff --git a/cinder_tempest_plugin/api/volume/test_volume_revert.py b/cinder_tempest_plugin/api/volume/test_volume_revert.py
index 15e4aed..f7e9169 100644
--- a/cinder_tempest_plugin/api/volume/test_volume_revert.py
+++ b/cinder_tempest_plugin/api/volume/test_volume_revert.py
@@ -43,13 +43,14 @@
     def setUp(self):
         super(VolumeRevertTests, self).setUp()
         # Create volume
-        self.volume = self.create_volume(size=1)
+        self.volume = self.create_volume()
         # Create snapshot
         self.snapshot = self.create_snapshot(self.volume['id'])
 
     @decorators.idempotent_id('87b7dcb7-4950-4a3a-802c-ece55491846d')
     def test_volume_revert_to_snapshot(self):
         """Test revert to snapshot"""
+        expected_size = self.volume['size']
         # Revert to snapshot
         self.volume_revert_client.revert_to_snapshot(self.volume,
                                                      self.snapshot['id'])
@@ -61,13 +62,16 @@
             self.snapshot['id'], 'available')
         volume = self.volumes_client.show_volume(self.volume['id'])['volume']
 
-        self.assertEqual(1, volume['size'])
+        self.assertEqual(expected_size, volume['size'])
 
     @decorators.idempotent_id('4e8b0788-87fe-430d-be7a-444d7f8e0347')
     def test_volume_revert_to_snapshot_after_extended(self):
         """Test revert to snapshot after extended"""
+        # Extend volume to double the size
+        expected_size = self.volume['size'] * 2
         # Extend the volume
-        self.volumes_client.extend_volume(self.volume['id'], new_size=2)
+        self.volumes_client.extend_volume(self.volume['id'],
+                                          new_size=expected_size)
         waiters.wait_for_volume_resource_status(self.volumes_client,
                                                 self.volume['id'], 'available')
         # Revert to snapshot
@@ -80,4 +84,4 @@
             self.snapshots_client,
             self.snapshot['id'], 'available')
         volume = self.volumes_client.show_volume(self.volume['id'])['volume']
-        self.assertEqual(2, volume['size'])
+        self.assertEqual(expected_size, volume['size'])
diff --git a/cinder_tempest_plugin/services/volume_revert_client.py b/cinder_tempest_plugin/services/volume_revert_client.py
index 0d54701..fc9b6ad 100644
--- a/cinder_tempest_plugin/services/volume_revert_client.py
+++ b/cinder_tempest_plugin/services/volume_revert_client.py
@@ -24,6 +24,8 @@
     def __init__(self, auth_provider, service, region, **kwargs):
         super(VolumeRevertClient, self).__init__(
             auth_provider, service, region, **kwargs)
+        # revert needs v3 of the volume API
+        self.api_version = 'v3'
 
     def revert_to_snapshot(self, volume, snapshot_id):
         """Revert a volume to snapshot."""
diff --git a/tempest_blacklist.txt b/tempest_blacklist.txt
new file mode 100644
index 0000000..4d173c5
--- /dev/null
+++ b/tempest_blacklist.txt
@@ -0,0 +1,10 @@
+# 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
