]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
pybind/mgr/mgr_module: cache mgr_ip
authorSage Weil <sage@newdream.net>
Tue, 23 Nov 2021 17:32:40 +0000 (12:32 -0500)
committerNeha Ojha <nojha@redhat.com>
Wed, 16 Feb 2022 17:14:34 +0000 (17:14 +0000)
This does not change for the lifetime of an active mgr module.  No need to
keep calling back into Mgr to re-fetch it.

Signed-off-by: Sage Weil <sage@newdream.net>
(cherry picked from commit 994832e8e50c3566e21928f6be61e45a4411e556)

 Conflicts:
src/pybind/mgr/mgr_module.py - self._db_lock = threading.Lock() DNE in pacific

src/pybind/mgr/mgr_module.py

index 519ab0add833e05ff65d3694f54a9e18ea82d952..2b1c7d1b8db5127ed78928b06586af85a3069093 100644 (file)
@@ -922,6 +922,9 @@ class MgrModule(ceph_module.BaseMgrModule, MgrModuleLoggingMixin):
         # Keep a librados instance for those that need it.
         self._rados: Optional[rados.Rados] = None
 
+        # this does not change over the lifetime of an active mgr
+        self._mgr_ips: Optional[str] = None
+
     def __del__(self) -> None:
         self._unconfigure_logging()
 
@@ -1458,10 +1461,13 @@ class MgrModule(ceph_module.BaseMgrModule, MgrModuleLoggingMixin):
 
     @API.expose
     def get_mgr_ip(self) -> str:
-        ips = self.get("mgr_ips").get('ips', [])
-        if not ips:
-            return socket.gethostname()
-        return ips[0]
+        if not self._mgr_ips:
+            ips = self.get("mgr_ips").get('ips', [])
+            if not ips:
+                return socket.gethostname()
+            self._mgr_ips = ips[0]
+        assert self._mgr_ips is not None
+        return self._mgr_ips
 
     @API.expose
     def get_ceph_option(self, key: str) -> OptionValue: