From: Rongqi Sun Date: Fri, 24 Mar 2023 06:00:15 +0000 (+0800) Subject: cephadm/serve: use yaml to create conf file and aggregate osd operations. X-Git-Tag: v19.0.0~1274^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=026cc334c4b63a77532cafbac53a732c356902ea;p=ceph.git cephadm/serve: use yaml to create conf file and aggregate osd operations. Signed-off-by: Rongqi Sun --- diff --git a/src/pybind/mgr/cephadm/serve.py b/src/pybind/mgr/cephadm/serve.py index 269e943cb450..67a7038ce231 100644 --- a/src/pybind/mgr/cephadm/serve.py +++ b/src/pybind/mgr/cephadm/serve.py @@ -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] = []