From: Ernesto Puerta <37327689+epuertat@users.noreply.github.com> Date: Tue, 31 Jul 2018 09:39:53 +0000 (+0200) Subject: Revert "luminous: pybind/mgr/mgr_module: make rados handle available to all modules" X-Git-Tag: v12.2.8~84^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F23345%2Fhead;p=ceph.git Revert "luminous: pybind/mgr/mgr_module: make rados handle available to all modules" Reverts: https://github.com/ceph/ceph/pull/23235 Reverts: 45c7170eb68571a3d690460f99392c6753994799 Signed-off-by: Ernesto Puerta --- diff --git a/src/pybind/mgr/dashboard/module.py b/src/pybind/mgr/dashboard/module.py index b993c54b0015..3d5e3191aa65 100644 --- a/src/pybind/mgr/dashboard/module.py +++ b/src/pybind/mgr/dashboard/module.py @@ -33,6 +33,7 @@ from mgr_module import MgrModule, MgrStandbyModule, CommandResult from types import OsdMap, NotFound, Config, FsMap, MonMap, \ PgSummary, Health, MonStatus +import rados import rbd_iscsi import rbd_mirroring from rbd_ls import RbdLs, RbdPoolLs @@ -131,6 +132,9 @@ class Module(MgrModule): self.log_buffer = collections.deque(maxlen=LOG_BUFFER_SIZE) self.audit_buffer = collections.deque(maxlen=LOG_BUFFER_SIZE) + # Keep a librados instance for those that need it. + self._rados = None + # Stateful instances of RbdLs, hold cached results. Key to dict # is pool name. self.rbd_ls = {} @@ -156,6 +160,21 @@ class Module(MgrModule): # A prefix for all URLs to use the dashboard with a reverse http proxy self.url_prefix = '' + @property + def rados(self): + """ + A librados instance to be shared by any classes within + this mgr module that want one. + """ + if self._rados: + return self._rados + + ctx_capsule = self.get_context() + self._rados = rados.Rados(context=ctx_capsule) + self._rados.connect() + + return self._rados + def update_pool_stats(self): df = global_instance().get("df") pool_stats = dict([(p['id'], p['stats']) for p in df['pools']]) @@ -230,6 +249,10 @@ class Module(MgrModule): cherrypy.engine.exit() log.info("Stopped server") + log.info("Stopping librados...") + if self._rados: + self._rados.shutdown() + log.info("Stopped librados.") def get_latest(self, daemon_type, daemon_name, stat): data = self.get_counter(daemon_type, daemon_name, stat)[stat] diff --git a/src/pybind/mgr/mgr_module.py b/src/pybind/mgr/mgr_module.py index c4049a30c8e5..230d6f20b928 100644 --- a/src/pybind/mgr/mgr_module.py +++ b/src/pybind/mgr/mgr_module.py @@ -8,7 +8,6 @@ import json import logging import threading from collections import defaultdict -import rados class CPlusPlusHandler(logging.Handler): @@ -238,9 +237,6 @@ class MgrModule(ceph_module.BaseMgrModule): self._perf_schema_cache = None - # Keep a librados instance for those that need it. - self._rados = None - def __del__(self): unconfigure_logger(self, self.module_name) @@ -294,8 +290,7 @@ class MgrModule(ceph_module.BaseMgrModule): :return: None """ - if self._rados: - self._rados.shutdown() + pass def get(self, data_name): """ @@ -633,19 +628,3 @@ class MgrModule(ceph_module.BaseMgrModule): """ return self._ceph_have_mon_connection() - - @property - def rados(self): - """ - A librados instance to be shared by any classes within - this mgr module that want one. - """ - if self._rados: - return self._rados - - ctx_capsule = self.get_context() - self._rados = rados.Rados(context=ctx_capsule) - self._rados.connect() - - return self._rados -