]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/volumes/nfs: Pass cluster_id directly to NFSCluster {create, update, delete}...
authorVarsha Rao <varao@redhat.com>
Mon, 27 Apr 2020 11:30:03 +0000 (17:00 +0530)
committerVarsha Rao <varao@redhat.com>
Wed, 8 Jul 2020 05:36:34 +0000 (07:36 +0200)
Signed-off-by: Varsha Rao <varao@redhat.com>
(cherry picked from commit fff59e686aeae615935fe1ee8ad84352aa6757f3)

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

index 12a802d2a966eb5c981303fdf1b24c812ba4184a..b3319e151404065287e001155ab5c75c80932678 100644 (file)
@@ -322,10 +322,9 @@ class FSExport(object):
         return "rados://{}/{}".format(self.rados_pool, obj)
 
 class NFSCluster:
-    def __init__(self, mgr, cluster_id):
-        self.cluster_id = "ganesha-%s" % cluster_id
+    def __init__(self, mgr):
         self.pool_name = 'nfs-ganesha'
-        self.pool_ns = cluster_id
+        self.pool_ns = ''
         self.mgr = mgr
 
     def create_empty_rados_obj(self):
@@ -349,6 +348,12 @@ class NFSCluster:
             log.exception(str(e))
             return True
 
+    def _set_cluster_id(self, cluster_id):
+        self.cluster_id = "ganesha-%s" % cluster_id
+
+    def _set_pool_namespace(self, cluster_id):
+        self.pool_ns = cluster_id
+
     def _call_orch_apply_nfs(self, placement):
         spec = NFSServiceSpec(service_type='nfs', service_id=self.cluster_id,
                               pool=self.pool_name, namespace=self.pool_ns,
@@ -360,12 +365,11 @@ class NFSCluster:
         except Exception as e:
             log.exception("Failed to create NFS daemons:{}".format(e))
 
-    def create_nfs_cluster(self, export_type, placement):
+    def create_nfs_cluster(self, export_type, cluster_id, placement):
         if export_type != 'cephfs':
             return -errno.EINVAL,"", f"Invalid export type: {export_type}"
 
         pool_list = [p['pool_name'] for p in self.mgr.get_osdmap().dump().get('pools', [])]
-        client = 'client.%s' % self.cluster_id
 
         if self.pool_name not in pool_list:
             r, out, err = create_pool(self.mgr, self.pool_name)
@@ -379,6 +383,8 @@ class NFSCluster:
             if r != 0:
                 return r, out, err
 
+        self._set_pool_namespace(cluster_id)
+        self._set_cluster_id(cluster_id)
         self.create_empty_rados_obj()
 
         if self.check_cluster_exists():
@@ -388,14 +394,18 @@ class NFSCluster:
 
         return 0, "", "NFS Cluster Created Successfully"
 
-    def update_nfs_cluster(self, placement):
+    def update_nfs_cluster(self, cluster_id, placement):
+        self._set_pool_namespace(cluster_id)
+        self._set_cluster_id(cluster_id)
+
         if not self.check_cluster_exists():
             return -errno.EINVAL, "", "Cluster does not exist"
 
         self._call_orch_apply_nfs(placement)
         return 0, "", "NFS Cluster Updated Successfully"
 
-    def delete_nfs_cluster(self):
+    def delete_nfs_cluster(self, cluster_id):
+        self._set_cluster_id(cluster_id)
         if self.check_cluster_exists():
             try:
                 completion = self.mgr.remove_service('nfs.' + self.cluster_id)
index 5c4e1d5ae051cfeaa476328cefda69d7d680e6ea..c8cb6f9e26174e3d6c478943ab3529b6d097d067 100644 (file)
@@ -312,6 +312,7 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
         super(Module, self).__init__(*args, **kwargs)
         self.vc = VolumeClient(self)
         self.fs_export = FSExport(self)
+        self.nfs = NFSCluster(self)
 
     def __del__(self):
         self.vc.shutdown()
@@ -489,14 +490,11 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
         return self.fs_export.delete_export(cmd['export_id'])
 
     def _cmd_nfs_cluster_create(self, inbuf, cmd):
-        nfs_cluster_obj = NFSCluster(self, cmd['clusterid'])
-        return nfs_cluster_obj.create_nfs_cluster(export_type=cmd['type'],
-                                                  placement=cmd.get('placement', None))
+        return self.nfs.create_nfs_cluster(cluster_id=cmd['clusterid'], export_type=cmd['type'],
+                                           placement=cmd.get('placement', None))
 
     def _cmd_nfs_cluster_update(self, inbuf, cmd):
-        nfs_cluster_obj = NFSCluster(self, cmd['clusterid'])
-        return nfs_cluster_obj.update_nfs_cluster(placement=cmd['placement'])
+        return self.nfs.update_nfs_cluster(cluster_id=cmd['clusterid'], placement=cmd['placement'])
 
     def _cmd_nfs_cluster_delete(self, inbuf, cmd):
-        nfs_cluster_obj = NFSCluster(self, cmd['clusterid'])
-        return nfs_cluster_obj.delete_nfs_cluster()
+        return self.nfs.delete_nfs_cluster(cluster_id=cmd['clusterid'])