From: Patrick Donnelly Date: Sat, 27 Jun 2020 00:00:46 +0000 (-0700) Subject: volumes/fs/nfs: Don't parse rados export objects during FSExport init X-Git-Tag: v16.1.0~1878^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4ebb2581d655ae903d42942b4ef1f2c3c6fe5b8a;p=ceph.git volumes/fs/nfs: Don't parse rados export objects during FSExport init Instead we can do it if any export commands are used. This fixes ImportError raised when FSExport is initialized with cephadm module disabled. Signed-off-by: Varsha Rao --- diff --git a/src/pybind/mgr/volumes/fs/nfs.py b/src/pybind/mgr/volumes/fs/nfs.py index 69fb0200cd91..7a3a4a4afe36 100644 --- a/src/pybind/mgr/volumes/fs/nfs.py +++ b/src/pybind/mgr/volumes/fs/nfs.py @@ -374,19 +374,7 @@ class FSExport(object): self.mgr = mgr self.rados_pool = 'nfs-ganesha' self.rados_namespace = namespace - self.exports = {} - - try: - log.info("Begin export parsing") - for cluster_id in available_clusters(self.mgr): - self.export_conf_objs = [] # type: List[Export] - self._read_raw_config(cluster_id) - self.exports[cluster_id] = self.export_conf_objs - log.info(f"Exports parsed successfully {self.exports.items()}") - except orchestrator.NoOrchestrator: - # Pass it for vstart - log.info("Orchestrator not found") - pass + self._exports = None @staticmethod def _check_rados_notify(ioctx, obj): @@ -395,6 +383,18 @@ class FSExport(object): except TimedOut: log.exception(f"Ganesha timed out") + @property + def exports(self): + if self._exports is None: + self._exports = {} + log.info("Begin export parsing") + for cluster_id in available_clusters(self.mgr): + self.export_conf_objs = [] # type: List[Export] + self._read_raw_config(cluster_id) + self.exports[cluster_id] = self.export_conf_objs + log.info(f"Exports parsed successfully {self.exports.items()}") + return self._exports + def _fetch_export(self, pseudo_path): try: for ex in self.exports[self.rados_namespace]: