Merge "Preparation for support scenario tests on CephFS Native"
diff --git a/.zuul.yaml b/.zuul.yaml
deleted file mode 100644
index 4c95c89..0000000
--- a/.zuul.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-- project:
- templates:
- - check-requirements
- - tempest-plugin-jobs
- check:
- jobs:
- - manila-tempest-dsvm-mysql-generic:
- voting: false
- - manila-tempest-dsvm-postgres-container:
- voting: false
- - manila-tempest-dsvm-postgres-zfsonlinux:
- voting: false
- - manila-tempest-dsvm-postgres-generic-singlebackend:
- voting: false
- - manila-tempest-dsvm-generic-no-share-servers:
- voting: false
- - manila-tempest-dsvm-scenario:
- voting: false
- - manila-tempest-minimal-dsvm-cephfs-native:
- voting: false
- - manila-tempest-minimal-dsvm-cephfs-nfs:
- voting: false
- - manila-tempest-minimal-dsvm-dummy
- - manila-tempest-minimal-dsvm-lvm
- gate:
- queue: manila
- jobs:
- - manila-tempest-minimal-dsvm-dummy
- - manila-tempest-minimal-dsvm-lvm
- experimental:
- jobs:
- - manila-tempest-dsvm-glusterfs-nfs:
- voting: false
- - manila-tempest-dsvm-glusterfs-native:
- voting: false
- - manila-tempest-dsvm-glusterfs-nfs-heketi:
- voting: false
- - manila-tempest-dsvm-glusterfs-native-heketi:
- voting: false
diff --git a/manila_tempest_tests/config.py b/manila_tempest_tests/config.py
index 2205f6b..18f4be5 100644
--- a/manila_tempest_tests/config.py
+++ b/manila_tempest_tests/config.py
@@ -13,8 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-from __future__ import print_function
-
from oslo_config import cfg
service_option = cfg.BoolOpt("manila",
diff --git a/manila_tempest_tests/tests/api/admin/test_quotas.py b/manila_tempest_tests/tests/api/admin/test_quotas.py
index 215b25d..5dbab2a 100644
--- a/manila_tempest_tests/tests/api/admin/test_quotas.py
+++ b/manila_tempest_tests/tests/api/admin/test_quotas.py
@@ -118,7 +118,7 @@
self.tenant_id, self.user_id,
version=PRE_SHARE_REPLICA_QUOTAS_MICROVERSION)
- for key in('share_replicas', 'replica_gigabytes'):
+ for key in ('share_replicas', 'replica_gigabytes'):
self.assertNotIn(key, quotas)
@ddt.data(
diff --git a/manila_tempest_tests/tests/api/base.py b/manila_tempest_tests/tests/api/base.py
index 2ed43c7..671ccf3 100644
--- a/manila_tempest_tests/tests/api/base.py
+++ b/manila_tempest_tests/tests/api/base.py
@@ -799,14 +799,15 @@
status_attr="replica_state")
return replica
- def _get_access_rule_data_from_config(self):
+ @classmethod
+ def _get_access_rule_data_from_config(cls):
"""Get the first available access type/to combination from config.
This method opportunistically picks the first configured protocol
to create the share. Do not use this method in tests where you need
to test depth and breadth in the access types and access recipients.
"""
- protocol = self.shares_v2_client.share_protocol
+ protocol = cls.shares_v2_client.share_protocol
if protocol in CONF.share.enable_ip_rules_for_protocols:
access_type = "ip"
@@ -822,7 +823,7 @@
access_to = "eve"
else:
message = "Unrecognized protocol and access rules configuration."
- raise self.skipException(message)
+ raise cls.skipException(message)
return access_type, access_to
diff --git a/manila_tempest_tests/tests/api/test_access_rules_metadata.py b/manila_tempest_tests/tests/api/test_access_rules_metadata.py
index e569585..1c2db41 100644
--- a/manila_tempest_tests/tests/api/test_access_rules_metadata.py
+++ b/manila_tempest_tests/tests/api/test_access_rules_metadata.py
@@ -26,6 +26,12 @@
@ddt.ddt
class AccessRulesMetadataTest(base.BaseSharesMixedTest):
+ """A Test class to test access rule metadata generically.
+
+ Tests in this class don't care about the type of access rule or the
+ protocol of the share created. They are meant to test the API semantics
+ of the access rule metadata APIs.
+ """
@classmethod
def skip_checks(cls):
@@ -47,22 +53,8 @@
@classmethod
def resource_setup(cls):
super(AccessRulesMetadataTest, cls).resource_setup()
- # The share access rule metadata doesn't care about the value of
- # access type, access protocol, access_to, so we only get one of
- # the value that the driver support.
- if CONF.share.enable_ip_rules_for_protocols:
- cls.protocol = CONF.share.enable_ip_rules_for_protocols[0]
- cls.access_type = "ip"
- elif CONF.share.enable_user_rules_for_protocols:
- cls.protocol = CONF.share.enable_user_rules_for_protocols[0]
- cls.access_type = "user"
- elif CONF.share.enable_cert_rules_for_protocols:
- cls.protocol = CONF.share.enable_cert_rules_for_protocols[0]
- cls.access_type = "cert"
- elif CONF.share.enable_cephx_rules_for_protocols:
- cls.protocol = CONF.share.enable_cephx_rules_for_protocols[0]
- cls.access_type = "cephx"
- cls.shares_v2_client.share_protocol = cls.protocol
+ cls.protocol = cls.shares_v2_client.share_protocol
+ cls.access_type, __ = cls._get_access_rule_data_from_config()
int_range = range(20, 50)
cls.access_to = {
# list of unique values is required for ability to create lots
diff --git a/manila_tempest_tests/tests/api/test_access_rules_metadata_negative.py b/manila_tempest_tests/tests/api/test_access_rules_metadata_negative.py
index 033beea..4383a84 100644
--- a/manila_tempest_tests/tests/api/test_access_rules_metadata_negative.py
+++ b/manila_tempest_tests/tests/api/test_access_rules_metadata_negative.py
@@ -27,6 +27,12 @@
@ddt.ddt
class AccessesMetadataNegativeTest(base.BaseSharesMixedTest):
+ """A Test class with generic negative access rule metadata tests.
+
+ Tests in this class don't care about the type of access rule or the
+ protocol of the share created. They are meant to test the API semantics
+ of the access rule metadata APIs.
+ """
@classmethod
def skip_checks(cls):
@@ -48,23 +54,10 @@
@classmethod
def resource_setup(cls):
super(AccessesMetadataNegativeTest, cls).resource_setup()
- if CONF.share.enable_ip_rules_for_protocols:
- cls.protocol = CONF.share.enable_ip_rules_for_protocols[0]
- cls.access_type = "ip"
- cls.access_to = utils.rand_ip()
- elif CONF.share.enable_user_rules_for_protocols:
- cls.protocol = CONF.share.enable_user_rules_for_protocols[0]
- cls.access_type = "user"
- cls.access_to = CONF.share.username_for_user_rules
- elif CONF.share.enable_cert_rules_for_protocols:
- cls.protocol = CONF.share.enable_cert_rules_for_protocols[0]
- cls.access_type = "cert"
- cls.access_to = "client3.com"
- elif CONF.share.enable_cephx_rules_for_protocols:
- cls.protocol = CONF.share.enable_cephx_rules_for_protocols[0]
- cls.access_type = "cephx"
- cls.access_to = "eve"
- cls.shares_v2_client.share_protocol = cls.protocol
+ cls.protocol = cls.shares_v2_client.share_protocol
+ cls.access_type, cls.access_to = (
+ cls._get_access_rule_data_from_config()
+ )
# create share type
cls.share_type = cls._create_share_type()
cls.share_type_id = cls.share_type['id']
diff --git a/manila_tempest_tests/tests/api/test_rules.py b/manila_tempest_tests/tests/api/test_rules.py
index 7ad57a9..7867bb4 100644
--- a/manila_tempest_tests/tests/api/test_rules.py
+++ b/manila_tempest_tests/tests/api/test_rules.py
@@ -498,6 +498,12 @@
@ddt.ddt
class ShareRulesTest(base.BaseSharesMixedTest):
+ """A Test class to test access rules generically.
+
+ Tests in this class don't care about the type of access rule or the
+ protocol of the share created. They are meant to test the API semantics
+ of the access rules APIs.
+ """
@classmethod
def skip_checks(cls):
@@ -516,23 +522,10 @@
@classmethod
def resource_setup(cls):
super(ShareRulesTest, cls).resource_setup()
- if CONF.share.enable_ip_rules_for_protocols:
- cls.protocol = CONF.share.enable_ip_rules_for_protocols[0]
- cls.access_type = "ip"
- cls.access_to = "8.8.8.8"
- elif CONF.share.enable_user_rules_for_protocols:
- cls.protocol = CONF.share.enable_user_rules_for_protocols[0]
- cls.access_type = "user"
- cls.access_to = CONF.share.username_for_user_rules
- elif CONF.share.enable_cert_rules_for_protocols:
- cls.protocol = CONF.share.enable_cert_rules_for_protocols[0]
- cls.access_type = "cert"
- cls.access_to = "client3.com"
- elif CONF.share.enable_cephx_rules_for_protocols:
- cls.protocol = CONF.share.enable_cephx_rules_for_protocols[0]
- cls.access_type = "cephx"
- cls.access_to = "eve"
- cls.shares_v2_client.share_protocol = cls.protocol
+ cls.protocol = cls.shares_v2_client.share_protocol
+ cls.access_type, cls.access_to = (
+ cls._get_access_rule_data_from_config()
+ )
cls.share_type = cls._create_share_type()
cls.share_type_id = cls.share_type['id']
cls.share = cls.create_share(share_type_id=cls.share_type_id)
diff --git a/manila_tempest_tests/tests/api/test_rules_negative.py b/manila_tempest_tests/tests/api/test_rules_negative.py
index 764533c..e532f7e 100644
--- a/manila_tempest_tests/tests/api/test_rules_negative.py
+++ b/manila_tempest_tests/tests/api/test_rules_negative.py
@@ -386,18 +386,6 @@
access_level="su")
-def skip_if_cephx_access_type_not_supported_by_client(self, client):
- if client == 'shares_client':
- version = '1.0'
- else:
- version = LATEST_MICROVERSION
- if (CONF.share.enable_cephx_rules_for_protocols and
- utils.is_microversion_lt(version, '2.13')):
- msg = ("API version %s does not support cephx access type, need "
- "version >= 2.13." % version)
- raise self.skipException(msg)
-
-
@ddt.ddt
class ShareRulesNegativeTest(base.BaseSharesMixedTest):
# Tests independent from rule type and share protocol
@@ -427,7 +415,6 @@
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
@ddt.data('shares_client', 'shares_v2_client')
def test_delete_access_rule_with_wrong_id(self, client_name):
- skip_if_cephx_access_type_not_supported_by_client(self, client_name)
self.assertRaises(lib_exc.NotFound,
getattr(self, client_name).delete_access_rule,
self.share["id"], "wrong_rule_id")
@@ -435,7 +422,6 @@
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
@ddt.data('shares_client', 'shares_v2_client')
def test_create_access_rule_ip_with_wrong_type(self, client_name):
- skip_if_cephx_access_type_not_supported_by_client(self, client_name)
self.assertRaises(lib_exc.BadRequest,
getattr(self, client_name).create_access_rule,
self.share["id"], "wrong_type", "1.2.3.4")
@@ -445,7 +431,6 @@
@testtools.skipUnless(CONF.share.run_snapshot_tests,
"Snapshot tests are disabled.")
def test_create_access_rule_ip_to_snapshot(self, client_name):
- skip_if_cephx_access_type_not_supported_by_client(self, client_name)
self.assertRaises(lib_exc.NotFound,
getattr(self, client_name).create_access_rule,
self.snap["id"])
@@ -457,7 +442,6 @@
@tc.attr(base.TAG_NEGATIVE, base.TAG_API)
@ddt.data('shares_client', 'shares_v2_client')
def test_create_access_rule_ip_with_wrong_share_id(self, client_name):
- skip_if_cephx_access_type_not_supported_by_client(self, client_name)
self.assertRaises(lib_exc.NotFound,
getattr(self, client_name).create_access_rule,
"wrong_share_id")
diff --git a/manila_tempest_tests/tests/api/test_shares_actions.py b/manila_tempest_tests/tests/api/test_shares_actions.py
index 7cedb6c..2212fb9 100644
--- a/manila_tempest_tests/tests/api/test_shares_actions.py
+++ b/manila_tempest_tests/tests/api/test_shares_actions.py
@@ -545,10 +545,10 @@
@testtools.skipUnless(CONF.share.run_snapshot_tests,
"Snapshot tests are disabled.")
def test_list_snapshots_with_detail_use_limit(self):
- for l, o in [('1', '1'), ('0', '1')]:
+ for limit, offset in [('1', '1'), ('0', '1')]:
filters = {
- 'limit': l,
- 'offset': o,
+ 'limit': limit,
+ 'offset': offset,
'share_id': self.shares[0]['id'],
}
diff --git a/manila_tempest_tests/tests/api/test_shares_from_snapshot_across_pools.py b/manila_tempest_tests/tests/api/test_shares_from_snapshot_across_pools.py
index ce7f46d..2ec167f 100644
--- a/manila_tempest_tests/tests/api/test_shares_from_snapshot_across_pools.py
+++ b/manila_tempest_tests/tests/api/test_shares_from_snapshot_across_pools.py
@@ -135,8 +135,8 @@
@tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)
def test_share_from_snapshot_across_azs(self):
- azs = next(self.rep_domain_azs[rep] for rep in self.rep_domain_azs if
- len(self.rep_domain_azs[rep]) > 1)
+ azs = next((self.rep_domain_azs[rep] for rep in self.rep_domain_azs if
+ len(self.rep_domain_azs[rep]) > 1), None)
if azs is None:
msg = ("Could not find the necessary azs. At least two azs "
"are needed to run the test to create share from snapshot "
diff --git a/manila_tempest_tests/tests/scenario/manager_share.py b/manila_tempest_tests/tests/scenario/manager_share.py
index 0b289d1..10074b1 100644
--- a/manila_tempest_tests/tests/scenario/manager_share.py
+++ b/manila_tempest_tests/tests/scenario/manager_share.py
@@ -161,9 +161,9 @@
def init_remote_client(self, instance):
server_ip = None
if self.ipv6_enabled:
- server_ip = self._get_ip_server_ip(instance, ip_version=6)
+ server_ip = self._get_server_ip(instance, ip_version=6)
if not server_ip:
- ip_addr = self._get_ip_server_ip(instance)
+ ip_addr = self._get_server_ip(instance)
# Obtain a floating IP
floating_ip = self.create_floating_ip(instance, ip_addr=ip_addr)
self.floating_ips[instance['id']] = floating_ip
@@ -294,7 +294,7 @@
if instance and not ip:
try:
net_addresses = instance['addresses']
- first_address = net_addresses.values()[0][0]
+ first_address = list(net_addresses.values())[0][0]
ip = first_address['addr']
except Exception:
LOG.debug("Instance has no valid IP address: %s", instance)
@@ -332,7 +332,7 @@
client = client or self.shares_v2_client
if not CONF.share.multitenancy_enabled:
if self.ipv6_enabled and not self.storage_network:
- server_ip = self._get_ip_server_ip(instance, ip_version=6)
+ server_ip = self._get_server_ip(instance, ip_version=6)
else:
server_ip = (
CONF.share.override_ip_for_nfs_access
@@ -431,7 +431,7 @@
return locations
- def _get_ip_server_ip(self, instance, ip_version=4):
+ def _get_server_ip(self, instance, ip_version=4):
ip_addrs = []
for network_name, nic_list in instance['addresses'].items():
if network_name == self.storage_network_name:
diff --git a/test-requirements.txt b/test-requirements.txt
index e3eead6..f230fa9 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -2,7 +2,7 @@
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-hacking>=3.0,<3.1.0;python_version>'3' # Apache-2.0
+hacking>=3.0.1,<3.1.0;python_version>'3' # Apache-2.0
coverage!=4.4,>=4.0 # Apache-2.0
python-subunit>=1.0.0 # Apache-2.0/BSD
diff --git a/zuul.d/manila-tempest-jobs.yaml b/zuul.d/manila-tempest-jobs.yaml
new file mode 100644
index 0000000..8efb2a2
--- /dev/null
+++ b/zuul.d/manila-tempest-jobs.yaml
@@ -0,0 +1,261 @@
+- job:
+ name: manila-tempest-plugin-base
+ abstract: true
+ description: Base job for devstack/tempest based manila jobs.
+ parent: devstack-tempest
+ timeout: 10800
+ required-projects: &manila-tempest-required-projects
+ - openstack/manila
+ - openstack/manila-tempest-plugin
+ - openstack/python-manilaclient
+ - openstack/tempest
+ irrelevant-files: &irrelevant-files
+ - ^(test-|)requirements.txt$
+ - ^.*\.rst$
+ - ^api-ref/.*$
+ - ^doc/.*$
+ - ^manila/hacking/.*$
+ - ^manila/tests/.*$
+ - ^releasenotes/.*$
+ - ^setup.cfg$
+ - ^tools/.*$
+ - ^tox.ini$
+ vars: &manila-tempest-base-vars
+ tox_envlist: all
+ tempest_test_regex: manila_tempest_tests
+ tempest_concurrency: 8
+ tempest_plugins:
+ - manila-tempest-plugin
+ devstack_plugins:
+ manila: https://opendev.org/openstack/manila
+ manila-tempest-plugin: https://opendev.org/openstack/manila-tempest-plugin
+ devstack_services:
+ cinder: false
+ s-account: false
+ s-container: false
+ s-object: false
+ s-proxy: false
+ horizon: false
+ tls-proxy: true
+ devstack_localrc:
+ USE_PYTHON3: true
+ TEMPEST_USE_TEST_ACCOUNTS: true
+ MANILA_USE_DOWNGRADE_MIGRATIONS: true
+ MANILA_INSTALL_TEMPEST_PLUGIN_SYSTEMWIDE: false
+ MANILA_ALLOW_NAS_SERVER_PORTS_ON_HOST: true
+ MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS: 'snapshot_support=True create_share_from_snapshot_support=True'
+ MANILA_CONFIGURE_DEFAULT_TYPES: true
+
+
+- job:
+ name: manila-tempest-plugin-ipv6-base
+ abstract: true
+ description: |
+ Base job for devstack/tempest based manila jobs in a 4+6 (dual-stack)
+ devstack environment with IPv6 control plane endpoints.
+ parent: devstack-tempest-ipv6
+ timeout: 10800
+ irrelevant-files: *irrelevant-files
+ required-projects: *manila-tempest-required-projects
+ vars: *manila-tempest-base-vars
+
+- job:
+ name: manila-tempest-plugin-zfsonlinux
+ description: Test ZFSOnLinux multibackend (DHSS=False) with postgresql db
+ parent: manila-tempest-plugin-base
+ vars:
+ tempest_test_regex: '(^manila_tempest_tests.tests)(?=.*\[.*\bbackend\b.*\])'
+ devstack_localrc:
+ SHARE_DRIVER: manila.share.drivers.zfsonlinux.driver.ZFSonLinuxShareDriver
+ MANILA_ENABLED_BACKENDS: london,paris
+ MANILA_BACKEND1_CONFIG_GROUP_NAME: london
+ MANILA_BACKEND2_CONFIG_GROUP_NAME: paris
+ MANILA_SHARE_BACKEND1_NAME: LONDON
+ MANILA_SHARE_BACKEND2_NAME: PARIS
+ MANILA_OPTGROUP_london_driver_handles_share_servers: false
+ MANILA_OPTGROUP_paris_driver_handles_share_servers: false
+ MANILA_SHARE_MIGRATION_PERIOD_TASK_INTERVAL: 1
+ MANILA_REPLICA_STATE_UPDATE_INTERVAL: 60
+ MANILA_ZFSONLINUX_SERVICE_IP: 127.0.0.1
+ MANILA_ZFSONLINUX_USE_SSH: true
+ MANILA_USE_SCHEDULER_CREATING_SHARE_FROM_SNAPSHOT: true
+ devstack_services:
+ mysql: false
+ postgresql: true
+ devstack_local_conf:
+ test-config:
+ $TEMPEST_CONFIG:
+ share:
+ default_share_type_name: default
+ run_driver_assisted_migration_tests: true
+ run_host_assisted_migration_tests: true
+ run_replication_tests: true
+ run_manage_unmanage_snapshot_tests: true
+ run_manage_unmanage_tests: true
+ run_multiple_share_replicas_tests: false
+ run_create_share_from_snapshot_in_another_pool_or_az_tests: true
+ backend_replication_type: readable
+ enable_protocols: nfs
+ capability_storage_protocol: NFS
+ build_timeout: 180
+ enable_ip_rules_for_protocols: nfs
+ multitenancy_enabled: False
+ backend_names: LONDON,PARIS
+ multi_backend: true
+ image_password: manila
+
+- job:
+ name: manila-tempest-plugin-lvm
+ description: |
+ Test LVM multibackend (DHSS=False) in a 4+6 (dual-stack) devstack
+ environment with IPv6 control plane endpoints.
+ parent: manila-tempest-plugin-ipv6-base
+ required-projects:
+ - openstack/neutron-dynamic-routing
+ vars:
+ tempest_test_regex: '(^manila_tempest_tests.tests)(?=.*\[.*\bbackend\b.*\])'
+ devstack_localrc:
+ SHARE_DRIVER: manila.share.drivers.lvm.LVMShareDriver
+ MANILA_ENABLED_BACKENDS: london,paris
+ MANILA_BACKEND1_CONFIG_GROUP_NAME: london
+ MANILA_BACKEND2_CONFIG_GROUP_NAME: paris
+ MANILA_SHARE_BACKEND1_NAME: LONDON
+ MANILA_SHARE_BACKEND2_NAME: PARIS
+ MANILA_OPTGROUP_london_driver_handles_share_servers: false
+ MANILA_OPTGROUP_paris_driver_handles_share_servers: false
+ SHARE_BACKING_FILE_SIZE: 32000M
+ MANILA_SHARE_MIGRATION_PERIOD_TASK_INTERVAL: 1
+ MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS: 'snapshot_support=True create_share_from_snapshot_support=True revert_to_snapshot_support=True mount_snapshot_support=True'
+ MANILA_SETUP_IPV6: true
+ NEUTRON_CREATE_INITIAL_NETWORKS: false
+ MANILA_RESTORE_IPV6_DEFAULT_ROUTE: false
+ devstack_plugins:
+ neutron-dynamic-routing: https://opendev.org/openstack/neutron-dynamic-routing
+ devstack_local_conf:
+ test-config:
+ $TEMPEST_CONFIG:
+ share:
+ default_share_type_name: default
+ run_ipv6_tests: true
+ run_mount_snapshot_tests: true
+ run_host_assisted_migration_tests: true
+ run_shrink_tests: false
+ run_revert_to_snapshot_tests: true
+ enable_user_rules_for_protocols: cifs
+ enable_ip_rules_for_protocols: nfs
+ multitenancy_enabled: False
+ backend_names: LONDON,PARIS
+ multi_backend: true
+ image_password: manila
+
+- job:
+ name: manila-tempest-plugin-container
+ description: |
+ Test the container driver multibackend (DHSS=False) with CIFS
+ and postgresql db. API only, in a minimal devstack
+ parent: manila-tempest-plugin-base
+ vars:
+ tempest_test_regex: manila_tempest_tests.tests.api
+ devstack_localrc:
+ SHARE_DRIVER: manila.share.drivers.container.driver.ContainerShareDriver
+ MANILA_SERVICE_IMAGE_ENABLED: false
+ MANILA_ENABLED_BACKENDS: london,paris
+ MANILA_BACKEND1_CONFIG_GROUP_NAME: london
+ MANILA_BACKEND2_CONFIG_GROUP_NAME: paris
+ MANILA_SHARE_BACKEND1_NAME: LONDON
+ MANILA_SHARE_BACKEND2_NAME: PARIS
+ MANILA_OPTGROUP_london_driver_handles_share_servers: true
+ MANILA_OPTGROUP_paris_driver_handles_share_servers: true
+ SHARE_BACKING_FILE_SIZE: 64000M
+ MANILA_CONFIGURE_DEFAULT_TYPES: false
+ MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS: 'snapshot_support=false'
+ devstack_services:
+ mysql: false
+ postgresql: true
+ devstack_local_conf:
+ test-config:
+ $TEMPEST_CONFIG:
+ share:
+ enable_ip_rules_for_protocols: ""
+ run_share_group_tests: false
+ run_manage_unmanage_tests: true
+ run_snapshot_tests: false
+ run_shrink_tests: false
+ enable_user_rules_for_protocols: cifs
+ enable_protocols: cifs
+ capability_storage_protocol: CIFS
+ multitenancy_enabled: true
+ backend_names: LONDON,PARIS
+ multi_backend: true
+
+- job:
+ name: manila-tempest-plugin-generic
+ description: |
+ Test the generic driver multibackend (DHSS=True) with NFS and CIFS
+ parent: manila-tempest-plugin-base
+ vars:
+ tempest_test_regex: '(^manila_tempest_tests.tests)(?=.*\[.*\bbackend\b.*\])'
+ # The generic driver uses nova VMs as share servers; running with a
+ # high concurrency could starve the driver of RAM/Disk/CPUs to
+ # function properly in a small single node devstack VM.
+ tempest_concurrency: 2
+ devstack_localrc:
+ VOLUME_BACKING_FILE_SIZE: 24G
+ SHARE_DRIVER: manila.share.drivers.generic.GenericShareDriver
+ MANILA_ENABLED_BACKENDS: london,paris
+ MANILA_BACKEND1_CONFIG_GROUP_NAME: london
+ MANILA_BACKEND2_CONFIG_GROUP_NAME: paris
+ MANILA_SHARE_BACKEND1_NAME: LONDON
+ MANILA_SHARE_BACKEND2_NAME: PARIS
+ MANILA_OPTGROUP_london_driver_handles_share_servers: true
+ MANILA_OPTGROUP_paris_driver_handles_share_servers: true
+ MANILA_USE_SERVICE_INSTANCE_PASSWORD: true
+ MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS: 'snapshot_support=True create_share_from_snapshot_support=True'
+ devstack_services:
+ cinder: true
+ devstack_local_conf:
+ test-config:
+ $TEMPEST_CONFIG:
+ share:
+ default_share_type_name: default
+ run_share_group_tests: false
+ multitenancy_enabled: true
+ suppress_errors_in_cleanup: true
+ share_creation_retry_number: 2
+ backend_names: LONDON,PARIS
+ multi_backend: true
+ image_password: manila
+
+- job:
+ name: manila-tempest-plugin-cephfs-native
+ description: Test CephFS Native (DHSS=False)
+ parent: manila-tempest-plugin-base
+ required-projects:
+ - openstack/devstack-plugin-ceph
+ vars:
+ devstack_plugins:
+ devstack-plugin-ceph: https://opendev.org/openstack/devstack-plugin-ceph
+ tempest_test_regex: manila_tempest_tests.tests.api
+ devstack_localrc:
+ SHARE_DRIVER: manila.share.drivers.cephfs.driver.CephFSDriver
+ MANILA_ENABLED_BACKENDS: cephfsnative
+ ENABLED_SHARE_PROTOCOLS: CEPHFS
+ MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS: 'snapshot_support=False'
+ MANILA_SERVICE_IMAGE_ENABLED: false
+ MANILA_OPTGROUP_cephfsnative_share_driver: manila.share.drivers.cephfs.driver.CephFSDriver
+ MANILA_OPTGROUP_cephfsnative_driver_handles_share_servers: false
+ MANILA_OPTGROUP_cephfsnative_cephfs_conf_path: /etc/ceph/ceph.conf
+ MANILA_OPTGROUP_cephfsnative_cephfs_auth_id: manila
+ devstack_local_conf:
+ test-config:
+ $TEMPEST_CONFIG:
+ share:
+ enable_cephx_rules_for_protocols: cephfs
+ run_share_group_tests: false
+ run_snapshot_tests: false
+ multitenancy_enabled: false
+ suppress_errors_in_cleanup: true
+ backend_names: CEPHFSNATIVE
+ capability_snapshot_support: false
+ capability_storage_protocol: CEPHFS
+ enable_protocols: cephfs
\ No newline at end of file
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
new file mode 100644
index 0000000..e06e26d
--- /dev/null
+++ b/zuul.d/project.yaml
@@ -0,0 +1,33 @@
+- project:
+ templates:
+ - check-requirements
+ - tempest-plugin-jobs
+ check:
+ jobs:
+ - manila-tempest-plugin-lvm
+ - manila-tempest-minimal-dsvm-dummy
+ - manila-tempest-plugin-zfsonlinux:
+ voting: false
+ - manila-tempest-plugin-cephfs-native:
+ voting: false
+ - manila-tempest-plugin-container:
+ voting: false
+ - manila-tempest-plugin-generic:
+ voting: false
+ - manila-tempest-minimal-dsvm-cephfs-nfs:
+ voting: false
+ gate:
+ queue: manila
+ jobs:
+ - manila-tempest-minimal-dsvm-dummy
+ - manila-tempest-plugin-lvm
+ experimental:
+ jobs:
+ - manila-tempest-dsvm-glusterfs-nfs:
+ voting: false
+ - manila-tempest-dsvm-glusterfs-native:
+ voting: false
+ - manila-tempest-dsvm-glusterfs-nfs-heketi:
+ voting: false
+ - manila-tempest-dsvm-glusterfs-native-heketi:
+ voting: false