Skip to content

Commit

Permalink
doc: nit fixes for nfs doc
Browse files Browse the repository at this point in the history
Signed-off-by: Avan Thakkar <[email protected]>

Fixes some doc lint and also fixed qa tests for having both 3 & 4 protocols
by default in expot config.
  • Loading branch information
avanthakkar committed Sep 16, 2024
1 parent b8f3db5 commit b895e59
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 17 deletions.
2 changes: 1 addition & 1 deletion PendingReleaseNotes
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ CephFS: Disallow delegating preallocated inode ranges to clients. Config
* RBD: The output of `rbd snap ls --all` command now includes the original
type for trashed snapshots.

* NFS: The export create/apply of CephFS based exports will now have a additional parameter `cmount_path` under FSAL block,
* NFS: The export create/apply of CephFS based exports will now have a additional parameter `cmount_path` under the FSAL block,
which specifies the path within the CephFS to mount this export on. If this and the other
`EXPORT { FSAL {} }` options are the same between multiple exports, those exports will share a single CephFS client. If not specified, the default is `/`.

Expand Down
10 changes: 6 additions & 4 deletions doc/mgr/nfs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -318,10 +318,11 @@ values may be separated by a comma (example: ``--sectype krb5p,krb5i``). The
server will negotatiate a supported security type with the client preferring
the supplied methods left-to-right.

``<cmount_path>`` specifies the path within the ceph filesystem to mount this export on. It is
``<cmount_path>`` specifies the path within the CephFS to mount this export on. It is
allowed to be any complete path hierarchy between ``/`` and the ``EXPORT {path}``. (i.e. if ``EXPORT { Path }`` parameter is ``/foo/bar`` then cmount_path could be ``/``, ``/foo`` or ``/foo/bar``).
!! If this and the other ``EXPORT { FSAL {} }`` options are the same between multiple exports, those exports will share a single cephfs client.
If not specified, the default is ``/``.

.. note:: If this and the other ``EXPORT { FSAL {} }`` options are the same between multiple exports, those exports will share a single CephFS client.
If not specified, the default is ``/``.

.. note:: Specifying values for sectype that require Kerberos will only function on servers
that are configured to support Kerberos. Setting up NFS-Ganesha to support Kerberos
Expand Down Expand Up @@ -498,7 +499,8 @@ provided JSON should fully describe the new state of the export (just
as when creating a new export), with the exception of the
authentication credentials, which will be carried over from the
previous state of the export where possible.
The ``user_id`` in the ``fsal`` block should not be modified or mentioned in the JSON file as it is auto-generated for CephFS exports.

!! NOTE: The ``user_id`` in the ``fsal`` block should not be modified or mentioned in the JSON file as it is auto-generated for CephFS exports.
It's auto-generated in the format ``nfs.<cluster_id>.<fs_name>.<hash_id>``.

::
Expand Down
25 changes: 13 additions & 12 deletions qa/tasks/cephfs/test_nfs.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,12 +235,12 @@ def _create_default_export(self):
self._test_create_cluster()
self._create_export(export_id='1', create_fs=True)

def _delete_export(self, pseduo_path=None):
def _delete_export(self, pseduo_path=None, check_in=False, user_id=None):
'''
Delete an export.
'''
self._nfs_cmd('export', 'rm', self.cluster_id, pseduo_path if pseduo_path else self.pseudo_path)
self._check_auth_ls(self.fs_name)
self._check_auth_ls(self.fs_name, check_in, user_id)

def _test_list_export(self):
'''
Expand Down Expand Up @@ -1222,8 +1222,10 @@ def test_nfs_export_creation_without_cmount_path(self):
"""
Test that ensure cmount_path is present in FSAL block
"""
self._create_cluster_with_fs(self.fs_name)

pseudo_path = '/test_without_cmount'
self._create_export(export_id='1234',
self._create_export(export_id='1',
extra_cmd=['--pseudo-path', pseudo_path])
nfs_output = self._get_export(pseudo_path)
self.assertIn('cmount_path', nfs_output['fsal'])
Expand All @@ -1234,6 +1236,8 @@ def test_nfs_exports_with_same_and_diff_user_id(self):
"""
Test that exports with same FSAL share same user_id
"""
self._create_cluster_with_fs(self.fs_name)

pseudo_path_1 = '/test1'
pseudo_path_2 = '/test2'
pseudo_path_3 = '/test3'
Expand All @@ -1245,10 +1249,10 @@ def test_nfs_exports_with_same_and_diff_user_id(self):
fs_path_1 = self._cmd('fs', 'subvolume', 'getpath', self.fs_name, 'sub_vol_1').strip()
fs_path_2 = self._cmd('fs', 'subvolume', 'getpath', self.fs_name, 'sub_vol_2').strip()
# Both exports should have same user_id(since cmount_path=/ & fs_name is same)
self._create_export(export_id='21',
self._create_export(export_id='1',
extra_cmd=['--pseudo-path', pseudo_path_1,
'--path', fs_path_1])
self._create_export(export_id='22',
self._create_export(export_id='2',
extra_cmd=['--pseudo-path', pseudo_path_2,
'--path', fs_path_2])

Expand All @@ -1259,7 +1263,7 @@ def test_nfs_exports_with_same_and_diff_user_id(self):
self.assertEqual(nfs_output_1['fsal']['user_id'], 'nfs.test.nfs-cephfs.3746f603')

cmount_path = '/volumes'
self._create_export(export_id='23',
self._create_export(export_id='3',
extra_cmd=['--pseudo-path', pseudo_path_3,
'--path', fs_path_1,
'--cmount-path', cmount_path])
Expand All @@ -1268,13 +1272,10 @@ def test_nfs_exports_with_same_and_diff_user_id(self):
self.assertNotEqual(nfs_output_3['fsal']['user_id'], nfs_output_1['fsal']['user_id'])
self.assertEqual(nfs_output_3['fsal']['user_id'], 'nfs.test.nfs-cephfs.32cd8545')

self._delete_export(pseudo_path_1)
# Deleting export with same user_id should not delete the user_id
self._check_auth_ls(self.fs_name, True, nfs_output_2['fsal']['user_id'])
self._delete_export(pseudo_path_2)
self._delete_export(pseudo_path_1, True, nfs_output_1['fsal']['user_id'])
# Deleting export 22 should delete the user_id since it's only export left with that user_id
self._check_auth_ls(self.fs_name, False, nfs_output_2['fsal']['user_id'])
self._delete_export(pseudo_path_2, False, nfs_output_2['fsal']['user_id'])

self._delete_export(pseudo_path_3)
# Deleting export 23 should delete the user_id since it's only export with that user_id
self._check_auth_ls(self.fs_name, False, nfs_output_3['fsal']['user_id'])
self._delete_export(pseudo_path_3, False, nfs_output_3['fsal']['user_id'])

0 comments on commit b895e59

Please sign in to comment.