From 5c1df2ab8779d1222b842b587c0485cfcb381bba Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 2 Mar 2020 14:21:20 -0600 Subject: [PATCH] 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 --- src/pybind/mgr/cephadm/module.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 20d018bd5edc4..e46a960f59bb0 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): """ -- 2.39.5