From: Sage Weil Date: Mon, 2 Mar 2020 20:21:20 +0000 (-0600) Subject: mgr/cephadm: refresh configs when dependencies change X-Git-Tag: v15.1.1~145^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F33671%2Fhead;p=ceph.git mgr/cephadm: refresh configs when dependencies change If a daemon config (e.g., prometheus) depends on other daemons' existence, refresh the config if that list changes (e.g., new node-exporter, mgr removed, etc.). Signed-off-by: Sage Weil --- diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 20d018bd5ed..e46a960f59b 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -1069,6 +1069,8 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule): if service_completion.exception is not None: self.log.error(str(service_completion.exception)) + self._refresh_configs() + if self.upgrade_state and not self.upgrade_state.get('paused'): upgrade_completion = self._do_upgrade() if upgrade_completion: @@ -2185,6 +2187,20 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule): spec.service_name(), spec, e)) return r + def _refresh_configs(self): + daemons = self.cache.get_daemons() + for dd in daemons: + deps = self._calc_daemon_deps(dd.daemon_type, dd.daemon_id) + last_deps, last_config = self.cache.get_daemon_last_config_deps( + dd.hostname, dd.name()) + if last_deps != deps: + self.log.debug('%s deps %s -> %s' % (dd.name(), last_deps, + deps)) + self.log.info('Reconfiguring %s (dependencies changed)...' % ( + dd.name())) + self._create_daemon(dd.daemon_type, dd.daemon_id, + dd.hostname, reconfig=True) + def _add_daemon(self, daemon_type, spec, create_func, config_func=None): """