From: Sage Weil Date: Wed, 12 Feb 2020 22:44:56 +0000 (-0600) Subject: mgr/cephadm: use daemon map for service|daemon removal X-Git-Tag: v15.1.1~368^2~10 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=782a71e32c930071d5be04cab0f8a0089316456e;p=ceph-ci.git mgr/cephadm: use daemon map for service|daemon removal Signed-off-by: Sage Weil --- diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index c5f91a82ef5..df600a2c6e8 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -1417,39 +1417,32 @@ class CephadmOrchestrator(MgrModule, orchestrator.OrchestratorClientMixin): def remove_daemons(self, names, force): # type: (List[str], bool) -> orchestrator.Completion - def _filter(daemons): - args = [] - for d in daemons: - for name in names: - if d.name() == name: - args.append( - ('%s.%s' % (d.daemon_type, d.daemon_id), - d.nodename, - force) - ) - if not args: - raise OrchestratorError('Unable to find daemon(s) %s' % (names)) - return self._remove_daemon(args) - return self._get_daemons().then(_filter) + args = [] + for host, di in self.daemon_cache.items(): + for name in names: + if name in di['daemons']: + args.append((name, host, force)) + if not args: + raise OrchestratorError('Unable to find daemon(s) %s' % (names)) + return self._remove_daemon(args) def remove_service(self, service_type, service_name): if service_name: prefix = service_name + '.' else: prefix = '' - def _filter(daemons): - args = [] - for d in daemons: + args = [] + for host, di in self.daemon_cache.items(): + for name, d in di['daemons'].items(): if d.daemon_type == service_type and \ d.daemon_id.startswith(prefix): args.append( ('%s.%s' % (d.daemon_type, d.daemon_id), d.nodename) ) - if not args: - raise OrchestratorError('Unable to find daemons in %s.%s* service' % ( - service_type, prefix)) - return self._remove_daemon(args) - return self._get_daemons(daemon_type=service_type).then(_filter) + if not args: + raise OrchestratorError('Unable to find daemons in %s.%s* service' % ( + service_type, prefix)) + return self._remove_daemon(args) def get_inventory(self, node_filter=None, refresh=False): """