From: Varsha Rao Date: Mon, 27 Apr 2020 11:30:03 +0000 (+0530) Subject: mgr/volumes/nfs: Pass cluster_id directly to NFSCluster {create, update, delete}... X-Git-Tag: v15.2.5~166^2~61 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e8a03d0e38498c21cbc4d07b0117a9da652b01b6;p=ceph.git mgr/volumes/nfs: Pass cluster_id directly to NFSCluster {create, update, delete} methods Signed-off-by: Varsha Rao (cherry picked from commit fff59e686aeae615935fe1ee8ad84352aa6757f3) --- diff --git a/src/pybind/mgr/volumes/fs/nfs.py b/src/pybind/mgr/volumes/fs/nfs.py index 12a802d2a96..b3319e15140 100644 --- a/src/pybind/mgr/volumes/fs/nfs.py +++ b/src/pybind/mgr/volumes/fs/nfs.py @@ -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) diff --git a/src/pybind/mgr/volumes/module.py b/src/pybind/mgr/volumes/module.py index 5c4e1d5ae05..c8cb6f9e261 100644 --- a/src/pybind/mgr/volumes/module.py +++ b/src/pybind/mgr/volumes/module.py @@ -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'])