]> git.apps.os.sepia.ceph.com Git - ceph-ci.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)
committerSage Weil <sage@newdream.net>
Wed, 24 Nov 2021 16:05:10 +0000 (11:05 -0500)
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>
src/pybind/mgr/mgr_module.py

index 73839000cd56533dcedfc305eae4cb46b39a10ef..0f6a19263d22295137f2cbca065fb6c4f68aa384 100644 (file)
@@ -935,6 +935,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
+
         self._db_lock = threading.Lock()
 
     def __del__(self) -> None:
@@ -1656,10 +1659,13 @@ class MgrModule(ceph_module.BaseMgrModule, MgrModuleLoggingMixin):
         return self._ceph_get_ceph_conf_path()
 
     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
 
     def get_ceph_option(self, key: str) -> OptionValue:
         return self._ceph_get_option(key)