]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: Warn about OSDs to be deleted manually when deleting an OSD service
authorJuan Miguel Olmo Martínez <jolmomar@redhat.com>
Thu, 25 Mar 2021 15:59:55 +0000 (16:59 +0100)
committerSage Weil <sage@newdream.net>
Mon, 7 Jun 2021 14:10:16 +0000 (09:10 -0500)
Provide information about what OSDs must be deleted in order to delete
completelly a OSD Service.

Signed-off-by: Juan Miguel Olmo Martínez <jolmomar@redhat.com>
(cherry picked from commit 84ac0b326dca8e9d44594a319c020250ea0709c0)

src/pybind/mgr/cephadm/module.py

index af1ae2fa70cdcb51bfeb513e71c77a1879606341..cde603154deb3185e1a1c014062d6f7f4e118f95 100644 (file)
@@ -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: