]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: remove mon from monmap before removing mon
authorSage Weil <sage@redhat.com>
Fri, 6 Mar 2020 20:00:42 +0000 (14:00 -0600)
committerSage Weil <sage@redhat.com>
Sat, 7 Mar 2020 17:22:55 +0000 (11:22 -0600)
Check for force flag early so we don't update the monmap if the daemon
remove is going to fail anyway.

Signed-off-by: Sage Weil <sage@redhat.com>
src/pybind/mgr/cephadm/module.py

index 723e9db3faf8841a5f64bba738d66b52f3e8a5b3..07796619a30ee6a8039a582ecf3cb36cb98c9fe6 100644 (file)
@@ -2149,6 +2149,20 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         if daemon_type == 'mon':
             self._check_safe_to_destroy_mon(daemon_id)
 
+            # fail early, before we update the monmap
+            if not force:
+                raise OrchestratorError('Must pass --force to remove a monitor and DELETE potentially PRECIOUS CLUSTER DATA')
+
+            # remove mon from quorum before we destroy the daemon
+            self.log.info('Removing monitor %s from monmap...' % name)
+            ret, out, err = self.mon_command({
+                'prefix': 'mon rm',
+                'name': daemon_id,
+            })
+            if ret:
+                raise OrchestratorError('failed to remove mon %s from monmap' % (
+                    name))
+
         args = ['--name', name]
         if force:
             args.extend(['--force'])