From 8e5db6e09ce251b7d1caf9e19666e52c3480752a Mon Sep 17 00:00:00 2001 From: Adam King Date: Thu, 30 Jan 2025 09:15:37 -0500 Subject: [PATCH] mgr/cephadm: create OSD daemon deploy specs through make_daemon_spec That function handles setting up the extra container/entrypoint args for the daemon during initial deployment. Having the CephadmDaemonDeploySpec made directly in the OSD deployment workflow means initial deployments of OSDs won't have the extra container/entrypoint args from the spec Fixes: https://tracker.ceph.com/issues/69734 Signed-off-by: Adam King --- src/pybind/mgr/cephadm/module.py | 6 +++++- src/pybind/mgr/cephadm/services/osd.py | 14 ++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index e42b9fe3b56d7..5e04ad3990f85 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -1508,7 +1508,11 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule, @forall_hosts def run(h: str) -> str: with self.async_timeout_handler(h, 'cephadm deploy (osd daemon)'): - return self.wait_async(self.osd_service.deploy_osd_daemons_for_existing_osds(h, 'osd')) + return self.wait_async( + self.osd_service.deploy_osd_daemons_for_existing_osds( + h, DriveGroupSpec(service_type='osd', service_id='') + ) + ) return HandleCommandResult(stdout='\n'.join(run(host))) diff --git a/src/pybind/mgr/cephadm/services/osd.py b/src/pybind/mgr/cephadm/services/osd.py index 80bf92772c49b..72beb4c1bf98d 100644 --- a/src/pybind/mgr/cephadm/services/osd.py +++ b/src/pybind/mgr/cephadm/services/osd.py @@ -95,10 +95,10 @@ class OSDService(CephService): raise RuntimeError( 'cephadm exited with an error code: %d, stderr:%s' % ( code, '\n'.join(err))) - return await self.deploy_osd_daemons_for_existing_osds(host, drive_group.service_name(), + return await self.deploy_osd_daemons_for_existing_osds(host, drive_group, replace_osd_ids) - async def deploy_osd_daemons_for_existing_osds(self, host: str, service_name: str, + async def deploy_osd_daemons_for_existing_osds(self, host: str, spec: DriveGroupSpec, replace_osd_ids: Optional[List[str]] = None) -> str: if replace_osd_ids is None: @@ -142,11 +142,12 @@ class OSDService(CephService): continue created.append(osd_id) - daemon_spec: CephadmDaemonDeploySpec = CephadmDaemonDeploySpec( - service_name=service_name, + daemon_spec: CephadmDaemonDeploySpec = self.make_daemon_spec( + spec=spec, daemon_id=str(osd_id), host=host, daemon_type='osd', + network='', # required arg but only really needed for mons ) daemon_spec.final_config, daemon_spec.deps = self.generate_config(daemon_spec) await CephadmServe(self.mgr)._create_daemon( @@ -183,11 +184,12 @@ class OSDService(CephService): continue created.append(osd_id) - daemon_spec = CephadmDaemonDeploySpec( - service_name=service_name, + daemon_spec = self.make_daemon_spec( + spec=spec, daemon_id=osd_id, host=host, daemon_type='osd', + network='', # required arg but only really needed for mons ) daemon_spec.final_config, daemon_spec.deps = self.generate_config(daemon_spec) await CephadmServe(self.mgr)._create_daemon( -- 2.39.5