From: Juan Miguel Olmo Martínez Date: Thu, 25 Mar 2021 15:59:55 +0000 (+0100) Subject: mgr/cephadm: Warn about OSDs to be deleted manually when deleting an OSD service X-Git-Tag: v17.1.0~1742^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=84ac0b326dca8e9d44594a319c020250ea0709c0;p=ceph.git mgr/cephadm: Warn about OSDs to be deleted manually when deleting an OSD service Provide information about what OSDs must be deleted in order to delete completelly a OSD Service. Signed-off-by: Juan Miguel Olmo Martínez --- diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 072db303bdf..a45e97c1563 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -1797,10 +1797,26 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule, if self.spec_store[service_name].spec.service_type in ('mon', 'mgr'): return f'Unable to remove {service_name} service.\n' \ f'Note, you might want to mark the {service_name} service as "unmanaged"' - found = self.spec_store.rm(service_name) + + # Report list of affected OSDs + osds_msg = {} + if service_name.startswith('osd.'): + for h, dm in self.cache.get_daemons_with_volatile_status(): + osds_to_remove = [] + for name, dd in dm.items(): + if dd.daemon_type == 'osd' and (dd.service_name() == service_name or not dd.osdspec_affinity): + osds_to_remove.append(str(dd.daemon_id)) + if osds_to_remove: + osds_msg[h] = osds_to_remove + + found = self.spec_store.rm(service_name) or osds_msg if found: self._kick_serve_loop() - return 'Removed service %s' % service_name + if osds_msg: + return f'The service {service_name} will be deleted once the following OSDs: {osds_msg} ' \ + f'will be deleted manually.' + else: + return f'Removed service {service_name}' else: # must be idempotent: still a success. return f'Failed to remove service. <{service_name}> was not found.'