From 2ae8cbeda317c9bb0e17389c41399e6c2893929b Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Thu, 9 Sep 2021 13:29:56 +0200 Subject: [PATCH] mgr/cephadm: check_for_moved_osds: verify OSDs are up Signed-off-by: Sebastian Wagner (cherry picked from commit 47dd258cf56039d510c8d8a0d275c9104b9f49eb) --- src/pybind/mgr/cephadm/module.py | 9 +++++++++ src/pybind/mgr/cephadm/serve.py | 5 ++++- src/pybind/mgr/cephadm/tests/test_cephadm.py | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 6ca92478c4acd..3343c344e9e9d 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -2255,6 +2255,15 @@ Then run the following: r[str(osd_id)] = o.get('uuid', '') return r + def get_osd_by_id(self, osd_id: int) -> Optional[Dict[str, Any]]: + osd = [x for x in self.get('osd_map')['osds'] + if x['osd'] == osd_id] + + if len(osd) != 1: + return None + + return osd[0] + def _trigger_preview_refresh(self, specs: Optional[List[DriveGroupSpec]] = None, service_name: Optional[str] = None, diff --git a/src/pybind/mgr/cephadm/serve.py b/src/pybind/mgr/cephadm/serve.py index adea058d77669..9ee940cd9b698 100644 --- a/src/pybind/mgr/cephadm/serve.py +++ b/src/pybind/mgr/cephadm/serve.py @@ -553,7 +553,7 @@ class CephadmServe: for dd in self.mgr.cache.get_daemons_by_type('osd'): assert dd.daemon_id all_osds[int(dd.daemon_id)].append(dd) - for dds in all_osds.values(): + for osd_id, dds in all_osds.items(): if len(dds) <= 1: continue running = [dd for dd in dds if dd.status == DaemonDescriptionStatus.running] @@ -562,6 +562,9 @@ class CephadmServe: logger.info(msg) if len(running) != 1: continue + osd = self.mgr.get_osd_by_id(osd_id) + if not osd or not osd['up']: + continue for e in error: assert e.hostname try: diff --git a/src/pybind/mgr/cephadm/tests/test_cephadm.py b/src/pybind/mgr/cephadm/tests/test_cephadm.py index d20787a311d5e..3b717c5027989 100644 --- a/src/pybind/mgr/cephadm/tests/test_cephadm.py +++ b/src/pybind/mgr/cephadm/tests/test_cephadm.py @@ -75,6 +75,7 @@ def with_osd_daemon(cephadm_module: CephadmOrchestrator, _run_cephadm, host: str { 'osd': 1, 'up_from': 0, + 'up': True, 'uuid': 'uuid' } ] -- 2.39.5