]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cephadm/serve: use yaml to create conf file and aggregate osd operations.
authorRongqi Sun <sunrongqi@huawei.com>
Fri, 24 Mar 2023 06:00:15 +0000 (14:00 +0800)
committerRongqi Sun <sunrongqi@huawei.com>
Fri, 24 Mar 2023 06:00:15 +0000 (14:00 +0800)
Signed-off-by: Rongqi Sun <sunrongqi@huawei.com>
src/pybind/mgr/cephadm/serve.py

index 269e943cb450ac91370577959985883cbfcee53b..67a7038ce231a62b17a7c58d56229748925b3924 100644 (file)
@@ -1228,6 +1228,17 @@ class CephadmServe:
                     if not osd_uuid:
                         raise OrchestratorError('osd.%s not in osdmap' % daemon_spec.daemon_id)
                     daemon_spec.extra_args.extend(['--osd-fsid', osd_uuid])
+                    spec = cast(DriveGroupSpec, self.mgr.spec_store.active_specs.get(daemon_spec.service_name, None))
+                    if spec:
+                        daemon_spec.extra_args.extend(['--objectstore', spec.objectstore])
+                        final_conf = daemon_spec.final_config['config']
+                        objectstore_str = '\tosd_objectstore = ' + spec.objectstore + '\n'
+                        if final_conf.find("[osd]") != -1:
+                            index = final_conf.index("[osd]") + 5
+                        else:
+                            index = final_conf.index("[global]") + 8
+                        final_conf = final_conf[:index] + objectstore_str + final_conf[index:]
+                        daemon_spec.final_config['config'] = final_conf
 
                 if reconfig:
                     daemon_spec.extra_args.append('--reconfig')
@@ -1249,28 +1260,22 @@ class CephadmServe:
                     'Reconfiguring' if reconfig else 'Deploying',
                     daemon_spec.name(), daemon_spec.host))
 
-                cmd = [
-                    '--name', daemon_spec.name(),
-                    '--meta-json', json.dumps({
-                        'service_name': daemon_spec.service_name,
-                        'ports': daemon_spec.ports,
-                        'ip': daemon_spec.ip,
-                        'deployed_by': self.mgr.get_active_mgr_digests(),
-                        'rank': daemon_spec.rank,
-                        'rank_generation': daemon_spec.rank_generation,
-                        'extra_container_args': extra_container_args,
-                        'extra_entrypoint_args': extra_entrypoint_args
-                    }),
-                    '--config-json', '-',
-                ]
-
-                if daemon_spec.daemon_type == 'osd':
-                    osd_objectstore = getattr(self.mgr.spec_store.active_specs.get(daemon_spec.service_name), 'objectstore', 'bluestore')
-                    cmd += '--objectstore', osd_objectstore,
-
                 out, err, code = await self._run_cephadm(
                     daemon_spec.host, daemon_spec.name(), 'deploy',
-                    cmd + daemon_spec.extra_args,
+                    [
+                        '--name', daemon_spec.name(),
+                        '--meta-json', json.dumps({
+                            'service_name': daemon_spec.service_name,
+                            'ports': daemon_spec.ports,
+                            'ip': daemon_spec.ip,
+                            'deployed_by': self.mgr.get_active_mgr_digests(),
+                            'rank': daemon_spec.rank,
+                            'rank_generation': daemon_spec.rank_generation,
+                            'extra_container_args': extra_container_args,
+                            'extra_entrypoint_args': extra_entrypoint_args
+                        }),
+                        '--config-json', '-',
+                    ] + daemon_spec.extra_args,
                     stdin=json.dumps(daemon_spec.final_config),
                     image=image,
                 )
@@ -1545,12 +1550,13 @@ class CephadmServe:
             await self._registry_login(host, json.loads(str(self.mgr.get_store('registry_credentials'))))
 
         j = None
-        try:
-            j = await self._run_cephadm_json(host, '', 'inspect-image', [],
-                                             image=image_name, no_fsid=True,
-                                             error_ok=True)
-        except OrchestratorError:
-            pass
+        if not self.mgr.use_repo_digest:
+            try:
+                j = await self._run_cephadm_json(host, '', 'inspect-image', [],
+                                                 image=image_name, no_fsid=True,
+                                                 error_ok=True)
+            except OrchestratorError:
+                pass
 
         if not j:
             pullargs: List[str] = []