Merge "Setup snapshot extra specs only if required"
diff --git a/manila_tempest_tests/config.py b/manila_tempest_tests/config.py
index 7aaf5c9..5a9087c 100644
--- a/manila_tempest_tests/config.py
+++ b/manila_tempest_tests/config.py
@@ -27,7 +27,9 @@
cfg.StrOpt("min_api_microversion",
default="2.0",
help="The minimum api microversion is configured to be the "
- "value of the minimum microversion supported by Manila."),
+ "value of the minimum microversion supported by Manila. "
+ "This value is only used to validate the versions "
+ "response from Manila."),
cfg.StrOpt("max_api_microversion",
default="2.61",
help="The maximum api microversion is configured to be the "
diff --git a/manila_tempest_tests/tests/api/admin/test_admin_actions.py b/manila_tempest_tests/tests/api/admin/test_admin_actions.py
index e364206..d2c2c2d 100644
--- a/manila_tempest_tests/tests/api/admin/test_admin_actions.py
+++ b/manila_tempest_tests/tests/api/admin/test_admin_actions.py
@@ -36,10 +36,13 @@
"migration_success", None]
cls.bad_status = "error_deleting"
# create share type
- cls.share_type = cls._create_share_type()
+ extra_specs = {}
+ if CONF.share.capability_snapshot_support:
+ extra_specs.update({'snapshot_support': True})
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
- cls.sh = cls.create_share(share_type_id=cls.share_type_id)
+ cls.share = cls.create_share(share_type_id=cls.share_type_id)
def _reset_resource_available(self, resource_id, resource_type="shares"):
self.shares_v2_client.reset_state(
@@ -52,17 +55,17 @@
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
@ddt.data("error", "available", "error_deleting", "deleting", "creating")
def test_reset_share_state(self, status):
- self.shares_v2_client.reset_state(self.sh["id"], status=status)
+ self.shares_v2_client.reset_state(self.share["id"], status=status)
waiters.wait_for_resource_status(self.shares_v2_client,
- self.sh["id"], status)
- self.addCleanup(self._reset_resource_available, self.sh["id"])
+ self.share["id"], status)
+ self.addCleanup(self._reset_resource_available, self.share["id"])
@decorators.idempotent_id('13075b2d-fe83-41bf-b6ef-99cfcc00257d')
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
@ddt.data("error", "available", "error_deleting", "deleting", "creating")
def test_reset_share_instance_state(self, status):
sh_instance = self.shares_v2_client.get_instances_of_share(
- self.sh["id"])[0]
+ self.share["id"])[0]
share_instance_id = sh_instance["id"]
self.shares_v2_client.reset_state(
share_instance_id, s_type="share_instances", status=status)
@@ -78,7 +81,7 @@
"Snapshot tests are disabled.")
@ddt.data("error", "available", "error_deleting", "deleting", "creating")
def test_reset_snapshot_state(self, status):
- snapshot = self.create_snapshot_wait_for_active(self.sh["id"])
+ snapshot = self.create_snapshot_wait_for_active(self.share["id"])
self.shares_v2_client.reset_state(
snapshot["id"], s_type="snapshots", status=status)
waiters.wait_for_resource_status(
@@ -133,7 +136,7 @@
@testtools.skipUnless(CONF.share.run_snapshot_tests,
"Snapshot tests are disabled.")
def test_force_delete_snapshot(self):
- sn = self.create_snapshot_wait_for_active(self.sh["id"])
+ sn = self.create_snapshot_wait_for_active(self.share["id"])
# Change status from 'available' to 'error_deleting'
self.shares_v2_client.reset_state(
@@ -152,9 +155,10 @@
@utils.skip_if_microversion_not_supported("2.22")
def test_reset_share_task_state(self):
for task_state in self.task_states:
- self.shares_v2_client.reset_task_state(self.sh["id"], task_state)
+ self.shares_v2_client.reset_task_state(self.share["id"],
+ task_state)
waiters.wait_for_resource_status(
- self.shares_v2_client, self.sh["id"], task_state,
+ self.shares_v2_client, self.share["id"], task_state,
status_attr='task_state')
@decorators.idempotent_id('4233b941-a909-4f35-9ec9-753736949dd2')
@@ -163,7 +167,7 @@
# This check will ensure that when a share creation request is handled,
# if the driver has the "driver handles share servers" option enabled,
# that a share server will be created, otherwise, not.
- share_get = self.admin_shares_v2_client.get_share(self.sh['id'])
+ share_get = self.admin_shares_v2_client.get_share(self.share['id'])
share_server = share_get['share_server_id']
if CONF.share.multitenancy_enabled:
self.assertNotEmpty(share_server)
diff --git a/manila_tempest_tests/tests/api/admin/test_admin_actions_negative.py b/manila_tempest_tests/tests/api/admin/test_admin_actions_negative.py
index 4ec0e6c..d6eb449 100644
--- a/manila_tempest_tests/tests/api/admin/test_admin_actions_negative.py
+++ b/manila_tempest_tests/tests/api/admin/test_admin_actions_negative.py
@@ -34,24 +34,27 @@
cls.admin_client = cls.admin_shares_v2_client
cls.member_client = cls.shares_v2_client
# create share type
- cls.share_type = cls._create_share_type()
+ extra_specs = {}
+ if CONF.share.capability_snapshot_support:
+ extra_specs.update({'snapshot_support': True})
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
- cls.sh = cls.create_share(share_type_id=cls.share_type_id,
- client=cls.admin_client)
+ cls.share = cls.create_share(share_type_id=cls.share_type_id,
+ client=cls.admin_client)
cls.sh_instance = (
- cls.admin_client.get_instances_of_share(cls.sh["id"])[0]
+ cls.admin_client.get_instances_of_share(cls.share["id"])[0]
)
if CONF.share.run_snapshot_tests:
- cls.sn = cls.create_snapshot_wait_for_active(
- cls.sh["id"], client=cls.admin_client)
+ cls.snapshot = cls.create_snapshot_wait_for_active(
+ cls.share["id"], client=cls.admin_client)
@decorators.idempotent_id('f730c395-a501-44cf-90d9-a3273771b895')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
def test_reset_share_state_to_unacceptable_state(self):
self.assertRaises(lib_exc.BadRequest,
self.admin_client.reset_state,
- self.sh["id"], status="fake")
+ self.share["id"], status="fake")
@decorators.idempotent_id('3bfa9555-9c7e-45a2-b5bd-384329cb6fda')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
@@ -71,7 +74,9 @@
def test_reset_snapshot_state_to_unacceptable_state(self):
self.assertRaises(lib_exc.BadRequest,
self.admin_client.reset_state,
- self.sn["id"], s_type="snapshots", status="fake")
+ self.snapshot["id"],
+ s_type="snapshots",
+ status="fake")
@decorators.idempotent_id('3b525c29-b657-493f-aa41-b17676a95fd2')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
@@ -79,7 +84,7 @@
# Even if member from another tenant, it should be unauthorized
self.assertRaises(lib_exc.Forbidden,
self.member_client.reset_state,
- self.sh["id"])
+ self.share["id"])
@decorators.idempotent_id('d4abddba-1c20-49e1-85b1-5452f0faceb0')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
@@ -97,7 +102,7 @@
# Even if member from another tenant, it should be unauthorized
self.assertRaises(lib_exc.Forbidden,
self.member_client.reset_state,
- self.sn["id"], s_type="snapshots")
+ self.snapshot["id"], s_type="snapshots")
@decorators.idempotent_id('7cd0b48e-2815-4f8c-8718-3c071ff9701f')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
@@ -105,7 +110,7 @@
# If a non-admin tries to do force_delete, it should be unauthorized
self.assertRaises(lib_exc.Forbidden,
self.member_client.force_delete,
- self.sh["id"])
+ self.share["id"])
@decorators.idempotent_id('257da3e0-9460-4d97-8a56-c86c0427cc64')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
@@ -123,7 +128,7 @@
# If a non-admin tries to do force_delete, it should be unauthorized
self.assertRaises(lib_exc.Forbidden,
self.member_client.force_delete,
- self.sn["id"], s_type="snapshots")
+ self.snapshot["id"], s_type="snapshots")
@decorators.idempotent_id('821da7c8-3501-44ba-9ffe-45f485a6e573')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
@@ -140,7 +145,7 @@
# unauthorized
self.assertRaises(lib_exc.Forbidden,
self.member_client.get_instances_of_share,
- self.sh['id'])
+ self.share['id'])
@decorators.idempotent_id('d662457c-2b84-4f13-aee7-5ffafe2552f1')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
@@ -148,7 +153,7 @@
def test_reset_task_state_invalid_state(self):
self.assertRaises(
lib_exc.BadRequest, self.admin_client.reset_task_state,
- self.sh['id'], 'fake_state')
+ self.share['id'], 'fake_state')
@ddt.ddt
diff --git a/manila_tempest_tests/tests/api/admin/test_migration.py b/manila_tempest_tests/tests/api/admin/test_migration.py
index 952b788..e93c603 100644
--- a/manila_tempest_tests/tests/api/admin/test_migration.py
+++ b/manila_tempest_tests/tests/api/admin/test_migration.py
@@ -72,8 +72,11 @@
"needed to run share migration tests.")
# create share type (generic)
- cls.share_type = cls._create_share_type()
- cls.share_type_id = cls.share_type['id']
+ cls.share_type = cls.create_share_type(
+ name=data_utils.rand_name('original_share_type_for_migration'),
+ cleanup_in_class=True,
+ extra_specs=utils.get_configured_extra_specs())
+ cls.share_type_id = cls.share_type['share_type']['id']
cls.new_type = cls.create_share_type(
name=data_utils.rand_name('new_share_type_for_migration'),
@@ -338,7 +341,10 @@
# Share type with snapshot support
st_name = data_utils.rand_name(
'snapshot_capable_share_type_for_migration')
- extra_specs = self.add_extra_specs_to_dict({"snapshot_support": True})
+ extra_specs = self.add_extra_specs_to_dict({
+ "snapshot_support": True,
+ "create_share_from_snapshot_support": True,
+ })
ss_type = self.create_share_type(st_name, extra_specs=extra_specs)
# New share type with no snapshot support capability
diff --git a/manila_tempest_tests/tests/api/admin/test_migration_negative.py b/manila_tempest_tests/tests/api/admin/test_migration_negative.py
index 922a4db..e6e10ca 100644
--- a/manila_tempest_tests/tests/api/admin/test_migration_negative.py
+++ b/manila_tempest_tests/tests/api/admin/test_migration_negative.py
@@ -57,7 +57,11 @@
"are needed to run share migration tests.")
# create share type (generic)
- cls.share_type = cls._create_share_type()
+ extra_specs = {}
+
+ if CONF.share.capability_snapshot_support:
+ extra_specs.update({'snapshot_support': True})
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
diff --git a/manila_tempest_tests/tests/api/admin/test_quotas.py b/manila_tempest_tests/tests/api/admin/test_quotas.py
index 073b089..fc035a2 100644
--- a/manila_tempest_tests/tests/api/admin/test_quotas.py
+++ b/manila_tempest_tests/tests/api/admin/test_quotas.py
@@ -196,7 +196,12 @@
def resource_setup(cls):
super(SharesAdminQuotasUpdateTest, cls).resource_setup()
# create share type
- cls.share_type = cls._create_share_type()
+ extra_specs = {}
+ if CONF.share.capability_snapshot_support:
+ extra_specs.update({'snapshot_support': True})
+ if CONF.share.capability_create_share_from_snapshot_support:
+ extra_specs.update({'create_share_from_snapshot_support': True})
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share group type
cls.share_group_type = cls._create_share_group_type()
@@ -901,6 +906,11 @@
@testtools.skipUnless(
CONF.share.run_share_group_tests, 'Share Group tests disabled.')
@utils.skip_if_microversion_not_supported(SHARE_GROUPS_MICROVERSION)
+ @testtools.skipUnless(CONF.share.run_snapshot_tests,
+ "Snapshot tests are disabled.")
+ @testtools.skipUnless(
+ CONF.share.capability_create_share_from_snapshot_support,
+ "Tests for shares from snapshots are disabled.")
def test_share_group_quotas_usages(self):
# Set quotas for project (3 SG, 1 SGS) and user (2 SG, 1 SGS)
self.update_quotas(self.tenant_id,
diff --git a/manila_tempest_tests/tests/api/admin/test_replication_actions.py b/manila_tempest_tests/tests/api/admin/test_replication_actions.py
index 1c9b421..1c879b2 100644
--- a/manila_tempest_tests/tests/api/admin/test_replication_actions.py
+++ b/manila_tempest_tests/tests/api/admin/test_replication_actions.py
@@ -56,6 +56,8 @@
# create share type
extra_specs = {"replication_type": cls.replication_type}
+ if CONF.share.capability_snapshot_support:
+ extra_specs.update({"snapshot_support": True})
cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
diff --git a/manila_tempest_tests/tests/api/admin/test_share_groups.py b/manila_tempest_tests/tests/api/admin/test_share_groups.py
index 80937a3..216409f 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_groups.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_groups.py
@@ -45,10 +45,12 @@
def resource_setup(cls):
super(ShareGroupsTest, cls).resource_setup()
# Create 2 share_types
- cls.share_type = cls._create_share_type()
+ extra_specs = {}
+ if CONF.share.capability_snapshot_support:
+ extra_specs.update({'snapshot_support': True})
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
-
- cls.share_type2 = cls._create_share_type()
+ cls.share_type2 = cls._create_share_type(specs=extra_specs)
cls.share_type_id2 = cls.share_type2['id']
# Create a share group type
@@ -176,6 +178,8 @@
@decorators.idempotent_id('8ca1f0a0-2a36-4adb-af6b-6741b00307c5')
@testtools.skipUnless(
CONF.share.multitenancy_enabled, "Only for multitenancy.")
+ @testtools.skipUnless(
+ CONF.share.run_snapshot_tests, "Snapshot tests are disabled.")
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
def test_create_sg_from_snapshot_verify_share_server_information_min(self):
# Create a share group
diff --git a/manila_tempest_tests/tests/api/admin/test_share_groups_negative.py b/manila_tempest_tests/tests/api/admin/test_share_groups_negative.py
index 7e10806..115c0e6 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_groups_negative.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_groups_negative.py
@@ -41,16 +41,13 @@
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
def test_create_share_group_with_wrong_consistent_snapshot_spec(self):
# Create valid share type for share group type
- name = data_utils.rand_name("tempest-manila")
- extra_specs = self.add_extra_specs_to_dict()
- st = self.create_share_type(name, extra_specs=extra_specs)
- share_type = st['share_type'] if 'share_type' in st else st
+ share_type = self._create_share_type(cleanup_in_class=False)
# Create share group type with wrong value for
# 'consistent_snapshot_support' capability, we always expect
# NoValidHostFound using this SG type.
sg_type = self.create_share_group_type(
- name=name,
+ name=data_utils.rand_name("tempest-manila"),
share_types=[share_type['id']],
group_specs={"consistent_snapshot_support": "fake"},
cleanup_in_class=False)
diff --git a/manila_tempest_tests/tests/api/admin/test_share_servers_migration.py b/manila_tempest_tests/tests/api/admin/test_share_servers_migration.py
index b9e128c..46f7fdc 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_servers_migration.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_servers_migration.py
@@ -57,7 +57,10 @@
raise cls.skipException(msg)
# create share type (generic)
- cls.share_type = cls._create_share_type()
+ extra_specs = {}
+ if CONF.share.capability_snapshot_support:
+ extra_specs.update({'snapshot_support': True})
+ cls.share_type = cls._create_share_type(specs=extra_specs)
# create two non routable IPs to be used in NFS access rulesi
cls.access_rules_ip_rw = utils.rand_ip()
diff --git a/manila_tempest_tests/tests/api/admin/test_share_snapshot_instances.py b/manila_tempest_tests/tests/api/admin/test_share_snapshot_instances.py
index dff105c..477135e 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_snapshot_instances.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_snapshot_instances.py
@@ -40,7 +40,8 @@
def resource_setup(cls):
super(ShareSnapshotInstancesTest, cls).resource_setup()
# create share type
- cls.share_type = cls._create_share_type()
+ extra_specs = {'snapshot_support': True}
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
cls.share = cls.create_share(share_type_id=cls.share_type_id)
diff --git a/manila_tempest_tests/tests/api/admin/test_share_snapshot_instances_negative.py b/manila_tempest_tests/tests/api/admin/test_share_snapshot_instances_negative.py
index 6efb117..3ba2217 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_snapshot_instances_negative.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_snapshot_instances_negative.py
@@ -40,7 +40,8 @@
cls.admin_client = cls.admin_shares_v2_client
cls.member_client = cls.shares_v2_client
# create share type
- cls.share_type = cls._create_share_type()
+ extra_specs = {'snapshot_support': True}
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
cls.share = cls.create_share(share_type_id=cls.share_type_id,
diff --git a/manila_tempest_tests/tests/api/admin/test_share_types.py b/manila_tempest_tests/tests/api/admin/test_share_types.py
index c00df5d..1bfb3c8 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_types.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_types.py
@@ -93,9 +93,17 @@
# Get share type
get = self.shares_v2_client.get_share_type(st_id, version=version)
+
self.assertEqual(name, get["share_type"]["name"])
self.assertEqual(st_id, get["share_type"]["id"])
self._verify_description(description, get['share_type'], version)
+
+ if utils.is_microversion_lt(version, "2.24"):
+ # snapshot_support is an implied/required extra-spec until
+ # version 2.24, and the service assumes it to be True since we
+ # don't provide it during share type creation.
+ extra_specs.update({"snapshot_support": 'True'})
+
self.assertEqual(extra_specs, get["share_type"]["extra_specs"])
self._verify_is_public_key_name(get['share_type'], version)
diff --git a/manila_tempest_tests/tests/api/admin/test_share_types_extra_specs.py b/manila_tempest_tests/tests/api/admin/test_share_types_extra_specs.py
index aaef4f9..5bf8e91 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_types_extra_specs.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_types_extra_specs.py
@@ -128,12 +128,25 @@
@tc.attr(base.TAG_POSITIVE, base.TAG_API)
@ddt.data(*utils.deduplicate(['2.24', LATEST_MICROVERSION]))
def test_delete_snapshot_support_extra_spec(self, version):
+ """Is snapshot_support really an optional extra-spec if API > v2.24?"""
utils.check_skip_if_microversion_not_supported(version)
- # Delete one extra spec for share type
+
+ # set snapshot_support extra-spec
+ self.shares_v2_client.update_share_type_extra_specs(
+ self.st_id, {'snapshot_support': 'True'})
+
+ # Get extra specs
+ share_type_extra_specs = self.shares_client.get_share_type_extra_specs(
+ self.st_id)
+
+ self.assertIn('snapshot_support', share_type_extra_specs)
+ self.assertEqual('True', share_type_extra_specs['snapshot_support'])
+
+ # Delete the 'snapshot_support' extra spec from the share type
self.shares_v2_client.delete_share_type_extra_spec(
self.st_id, 'snapshot_support', version=version)
- # Get metadata
+ # Get extra specs
share_type_extra_specs = self.shares_client.get_share_type_extra_specs(
self.st_id)
diff --git a/manila_tempest_tests/tests/api/admin/test_shares_actions.py b/manila_tempest_tests/tests/api/admin/test_shares_actions.py
index 0c5e500..fe20c48 100644
--- a/manila_tempest_tests/tests/api/admin/test_shares_actions.py
+++ b/manila_tempest_tests/tests/api/admin/test_shares_actions.py
@@ -38,6 +38,10 @@
# create share type for share filtering purposes
specs = {"storage_protocol": CONF.share.capability_storage_protocol}
+ if CONF.share.capability_snapshot_support:
+ specs.update({'snapshot_support': True})
+ if CONF.share.capability_create_share_from_snapshot_support:
+ specs.update({'create_share_from_snapshot_support': True})
cls.share_type = cls._create_share_type(specs=specs)
cls.share_type_id = cls.share_type['id']
diff --git a/manila_tempest_tests/tests/api/admin/test_snapshot_export_locations.py b/manila_tempest_tests/tests/api/admin/test_snapshot_export_locations.py
index 9106987..ef3ed17 100644
--- a/manila_tempest_tests/tests/api/admin/test_snapshot_export_locations.py
+++ b/manila_tempest_tests/tests/api/admin/test_snapshot_export_locations.py
@@ -49,7 +49,11 @@
def resource_setup(cls):
super(SnapshotExportLocationsTest, cls).resource_setup()
# create share type
- cls.share_type = cls._create_share_type()
+ extra_specs = {
+ 'snapshot_support': True,
+ 'mount_snapshot_support': True,
+ }
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
cls.share = cls.create_share(share_type_id=cls.share_type_id,
diff --git a/manila_tempest_tests/tests/api/admin/test_snapshot_export_locations_negative.py b/manila_tempest_tests/tests/api/admin/test_snapshot_export_locations_negative.py
index d5afd0c..bb1d48d 100644
--- a/manila_tempest_tests/tests/api/admin/test_snapshot_export_locations_negative.py
+++ b/manila_tempest_tests/tests/api/admin/test_snapshot_export_locations_negative.py
@@ -46,7 +46,11 @@
def resource_setup(cls):
super(SnapshotExportLocationsNegativeTest, cls).resource_setup()
# create share type
- cls.share_type = cls._create_share_type()
+ extra_specs = {
+ 'snapshot_support': True,
+ 'mount_snapshot_support': True,
+ }
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
cls.share = cls.create_share(share_type_id=cls.share_type_id,
diff --git a/manila_tempest_tests/tests/api/base.py b/manila_tempest_tests/tests/api/base.py
index 54ea78d..73ad104 100755
--- a/manila_tempest_tests/tests/api/base.py
+++ b/manila_tempest_tests/tests/api/base.py
@@ -852,26 +852,9 @@
def add_extra_specs_to_dict(extra_specs=None):
"""Add any required extra-specs to share type dictionary"""
dhss = six.text_type(CONF.share.multitenancy_enabled)
- snapshot_support = six.text_type(
- CONF.share.capability_snapshot_support)
- create_from_snapshot_support = six.text_type(
- CONF.share.capability_create_share_from_snapshot_support)
-
- extra_specs_dict = {
- "driver_handles_share_servers": dhss,
- }
-
- optional = {
- "snapshot_support": snapshot_support,
- "create_share_from_snapshot_support": create_from_snapshot_support,
- }
- # NOTE(gouthamr): In micro-versions < 2.24, snapshot_support is a
- # required extra-spec
- extra_specs_dict.update(optional)
-
+ extra_specs_dict = {"driver_handles_share_servers": dhss}
if extra_specs:
extra_specs_dict.update(extra_specs)
-
return extra_specs_dict
@classmethod
@@ -1111,12 +1094,14 @@
cls.admin_shares_v2_client = cls.os_admin.share_v2.SharesV2Client()
@classmethod
- def _create_share_type(cls, is_public=True, specs=None):
+ def _create_share_type(cls, is_public=True, specs=None,
+ cleanup_in_class=True):
name = data_utils.rand_name("unique_st_name")
extra_specs = cls.add_extra_specs_to_dict(specs)
return cls.create_share_type(
name, extra_specs=extra_specs, is_public=is_public,
- client=cls.admin_shares_v2_client)['share_type']
+ client=cls.admin_shares_v2_client,
+ cleanup_in_class=cleanup_in_class)['share_type']
@classmethod
def _create_share_group_type(cls):
@@ -1308,12 +1293,14 @@
return os
@classmethod
- def _create_share_type(cls, is_public=True, specs=None):
+ def _create_share_type(cls, is_public=True, specs=None,
+ cleanup_in_class=True):
name = data_utils.rand_name("unique_st_name")
extra_specs = cls.add_extra_specs_to_dict(specs)
return cls.create_share_type(
name, extra_specs=extra_specs, is_public=is_public,
- client=cls.admin_shares_v2_client)['share_type']
+ client=cls.admin_shares_v2_client,
+ cleanup_in_class=cleanup_in_class)['share_type']
@classmethod
def _create_share_group_type(cls):
diff --git a/manila_tempest_tests/tests/api/test_replication_snapshots.py b/manila_tempest_tests/tests/api/test_replication_snapshots.py
index 02ffe6c..f45425e 100644
--- a/manila_tempest_tests/tests/api/test_replication_snapshots.py
+++ b/manila_tempest_tests/tests/api/test_replication_snapshots.py
@@ -55,7 +55,14 @@
)
# create share type
- extra_specs = {"replication_type": cls.replication_type}
+ extra_specs = {
+ "replication_type": cls.replication_type,
+ "snapshot_support": True,
+ }
+ if CONF.share.capability_create_share_from_snapshot_support:
+ extra_specs.update({
+ "create_share_from_snapshot_support": True,
+ })
cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
cls.sn_id = None
diff --git a/manila_tempest_tests/tests/api/test_revert_to_snapshot.py b/manila_tempest_tests/tests/api/test_revert_to_snapshot.py
index 4e7d0ca..d0be9ce 100644
--- a/manila_tempest_tests/tests/api/test_revert_to_snapshot.py
+++ b/manila_tempest_tests/tests/api/test_revert_to_snapshot.py
@@ -63,7 +63,10 @@
raise cls.skipException(msg)
cls.share_type_name = data_utils.rand_name("share-type")
- extra_specs = {constants.REVERT_TO_SNAPSHOT_SUPPORT: True}
+ extra_specs = {
+ "snapshot_support": True,
+ constants.REVERT_TO_SNAPSHOT_SUPPORT: True,
+ }
cls.revert_enabled_extra_specs = cls.add_extra_specs_to_dict(
extra_specs=extra_specs)
@@ -86,6 +89,7 @@
)
extra_specs = cls.add_extra_specs_to_dict({
"replication_type": cls.replication_type,
+ "snapshot_support": True,
constants.REVERT_TO_SNAPSHOT_SUPPORT: True,
})
share_type = cls.create_share_type(
diff --git a/manila_tempest_tests/tests/api/test_revert_to_snapshot_negative.py b/manila_tempest_tests/tests/api/test_revert_to_snapshot_negative.py
index bc01f00..d04b2e3 100644
--- a/manila_tempest_tests/tests/api/test_revert_to_snapshot_negative.py
+++ b/manila_tempest_tests/tests/api/test_revert_to_snapshot_negative.py
@@ -60,7 +60,10 @@
raise cls.skipException(msg)
cls.share_type_name = data_utils.rand_name("share-type")
- extra_specs = {constants.REVERT_TO_SNAPSHOT_SUPPORT: True}
+ extra_specs = {
+ "snapshot_support": True,
+ constants.REVERT_TO_SNAPSHOT_SUPPORT: True
+ }
cls.revert_enabled_extra_specs = cls.add_extra_specs_to_dict(
extra_specs=extra_specs)
diff --git a/manila_tempest_tests/tests/api/test_rules_negative.py b/manila_tempest_tests/tests/api/test_rules_negative.py
index fd736a3..972cb97 100644
--- a/manila_tempest_tests/tests/api/test_rules_negative.py
+++ b/manila_tempest_tests/tests/api/test_rules_negative.py
@@ -48,7 +48,10 @@
cls.admin_client = cls.admin_shares_v2_client
# create share_type
- cls.share_type = cls._create_share_type()
+ extra_specs = None
+ if CONF.share.run_snapshot_tests:
+ extra_specs = {'snapshot_support': True}
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
cls.share = cls.create_share(cls.protocol,
@@ -213,7 +216,10 @@
msg = "USER rule tests for %s protocol are disabled" % cls.protocol
raise cls.skipException(msg)
# create share type
- cls.share_type = cls._create_share_type()
+ extra_specs = None
+ if CONF.share.run_snapshot_tests:
+ extra_specs = {'snapshot_support': True}
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
cls.share = cls.create_share(cls.protocol,
@@ -315,7 +321,10 @@
msg = "CERT rule tests for %s protocol are disabled" % cls.protocol
raise cls.skipException(msg)
# create share type
- cls.share_type = cls._create_share_type()
+ extra_specs = None
+ if CONF.share.run_snapshot_tests:
+ extra_specs = {'snapshot_support': True}
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
cls.share = cls.create_share(cls.protocol,
@@ -501,7 +510,10 @@
def resource_setup(cls):
super(ShareRulesNegativeTest, cls).resource_setup()
# create share type
- cls.share_type = cls._create_share_type()
+ extra_specs = None
+ if CONF.share.run_snapshot_tests:
+ extra_specs = {'snapshot_support': True}
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
cls.share = cls.create_share(share_type_id=cls.share_type_id)
diff --git a/manila_tempest_tests/tests/api/test_share_group_actions.py b/manila_tempest_tests/tests/api/test_share_group_actions.py
index 3940c29..e72181e 100644
--- a/manila_tempest_tests/tests/api/test_share_group_actions.py
+++ b/manila_tempest_tests/tests/api/test_share_group_actions.py
@@ -18,6 +18,7 @@
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
+import testtools
from testtools import testcase as tc
from manila_tempest_tests.common import constants
@@ -46,7 +47,12 @@
super(ShareGroupActionsTest, cls).resource_setup()
# Create a share type
- cls.share_type = cls._create_share_type()
+ extra_specs = {}
+ if CONF.share.capability_snapshot_support:
+ extra_specs.update({'snapshot_support': True})
+ if CONF.share.capability_create_share_from_snapshot_support:
+ extra_specs.update({'create_share_from_snapshot_support': True})
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
cls.share_group_type = cls._create_share_group_type()
@@ -89,20 +95,21 @@
])
# Create share group snapshots
- cls.sg_snap_name = data_utils.rand_name("tempest-sg-snap-name")
- cls.sg_snap_desc = data_utils.rand_name("tempest-sg-snap-desc")
+ if CONF.share.capability_snapshot_support:
+ cls.sg_snap_name = data_utils.rand_name("tempest-sg-snap-name")
+ cls.sg_snap_desc = data_utils.rand_name("tempest-sg-snap-desc")
- cls.sg_snapshot = cls.create_share_group_snapshot_wait_for_active(
- cls.share_group["id"],
- name=cls.sg_snap_name,
- description=cls.sg_snap_desc,
- )
+ cls.sg_snapshot = cls.create_share_group_snapshot_wait_for_active(
+ cls.share_group["id"],
+ name=cls.sg_snap_name,
+ description=cls.sg_snap_desc,
+ )
- cls.sg_snapshot2 = cls.create_share_group_snapshot_wait_for_active(
- cls.share_group2['id'],
- name=cls.sg_snap_name,
- description=cls.sg_snap_desc,
- )
+ cls.sg_snapshot2 = cls.create_share_group_snapshot_wait_for_active(
+ cls.share_group2['id'],
+ name=cls.sg_snap_name,
+ description=cls.sg_snap_desc,
+ )
@decorators.idempotent_id('1e359389-09a7-4235-84c9-7b5c83632fff')
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
@@ -258,6 +265,8 @@
*utils.deduplicate([constants.MIN_SHARE_GROUP_MICROVERSION,
constants.SHARE_GROUPS_GRADUATION_VERSION,
LATEST_MICROVERSION]))
+ @testtools.skipUnless(CONF.share.run_snapshot_tests,
+ "Snapshot tests are disabled.")
def test_get_share_group_snapshot(self, version):
utils.check_skip_if_microversion_not_supported(version)
@@ -286,6 +295,8 @@
@decorators.idempotent_id('67e8c099-f1c1-4972-9c51-bb7bfe1d7994')
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
+ @testtools.skipUnless(CONF.share.run_snapshot_tests,
+ "Snapshot tests are disabled.")
def test_get_share_group_snapshot_members_min(self):
sg_snapshot = self.shares_v2_client.get_share_group_snapshot(
self.sg_snapshot['id'],
@@ -315,6 +326,11 @@
*utils.deduplicate([constants.MIN_SHARE_GROUP_MICROVERSION,
constants.SHARE_GROUPS_GRADUATION_VERSION,
LATEST_MICROVERSION]))
+ @testtools.skipUnless(CONF.share.run_snapshot_tests,
+ "Snapshot tests are disabled.")
+ @testtools.skipUnless(
+ CONF.share.capability_create_share_from_snapshot_support,
+ "Tests creating shares from snapshots are disabled.")
def test_create_share_group_from_populated_share_group_snapshot(self,
version):
utils.check_skip_if_microversion_not_supported(version)
diff --git a/manila_tempest_tests/tests/api/test_share_groups.py b/manila_tempest_tests/tests/api/test_share_groups.py
index a7908ae..77f9db3 100644
--- a/manila_tempest_tests/tests/api/test_share_groups.py
+++ b/manila_tempest_tests/tests/api/test_share_groups.py
@@ -17,6 +17,7 @@
from tempest import config
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
+import testtools
from testtools import testcase as tc
from manila_tempest_tests.common import constants
@@ -43,7 +44,12 @@
def resource_setup(cls):
super(ShareGroupsTest, cls).resource_setup()
# create share type
- cls.share_type = cls._create_share_type()
+ extra_specs = {}
+ if CONF.share.capability_snapshot_support:
+ extra_specs.update({'snapshot_support': True})
+ if CONF.share.capability_create_share_from_snapshot_support:
+ extra_specs.update({'create_share_from_snapshot_support': True})
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share group type
@@ -97,6 +103,8 @@
@decorators.idempotent_id('cf7984af-1e1d-4eaf-bf9a-d8ddf5cebd01')
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
+ @testtools.skipUnless(CONF.share.run_snapshot_tests,
+ "Snapshot tests are disabled.")
def test_create_delete_empty_share_group_snapshot_min(self):
# Create base share group
share_group = self.create_share_group(
@@ -138,6 +146,8 @@
@decorators.idempotent_id('727d9c69-4c3b-4375-a91b-8b3efd349976')
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
+ @testtools.skipUnless(CONF.share.run_snapshot_tests,
+ "Snapshot tests are disabled.")
def test_create_share_group_from_empty_share_group_snapshot_min(self):
# Create base share group
share_group = self.create_share_group(
diff --git a/manila_tempest_tests/tests/api/test_share_groups_negative.py b/manila_tempest_tests/tests/api/test_share_groups_negative.py
index b92cc0b..2811637 100644
--- a/manila_tempest_tests/tests/api/test_share_groups_negative.py
+++ b/manila_tempest_tests/tests/api/test_share_groups_negative.py
@@ -17,6 +17,7 @@
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
+import testtools
from testtools import testcase as tc
from manila_tempest_tests.common import constants
@@ -42,7 +43,10 @@
def resource_setup(cls):
super(ShareGroupsNegativeTest, cls).resource_setup()
# Create a share type
- cls.share_type = cls._create_share_type()
+ extra_specs = {}
+ if CONF.share.capability_snapshot_support:
+ extra_specs.update({'snapshot_support': True})
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# Create a share group type
@@ -69,15 +73,16 @@
share_type_id=cls.share_type_id,
share_group_id=cls.share_group['id'],
)
- # Create a share group snapshot of the share group
- cls.sg_snap_name = data_utils.rand_name("tempest-sg-snap-name")
- cls.sg_snap_desc = data_utils.rand_name(
- "tempest-group-snap-description")
- cls.sg_snapshot = cls.create_share_group_snapshot_wait_for_active(
- cls.share_group['id'],
- name=cls.sg_snap_name,
- description=cls.sg_snap_desc
- )
+ if CONF.share.run_snapshot_tests:
+ # Create a share group snapshot of the share group
+ cls.sg_snap_name = data_utils.rand_name("tempest-sg-snap-name")
+ cls.sg_snap_desc = data_utils.rand_name(
+ "tempest-group-snap-description")
+ cls.sg_snapshot = cls.create_share_group_snapshot_wait_for_active(
+ cls.share_group['id'],
+ name=cls.sg_snap_name,
+ description=cls.sg_snap_desc
+ )
@decorators.idempotent_id('7ce3fb52-1bec-42b1-9b4f-671c8465764b')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
@@ -206,6 +211,8 @@
@decorators.idempotent_id('18fe2dee-4a07-484e-8f0f-bbc238500dc3')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
+ @testtools.skipUnless(CONF.share.run_snapshot_tests,
+ "Snapshot tests are disabled.")
def test_delete_sg_in_use_by_sg_snapshot_min(self):
self.assertRaises(
lib_exc.Conflict,
@@ -215,6 +222,8 @@
@decorators.idempotent_id('d2a58f10-cc86-498d-a5e0-1468d4345852')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
+ @testtools.skipUnless(CONF.share.run_snapshot_tests,
+ "Snapshot tests are disabled.")
def test_delete_share_in_use_by_sg_snapshot_min(self):
params = {'share_group_id': self.share['share_group_id']}
self.assertRaises(
diff --git a/manila_tempest_tests/tests/api/test_shares.py b/manila_tempest_tests/tests/api/test_shares.py
index 8802f4c..c6020a4 100644
--- a/manila_tempest_tests/tests/api/test_shares.py
+++ b/manila_tempest_tests/tests/api/test_shares.py
@@ -42,9 +42,6 @@
# create share_type
cls.share_type = cls._create_share_type()
cls.share_type_id = cls.share_type['id']
- # create share
- cls.share = cls.create_share(cls.protocol,
- share_type_id=cls.share_type_id)
@decorators.idempotent_id('21ad41fb-04cf-493c-bc2f-66c80220898b')
@tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)
@@ -128,9 +125,15 @@
@testtools.skipUnless(CONF.share.run_snapshot_tests,
"Snapshot tests are disabled.")
def test_create_delete_snapshot(self):
+ extra_specs = {'snapshot_support': True}
+ share_type = self._create_share_type(specs=extra_specs,
+ cleanup_in_class=False)
+ share = self.create_share(self.protocol,
+ share_type_id=share_type['id'],
+ cleanup_in_class=False)
# create snapshot
- snap = self.create_snapshot_wait_for_active(self.share["id"])
+ snap = self.create_snapshot_wait_for_active(share["id"])
detailed_elements = {'name', 'id', 'description',
'created_at', 'share_proto', 'size', 'share_size',
@@ -167,14 +170,23 @@
"Create share from snapshot tests are disabled.")
def test_create_share_from_snapshot(self):
# If multitenant driver used, share_network will be provided by default
+ extra_specs = {
+ 'snapshot_support': True,
+ 'create_share_from_snapshot_support': True,
+ }
+ share_type = self._create_share_type(specs=extra_specs,
+ cleanup_in_class=False)
+ share = self.create_share(self.protocol,
+ share_type_id=share_type['id'],
+ cleanup_in_class=False)
# create snapshot
- snap = self.create_snapshot_wait_for_active(
- self.share["id"], cleanup_in_class=False)
+ snap = self.create_snapshot_wait_for_active(share["id"],
+ cleanup_in_class=False)
# create share from snapshot
s2 = self.create_share(self.protocol,
- share_type_id=self.share_type_id,
+ share_type_id=share_type['id'],
snapshot_id=snap["id"],
cleanup_in_class=False)
@@ -204,16 +216,25 @@
# when creating share from snapshot using a driver that supports
# multi-tenancy.
+ extra_specs = {
+ 'snapshot_support': True,
+ 'create_share_from_snapshot_support': True,
+ }
+ share_type = self._create_share_type(specs=extra_specs,
+ cleanup_in_class=False)
+ share = self.create_share(self.protocol,
+ share_type_id=share_type['id'],
+ cleanup_in_class=False)
+
# get parent share
- parent = self.shares_client.get_share(self.share["id"])
+ parent = self.shares_client.get_share(share["id"])
# create snapshot
- snap = self.create_snapshot_wait_for_active(
- self.share["id"], cleanup_in_class=False)
+ snap = self.create_snapshot_wait_for_active(share["id"],
+ cleanup_in_class=False)
# create share from snapshot
child = self.create_share(self.protocol,
- share_type_id=self.share_type_id,
snapshot_id=snap["id"],
cleanup_in_class=False)
@@ -226,7 +247,7 @@
# verify share, created from snapshot
get = self.shares_client.get_share(child["id"])
keys = {
- "share": self.share["id"],
+ "share": share["id"],
"actual_sn": get["share_network_id"],
"expected_sn": parent["share_network_id"],
}
diff --git a/manila_tempest_tests/tests/api/test_shares_actions.py b/manila_tempest_tests/tests/api/test_shares_actions.py
index 123e053..6c2bfaa 100644
--- a/manila_tempest_tests/tests/api/test_shares_actions.py
+++ b/manila_tempest_tests/tests/api/test_shares_actions.py
@@ -41,7 +41,12 @@
cls.shares = []
# create share_type
- cls.share_type = cls._create_share_type()
+ extra_specs = {}
+ if CONF.share.capability_snapshot_support:
+ extra_specs.update({'snapshot_support': True})
+ if CONF.share.capability_create_share_from_snapshot_support:
+ extra_specs.update({'create_share_from_snapshot_support': True})
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
@@ -681,7 +686,10 @@
super(SharesRenameTest, cls).resource_setup()
# create share_type
- cls.share_type = cls._create_share_type()
+ extra_specs = {}
+ if CONF.share.capability_snapshot_support:
+ extra_specs.update({'snapshot_support': True})
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
diff --git a/manila_tempest_tests/tests/api/test_shares_actions_negative.py b/manila_tempest_tests/tests/api/test_shares_actions_negative.py
index dd94900..863654f 100644
--- a/manila_tempest_tests/tests/api/test_shares_actions_negative.py
+++ b/manila_tempest_tests/tests/api/test_shares_actions_negative.py
@@ -37,7 +37,10 @@
cls.share_name = data_utils.rand_name("tempest-share-name")
cls.share_desc = data_utils.rand_name("tempest-share-description")
# create share_type
- cls.share_type = cls._create_share_type()
+ extra_specs = {}
+ if CONF.share.capability_snapshot_support:
+ extra_specs.update({'snapshot_support': True})
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
cls.share = cls.create_share(
diff --git a/manila_tempest_tests/tests/api/test_shares_negative.py b/manila_tempest_tests/tests/api/test_shares_negative.py
index 20c42fc..1793c1c 100644
--- a/manila_tempest_tests/tests/api/test_shares_negative.py
+++ b/manila_tempest_tests/tests/api/test_shares_negative.py
@@ -32,7 +32,12 @@
def resource_setup(cls):
super(SharesNegativeTest, cls).resource_setup()
# create share_type
- cls.share_type = cls._create_share_type()
+ extra_specs = {}
+ if CONF.share.capability_snapshot_support:
+ extra_specs.update({'snapshot_support': True})
+ if CONF.share.capability_create_share_from_snapshot_support:
+ extra_specs.update({'create_share_from_snapshot_support': True})
+ cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
@decorators.idempotent_id('b9bb8dee-0c7c-4e51-909c-028335b1a6a0')
@@ -61,7 +66,6 @@
"Create share from snapshot tests are disabled.")
def test_create_share_from_snap_with_less_size(self):
# requires minimum 5Gb available space
-
skip_msg = "Check disc space for this test"
try: # create share
diff --git a/manila_tempest_tests/tests/api/test_snapshot_rules.py b/manila_tempest_tests/tests/api/test_snapshot_rules.py
index 099ec75..d9588ec 100644
--- a/manila_tempest_tests/tests/api/test_snapshot_rules.py
+++ b/manila_tempest_tests/tests/api/test_snapshot_rules.py
@@ -35,7 +35,10 @@
def resource_setup(cls):
super(BaseShareSnapshotRulesTest, cls).resource_setup()
# create share_type
- extra_specs = {'mount_snapshot_support': 'True'}
+ extra_specs = {
+ 'snapshot_support': True,
+ 'mount_snapshot_support': True,
+ }
cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
diff --git a/manila_tempest_tests/tests/api/test_snapshot_rules_negative.py b/manila_tempest_tests/tests/api/test_snapshot_rules_negative.py
index c8f2ce6..bf1ef1a 100644
--- a/manila_tempest_tests/tests/api/test_snapshot_rules_negative.py
+++ b/manila_tempest_tests/tests/api/test_snapshot_rules_negative.py
@@ -50,7 +50,10 @@
def resource_setup(cls):
super(SnapshotIpRulesForNFSNegativeTest, cls).resource_setup()
# create share type
- extra_specs = {'mount_snapshot_support': 'True'}
+ extra_specs = {
+ 'snapshot_support': True,
+ 'mount_snapshot_support': True,
+ }
cls.share_type = cls._create_share_type(specs=extra_specs)
cls.share_type_id = cls.share_type['id']
# create share
diff --git a/manila_tempest_tests/tests/scenario/manager_share.py b/manila_tempest_tests/tests/scenario/manager_share.py
index 0f55d6e..52dc7f0 100644
--- a/manila_tempest_tests/tests/scenario/manager_share.py
+++ b/manila_tempest_tests/tests/scenario/manager_share.py
@@ -268,12 +268,13 @@
def migration_complete(self, share_id, dest_host):
return self._migration_complete(share_id, dest_host)
- def create_share(self, **kwargs):
+ def create_share(self, extra_specs=None, **kwargs):
kwargs.update({
'share_protocol': self.protocol,
})
if not ('share_type_id' in kwargs or 'snapshot_id' in kwargs):
- default_share_type_id = self.get_share_type()['id']
+ default_share_type_id = self.get_share_type(
+ extra_specs=extra_specs)['id']
kwargs.update({'share_type_id': default_share_type_id})
if CONF.share.multitenancy_enabled:
kwargs.update({'share_network_id': self.share_network['id']})
@@ -453,15 +454,17 @@
return self.os_primary.servers_client.show_server(
instance_id)["server"]
- def get_share_type(self):
+ def get_share_type(self, extra_specs=None):
if CONF.share.default_share_type_name:
return self.shares_client.get_default_share_type()['share_type']
+ extra_specs_dict = {
+ 'driver_handles_share_servers': CONF.share.multitenancy_enabled
+ }
+ if extra_specs:
+ extra_specs_dict.update(extra_specs)
return self._create_share_type(
data_utils.rand_name("share_type"),
- extra_specs={
- 'snapshot_support': CONF.share.capability_snapshot_support,
- 'driver_handles_share_servers': CONF.share.multitenancy_enabled
- },)['share_type']
+ extra_specs=extra_specs_dict)['share_type']
def get_share_export_locations(self, share):
if utils.is_microversion_lt(CONF.share.max_api_microversion, "2.9"):
diff --git a/manila_tempest_tests/tests/scenario/test_share_basic_ops.py b/manila_tempest_tests/tests/scenario/test_share_basic_ops.py
index edf4779..e9e9a14 100644
--- a/manila_tempest_tests/tests/scenario/test_share_basic_ops.py
+++ b/manila_tempest_tests/tests/scenario/test_share_basic_ops.py
@@ -252,7 +252,8 @@
instance = self.boot_instance(wait_until="BUILD")
# 2 - Create share S1, ok, created
- parent_share = self.create_share()
+ extra_specs = {'snapshot_support': True}
+ parent_share = self.create_share(extra_specs=extra_specs)
parent_share_export_location = self.get_user_export_locations(
parent_share)[0]
@@ -350,7 +351,8 @@
instance = self.boot_instance(wait_until="BUILD")
# 2 - Create share S1, ok, created
- parent_share = self.create_share()
+ extra_specs = {'snapshot_support': True}
+ parent_share = self.create_share(extra_specs=extra_specs)
user_export_location = self.get_user_export_locations(parent_share)[0]
# Create client User Virtual Machine