]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/volumes/nfs: get export in a nfs cluster
authorRamana Raja <rraja@redhat.com>
Fri, 5 Jun 2020 10:38:14 +0000 (16:08 +0530)
committerVarsha Rao <varao@redhat.com>
Wed, 8 Jul 2020 05:36:35 +0000 (07:36 +0200)
Fixes: https://tracker.ceph.com/issues/45741
Signed-off-by: Ramana Raja <rraja@redhat.com>
(cherry picked from commit 7dcefb158d2999715856ffa12cce9b92e6a12b23)

src/pybind/mgr/volumes/fs/nfs.py
src/pybind/mgr/volumes/module.py

index 8e97302870318391db54e1308b1692e4f1205303..f32b30a54520048ca5e15a07c80dc686bbdb3984 100644 (file)
@@ -560,6 +560,19 @@ class FSExport(object):
 
         return 0, json.dumps(result, indent=2), ''
 
+    def get_export(self, cluster_id, pseudo_path):
+        if not f"ganesha-{cluster_id}" in available_clusters(self.mgr):
+            return -errno.ENOENT, "", f"NFS cluster '{cluster_id}' not found"
+        export_dict = {}
+        for export in self.exports[cluster_id]:
+            if export.pseudo == pseudo_path:
+                export_dict = export.to_dict()
+                break
+        if not export_dict:
+            return (-errno.ENOENT, "",
+                    f"export with pseudo path '{pseudo_path}' not found in NFS cluster '{cluster_id}'")
+        return 0, json.dumps(export_dict, indent=2), ''
+
     def make_rados_url(self, obj):
         if self.rados_namespace:
             return "rados://{}/{}/{}".format(self.rados_pool, self.rados_namespace, obj)
index 2c106bda542454045ddeea1b16ee4c1c94036b04..93ad6e1423b9fd27e5ba7aa46ecf1f3117d0902b 100644 (file)
@@ -277,6 +277,13 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
             'desc': "List exports of a NFS cluster",
             'perm': 'r'
         },
+        {
+            'cmd': 'nfs export get '
+                   'name=clusterid,type=CephString '
+                   'name=binding,type=CephString ',
+            'desc': "Fetch a export of a NFS cluster given the pseudo path/binding",
+            'perm': 'r'
+        },
         {
             'cmd': 'nfs cluster create '
                    'name=type,type=CephString '
@@ -498,6 +505,9 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
     def _cmd_nfs_export_ls(self, inbuf, cmd):
         return self.fs_export.list_exports(cluster_id=cmd['clusterid'], detailed=cmd.get('detailed', False))
 
+    def _cmd_nfs_export_get(self, inbuf, cmd):
+        return self.fs_export.get_export(cluster_id=cmd['clusterid'], pseudo_path=cmd['binding'])
+
     def _cmd_nfs_cluster_create(self, inbuf, cmd):
         return self.nfs.create_nfs_cluster(cluster_id=cmd['clusterid'], export_type=cmd['type'],
                                            placement=cmd.get('placement', None))