]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: call prepare_create before redeploy
authorAdam King <adking@redhat.com>
Thu, 28 Jan 2021 18:32:01 +0000 (13:32 -0500)
committerSebastian Wagner <sebastian.wagner@suse.com>
Tue, 23 Feb 2021 09:59:23 +0000 (10:59 +0100)
some services (notably iscsi and ha-rgw currently) rely
on actions in prepare_create to setup their configuration
even when being redeployed. This change makes sure prepare_create
is called before redeploys and reconfigurations the same way it is
done during initial deployment to avoid disrepencies. OSDs are
skipped as they do not have a normal prepare_create

Fixes: https://tracker.ceph.com/issues/48373
Signed-off-by: Adam King <adking@redhat.com>
(cherry picked from commit 6fc6db23bf72d5d488fa983a7fd2491c5a9805d3)

src/pybind/mgr/cephadm/module.py

index 2822d8580264f4a954fbd9f7bcdfd6f7b2f4f362..acfe95155d8c2c8c484eab22c6cc4d7dc79a33cf 100644 (file)
@@ -1609,14 +1609,15 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule,
 
         self._daemon_action_set_image(action, image, daemon_type, daemon_id)
 
-        if action == 'redeploy':
-            if self.daemon_is_self(daemon_type, daemon_id):
-                self.mgr_service.fail_over()
-                return ''  # unreachable
-            # stop, recreate the container+unit, then restart
-            return CephadmServe(self)._create_daemon(daemon_spec)
-        elif action == 'reconfig':
-            return CephadmServe(self)._create_daemon(daemon_spec, reconfig=True)
+        if action == 'redeploy' and self.daemon_is_self(daemon_type, daemon_id):
+            self.mgr_service.fail_over()
+            return ''  # unreachable
+
+        if action == 'redeploy' or action == 'reconfig':
+            if daemon_type != 'osd':
+                daemon_spec = self.cephadm_services[daemon_type_to_service(
+                    daemon_type)].prepare_create(daemon_spec)
+            return CephadmServe(self)._create_daemon(daemon_spec, reconfig=(action == 'reconfig'))
 
         actions = {
             'start': ['reset-failed', 'start'],