From 4ebb2581d655ae903d42942b4ef1f2c3c6fe5b8a Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Fri, 26 Jun 2020 17:00:46 -0700 Subject: [PATCH] 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 --- src/pybind/mgr/volumes/fs/nfs.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/pybind/mgr/volumes/fs/nfs.py b/src/pybind/mgr/volumes/fs/nfs.py index 69fb0200cd9..7a3a4a4afe3 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]: