From 3beb186f9b587b4852a5e538a1ce844d0d96ea4b Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 23 Nov 2021 13:38:50 -0500 Subject: [PATCH] mgr/cephadm: drop osdspec_affinity tracking We identify which drivespec legacy OSDs belong(ed) to by metadata they report to the mgr. Modern cephadm does this instead by looking at the 'service' property in the unit.meta file. Having cephadm query the osd metadata is expensive for large clusters, so let's avoid this and rely entirely on unit.meta. Worst case, some upgraded clusters will show OSDs as service 'osd' instead of service 'osd.whatever' for whatever drivespec created them. Signed-off-by: Sage Weil (cherry picked from commit 9c2b8f557ef374212b5d11464b04f443cb8d84e6) Conflicts: src/pybind/mgr/cephadm/module.py src/pybind/mgr/cephadm/serve.py Signed-off-by: Sebastian Wagner --- src/pybind/mgr/cephadm/module.py | 2 +- src/pybind/mgr/cephadm/serve.py | 2 -- src/pybind/mgr/cephadm/services/osd.py | 3 --- src/pybind/mgr/cephadm/tests/fixtures.py | 1 - 4 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 3343c344e9e9d..b61cc54df068c 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -2068,7 +2068,7 @@ Then run the following: for h, dm in self.cache.get_daemons_with_volatile_status(): osds_to_remove = [] for name, dd in dm.items(): - if dd.daemon_type == 'osd' and (dd.service_name() == service_name or not dd.osdspec_affinity): + if dd.daemon_type == 'osd' and dd.service_name() == service_name: osds_to_remove.append(str(dd.daemon_id)) if osds_to_remove: osds_msg[h] = osds_to_remove diff --git a/src/pybind/mgr/cephadm/serve.py b/src/pybind/mgr/cephadm/serve.py index 6849fae142f01..26a92571da133 100644 --- a/src/pybind/mgr/cephadm/serve.py +++ b/src/pybind/mgr/cephadm/serve.py @@ -411,8 +411,6 @@ class CephadmServe: sd.rank = int(d['rank']) if d.get('rank') is not None else None sd.rank_generation = int(d['rank_generation']) if d.get( 'rank_generation') is not None else None - if sd.daemon_type == 'osd': - sd.osdspec_affinity = self.mgr.osd_service.get_osdspec_affinity(sd.daemon_id) if 'state' in d: sd.status_desc = d['state'] sd.status = { diff --git a/src/pybind/mgr/cephadm/services/osd.py b/src/pybind/mgr/cephadm/services/osd.py index f485257f2b470..dc4476b709a1c 100644 --- a/src/pybind/mgr/cephadm/services/osd.py +++ b/src/pybind/mgr/cephadm/services/osd.py @@ -311,9 +311,6 @@ class OSDService(CephService): error_ok=True) return out, err, code - def get_osdspec_affinity(self, osd_id: str) -> str: - return self.mgr.get('osd_metadata').get(osd_id, {}).get('osdspec_affinity', '') - def post_remove(self, daemon: DaemonDescription, is_failed_deploy: bool) -> None: # Do not remove the osd.N keyring, if we failed to deploy the OSD, because # we cannot recover from it. The OSD keys are created by ceph-volume and not by diff --git a/src/pybind/mgr/cephadm/tests/fixtures.py b/src/pybind/mgr/cephadm/tests/fixtures.py index 3a3d7c1390633..b0ce44225ebff 100644 --- a/src/pybind/mgr/cephadm/tests/fixtures.py +++ b/src/pybind/mgr/cephadm/tests/fixtures.py @@ -42,7 +42,6 @@ def with_cephadm_module(module_options=None, store=None): with mock.patch("cephadm.module.CephadmOrchestrator.get_ceph_option", get_ceph_option),\ mock.patch("cephadm.services.osd.RemoveUtil._run_mon_cmd"), \ mock.patch("cephadm.module.CephadmOrchestrator.get_osdmap"), \ - mock.patch("cephadm.services.osd.OSDService.get_osdspec_affinity", return_value='test_spec'), \ mock.patch("cephadm.module.CephadmOrchestrator.remote"): m = CephadmOrchestrator.__new__(CephadmOrchestrator) -- 2.39.5