From 2a6c8d71c97d1d70d3fd3eb7ba3e43a2f92e9a5f Mon Sep 17 00:00:00 2001 From: Valeriy Ponomaryov Date: Wed, 23 Sep 2015 13:54:00 +0300 Subject: [PATCH] Fix setting of "snapshot_support" extra spec for tempest Tempest test module "test_shares_actions.py" uses custom share_type, but do not allow to redefine extra spec "snapshot_support". And fails for drivers that do not have snapshot support and report such capability as "False". Changes: - Add new config option called "capability_snapshot_support" that will be used for each share type created in Tempest by default. - Make it default to existing config option "run_snapshot_tests" as they will be equal in most cases. But separate their logic, as we may want just to disable snapshot tests running tempest locally and testing some other feature having snapshot support in back end. - Rename existing config option "storage_protocol" to "capability_storage_protocol" for consistency with new option. And keep old name as "deprecated". Change-Id: I9ba0a9b10ffc3f0fda6094a3f5cad26a2e8a447f Closes-Bug: #1498858 (cherry picked from commit 29f2695eb9c615d258344bbc2a835e98940c6290) --- manila_tempest_tests/config.py | 14 +++++++++++++- manila_tempest_tests/plugin.py | 9 +++++++++ .../tests/api/admin/test_share_manage.py | 13 +++++++++---- .../tests/api/admin/test_share_types.py | 2 +- .../tests/api/admin/test_shares_actions.py | 6 ++++-- manila_tempest_tests/tests/api/base.py | 8 +++++--- 6 files changed, 41 insertions(+), 11 deletions(-) diff --git a/manila_tempest_tests/config.py b/manila_tempest_tests/config.py index 616cb19ecf..8873ef6add 100644 --- a/manila_tempest_tests/config.py +++ b/manila_tempest_tests/config.py @@ -79,9 +79,18 @@ ShareGroup = [ 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 @@ ShareGroup = [ 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 @@ ShareGroup = [ 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 3a8550b6de..4880940b40 100644 --- a/manila_tempest_tests/plugin.py +++ b/manila_tempest_tests/plugin.py @@ -37,5 +37,14 @@ class ManilaTempestPlugin(plugins.TempestPlugin): 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 4100b2e486..bb04dc7cfc 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 @@ class ManageNFSShareTest(base.BaseSharesAdminTest): 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 1f4d6a089d..ceed68b501 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 @@ class ShareTypesAdminTest(base.BaseSharesAdminTest): 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 0ce3d68432..5cc41f5c35 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 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest): # 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 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest): @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 825b6e0fa3..3c422b81b2 100644 --- a/manila_tempest_tests/tests/api/base.py +++ b/manila_tempest_tests/tests/api/base.py @@ -520,10 +520,12 @@ class BaseSharesTest(test.BaseTestCase): @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)