]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
volumes/fs/nfs: Don't parse rados export objects during FSExport init 35417/head
authorPatrick Donnelly <pdonnell@redhat.com>
Sat, 27 Jun 2020 00:00:46 +0000 (17:00 -0700)
committerVarsha Rao <varao@redhat.com>
Tue, 30 Jun 2020 17:47:38 +0000 (23:17 +0530)
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 <varao@redhat.com>
src/pybind/mgr/volumes/fs/nfs.py

index 69fb0200cd91a7c5fad64e05c3c7a8f324a9fa77..7a3a4a4afe36886f973a00d8078eca46ec543c57 100644 (file)
@@ -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]: