Merge "Fix setting of "snapshot_support" extra spec for tempest" into stable/liberty
diff --git a/manila_tempest_tests/config.py b/manila_tempest_tests/config.py
index 616cb19..8873ef6 100644
--- a/manila_tempest_tests/config.py
+++ b/manila_tempest_tests/config.py
@@ -79,9 +79,18 @@
     cfg.ListOpt("enable_ro_access_level_for_protocols",
                 default=["nfs", ],
                 help="List of protocols to run tests with ro access level."),
-    cfg.StrOpt("storage_protocol",
+
+    # Capabilities
+    cfg.StrOpt("capability_storage_protocol",
+               deprecated_name="storage_protocol",
                default="NFS_CIFS",
                help="Backend protocol to target when creating volume types."),
+    cfg.BoolOpt("capability_snapshot_support",
+                help="Defines extra spec that satisfies specific back end "
+                     "capability called 'snapshot_support' and will be used "
+                     "for setting up custom share type. Defaults to value of "
+                     "other config option 'run_snapshot_tests'."),
+
     cfg.StrOpt("share_network_id",
                default="",
                help="Some backend drivers requires share network "
@@ -124,6 +133,8 @@
                 help="Defines whether to run manage/unmanage tests or not. "
                      "These test may leave orphaned resources, so be careful "
                      "enabling this opt."),
+
+    # Switching ON/OFF test suites filtered by features
     cfg.BoolOpt("run_extend_tests",
                 default=True,
                 help="Defines whether to run share extend tests or not. "
@@ -147,6 +158,7 @@
     cfg.BoolOpt("run_migration_tests",
                 default=False,
                 help="Enable or disable migration tests."),
+
     cfg.StrOpt("image_with_share_tools",
                default="manila-service-image",
                help="Image name for vm booting with nfs/smb clients tool."),
diff --git a/manila_tempest_tests/plugin.py b/manila_tempest_tests/plugin.py
index 3a8550b..4880940 100644
--- a/manila_tempest_tests/plugin.py
+++ b/manila_tempest_tests/plugin.py
@@ -37,5 +37,14 @@
         config.register_opt_group(conf, config_share.share_group,
                                   config_share.ShareGroup)
 
+        # NOTE(vponomaryov): set opt 'capability_snapshot_support' by
+        # default equal to opt 'run_snapshot_tests'.
+        if conf.share.capability_snapshot_support is None:
+            conf.set_default(
+                "capability_snapshot_support",
+                conf.share.run_snapshot_tests,
+                group="share",
+            )
+
     def get_opt_lists(self):
         return [(config_share.share_group.name, config_share.ShareGroup)]
diff --git a/manila_tempest_tests/tests/api/admin/test_share_manage.py b/manila_tempest_tests/tests/api/admin/test_share_manage.py
index 4100b2e..bb04dc7 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_manage.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_manage.py
@@ -13,6 +13,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import six
 from tempest import config  # noqa
 from tempest import test  # noqa
 from tempest_lib.common.utils import data_utils  # noqa
@@ -48,12 +49,16 @@
         cls.st_name = data_utils.rand_name("manage-st-name")
         cls.st_name_invalid = data_utils.rand_name("manage-st-name-invalid")
         cls.extra_specs = {
-            'storage_protocol': CONF.share.storage_protocol,
-            'driver_handles_share_servers': False
+            'storage_protocol': CONF.share.capability_storage_protocol,
+            'driver_handles_share_servers': False,
+            'snapshot_support': six.text_type(
+                CONF.share.capability_snapshot_support),
         }
         cls.extra_specs_invalid = {
-            'storage_protocol': CONF.share.storage_protocol,
-            'driver_handles_share_servers': True
+            'storage_protocol': CONF.share.capability_storage_protocol,
+            'driver_handles_share_servers': True,
+            'snapshot_support': six.text_type(
+                CONF.share.capability_snapshot_support),
         }
 
         cls.st = cls.create_share_type(
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 1f4d6a0..ceed68b 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_types.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_types.py
@@ -93,7 +93,7 @@
         share_name = data_utils.rand_name("share")
         shr_type_name = data_utils.rand_name("share-type")
         extra_specs = self.add_required_extra_specs_to_dict({
-            "storage_protocol": CONF.share.storage_protocol,
+            "storage_protocol": CONF.share.capability_storage_protocol,
         })
 
         # Create share type
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 0ce3d68..5cc41f5 100644
--- a/manila_tempest_tests/tests/api/admin/test_shares_actions.py
+++ b/manila_tempest_tests/tests/api/admin/test_shares_actions.py
@@ -35,7 +35,7 @@
         # create share type for share filtering purposes
         cls.st_name = data_utils.rand_name("tempest-st-name")
         cls.extra_specs = cls.add_required_extra_specs_to_dict(
-            {'storage_protocol': CONF.share.storage_protocol})
+            {'storage_protocol': CONF.share.capability_storage_protocol})
         cls.st = cls.create_share_type(
             name=cls.st_name,
             cleanup_in_class=True,
@@ -163,7 +163,9 @@
     @test.attr(type=["gate", ])
     def test_list_shares_with_detail_filter_by_extra_specs(self):
         filters = {
-            "extra_specs": {'storage_protocol': CONF.share.storage_protocol}
+            "extra_specs": {
+                "storage_protocol": CONF.share.capability_storage_protocol,
+            }
         }
         share_type_list = self.shares_client.list_share_types()["share_types"]
 
diff --git a/manila_tempest_tests/tests/api/base.py b/manila_tempest_tests/tests/api/base.py
index 825b6e0..3c422b8 100644
--- a/manila_tempest_tests/tests/api/base.py
+++ b/manila_tempest_tests/tests/api/base.py
@@ -520,10 +520,12 @@
 
     @staticmethod
     def add_required_extra_specs_to_dict(extra_specs=None):
-        value = six.text_type(CONF.share.multitenancy_enabled)
+        dhss = six.text_type(CONF.share.multitenancy_enabled)
+        snapshot_support = six.text_type(
+            CONF.share.capability_snapshot_support)
         required = {
-            "driver_handles_share_servers": value,
-            "snapshot_support": 'True',
+            "driver_handles_share_servers": dhss,
+            "snapshot_support": snapshot_support,
         }
         if extra_specs:
             required.update(extra_specs)