]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: check_for_moved_osds: Add OrchEvent
authorSebastian Wagner <sewagner@redhat.com>
Wed, 8 Sep 2021 14:23:32 +0000 (16:23 +0200)
committerSebastian Wagner <sewagner@redhat.com>
Mon, 3 Jan 2022 13:59:53 +0000 (14:59 +0100)
Signed-off-by: Sebastian Wagner <sewagner@redhat.com>
(cherry picked from commit 25d27fb6c1bd3520564e624965fa3b6f81a21ac0)

src/pybind/mgr/cephadm/serve.py
src/pybind/mgr/cephadm/tests/test_cephadm.py
src/pybind/mgr/orchestrator/_interface.py

index cc8bd1307846fafa7fc345f0770b9b51fe365e65..e50c0070f80822ee79016dc0516a7fdd1833520e 100644 (file)
@@ -566,6 +566,8 @@ class CephadmServe:
                 assert e.hostname
                 try:
                     self._remove_daemon(e.name(), e.hostname)
+                    self.mgr.events.for_daemon(
+                        e.name(), 'INFO', f"Removed duplicated daemon on host '{e.hostname}'")
                 except OrchestratorError as ex:
                     self.mgr.events.from_orch_error(ex)
                     logger.exception(f'failed to remove duplicated daemon {e}')
index 6acd3938956dcbc7d4075ec6a9c82cbe92586651..368b79f55c73356d355a0d66c7fef0a3d2cf6121 100644 (file)
@@ -20,7 +20,7 @@ from ceph.deployment.drive_selection.selector import DriveSelection
 from ceph.deployment.inventory import Devices, Device
 from ceph.utils import datetime_to_str, datetime_now
 from orchestrator import DaemonDescription, InventoryHost, \
-    HostSpec, OrchestratorError, DaemonDescriptionStatus
+    HostSpec, OrchestratorError, DaemonDescriptionStatus, OrchestratorEvent
 from tests import mock
 from .fixtures import wait, _run_cephadm, match_glob, with_host, \
     with_cephadm_module, with_service, _deploy_cephadm_binary
@@ -917,6 +917,15 @@ class TestCephadm(object):
 
                         assert len(cephadm_module.cache.get_daemons()) == 1
 
+                        assert cephadm_module.events.get_for_daemon('osd.1') == [
+                            OrchestratorEvent(mock.ANY, 'daemon', 'osd.1', 'INFO',
+                                              "Deployed osd.1 on host 'host1'"),
+                            OrchestratorEvent(mock.ANY, 'daemon', 'osd.1', 'INFO',
+                                              "Deployed osd.1 on host 'host2'"),
+                            OrchestratorEvent(mock.ANY, 'daemon', 'osd.1', 'INFO',
+                                              "Removed duplicated daemon on host 'host2'"),
+                        ]
+
     @pytest.mark.parametrize(
         "spec",
         [
index f6031edd1e96123d35b2f39148e90b6ce90ce5b8..efaa7dfc3d3c78d9229b93095824ae3330803e9a 100644 (file)
@@ -1380,6 +1380,9 @@ class OrchestratorEvent:
         return self.created == other.created and self.kind == other.kind \
             and self.subject == other.subject and self.message == other.message
 
+    def __repr__(self) -> str:
+        return f'OrchestratorEvent.from_json({self.to_json()!r})'
+
 
 def _mk_orch_methods(cls: Any) -> Any:
     # Needs to be defined outside of for.