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: v16.2.5~87^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8f8174ebd34ac21b85a304d4257f7f9680f7f0ce;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 (cherry picked from commit 84ac0b326dca8e9d44594a319c020250ea0709c0) --- diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index af1ae2fa70cd..cde603154deb 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -1939,10 +1939,26 @@ Then run the following: 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. try: