]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: avoid saving daemons of unknown type 42177/head
authorSebastian Wagner <sewagner@redhat.com>
Mon, 5 Jul 2021 08:34:56 +0000 (10:34 +0200)
committerSebastian Wagner <sewagner@redhat.com>
Mon, 5 Jul 2021 08:34:56 +0000 (10:34 +0200)
Fixes: https://tracker.ceph.com/issues/51176
Signed-off-by: Sebastian Wagner <sewagner@redhat.com>
src/pybind/mgr/cephadm/serve.py
src/pybind/mgr/cephadm/tests/test_cephadm.py

index ff14caab354badf70153686ae00c9902111b7693..275e541828dfc4b203103daa22e6069348b34d5e 100644 (file)
@@ -405,6 +405,10 @@ class CephadmServe:
                 if v:
                     setattr(sd, k, str_to_datetime(d[k]))
             sd.daemon_type = d['name'].split('.')[0]
+            if sd.daemon_type not in ServiceSpec.KNOWN_SERVICE_TYPES:
+                logger.warning(f"Found unknown service type {sd.daemon_type} on host {host}")
+                continue
+
             sd.daemon_id = '.'.join(d['name'].split('.')[1:])
             sd.hostname = host
             sd.container_id = d.get('container_id')
@@ -423,7 +427,8 @@ class CephadmServe:
             sd.ports = d.get('ports')
             sd.ip = d.get('ip')
             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
+            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:
index 9848c0516c0f2005b38b86c45f39ed812a8ecfbc..4fc510a4c416cf82c3bd1fce47c1ec0cc3f4d2e6 100644 (file)
@@ -234,15 +234,22 @@ class TestCephadm(object):
                 container_id='container_id',
                 version='version',
                 state='running',
-            )
+            ),
+            dict(
+                name='something.foo.bar',
+                style='cephadm',
+                fsid='fsid',
+            ),
+
         ])
     ))
     def test_list_daemons(self, cephadm_module: CephadmOrchestrator):
         cephadm_module.service_cache_timeout = 10
         with with_host(cephadm_module, 'test'):
             CephadmServe(cephadm_module)._refresh_host_daemons('test')
-            c = cephadm_module.list_daemons()
-            assert wait(cephadm_module, c)[0].name() == 'rgw.myrgw.foobar'
+            dds = wait(cephadm_module, cephadm_module.list_daemons())
+            assert len(dds) == 1
+            assert dds[0].name() == 'rgw.myrgw.foobar'
 
     @mock.patch("cephadm.serve.CephadmServe._run_cephadm", _run_cephadm('[]'))
     def test_daemon_action(self, cephadm_module: CephadmOrchestrator):