diff --git a/manila_tempest_tests/config.py b/manila_tempest_tests/config.py index 03dfafbb..decf2ac4 100644 --- a/manila_tempest_tests/config.py +++ b/manila_tempest_tests/config.py @@ -108,6 +108,12 @@ ShareGroup = [ cfg.ListOpt("enable_ro_access_level_for_protocols", default=["nfs", ], help="List of protocols to run tests with ro access level."), + cfg.ListOpt("nfs_versions", + default=["4", ], + help="Specifies the NFS protocol version to use when mounting " + "an NFS share. Set to '3' for NFSv3, and '4' or '4.1' " + "for NFSv4. Leave it blank to use the default version."), + # Capabilities cfg.StrOpt("capability_storage_protocol", diff --git a/manila_tempest_tests/tests/scenario/manager_share.py b/manila_tempest_tests/tests/scenario/manager_share.py index 3e06323b..49fa20eb 100644 --- a/manila_tempest_tests/tests/scenario/manager_share.py +++ b/manila_tempest_tests/tests/scenario/manager_share.py @@ -752,8 +752,11 @@ class BaseShareScenarioNFSTest(ShareScenarioTest): self.validate_ping_to_export_location(location, ssh_client) target_dir = target_dir or "/mnt" + nfs_version = getattr(self, 'nfs_version', None) + version_option = f"-o vers={nfs_version}" if nfs_version else "" ssh_client.exec_command( - "sudo mount -vt nfs \"%s\" %s" % (location, target_dir) + "sudo mount -vt nfs %s \"%s\" %s" % ( + version_option, location, target_dir) ) 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 d8329744..fbcc87f9 100644 --- a/manila_tempest_tests/tests/scenario/test_share_basic_ops.py +++ b/manila_tempest_tests/tests/scenario/test_share_basic_ops.py @@ -417,9 +417,16 @@ class ShareBasicOpsBase(manager.ShareScenarioTest): "sudo touch %s/file3" % snapshot_dir) +@ddt.ddt class TestShareBasicOpsNFS(manager.BaseShareScenarioNFSTest, ShareBasicOpsBase): - pass + + @decorators.idempotent_id('4bad2073-a19b-4851-8cbe-75b20ade5cdb') + @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND) + @ddt.data(*utils.deduplicate(CONF.share.nfs_versions)) + def test_mount_share_one_vm(self, nfs_version): + self.nfs_version = nfs_version + super(TestShareBasicOpsNFS, self).test_mount_share_one_vm() class TestShareBasicOpsCIFS(manager.BaseShareScenarioCIFSTest, diff --git a/releasenotes/notes/nfs-versions-6886a2dd1bab094f.yaml b/releasenotes/notes/nfs-versions-6886a2dd1bab094f.yaml new file mode 100644 index 00000000..b18d1973 --- /dev/null +++ b/releasenotes/notes/nfs-versions-6886a2dd1bab094f.yaml @@ -0,0 +1,8 @@ +--- +upgrade: + - | + A new configuration option, nfs_version, has been added to control + the NFS protocol version used for mounting NFS shares during testing. + This option allows users to specify which version of NFS should be used, + supporting environments where compatibility with specific versions is + required.