]> git.apps.os.sepia.ceph.com Git - ceph-ci.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>
Wed, 10 Nov 2021 12:49:22 +0000 (13:49 +0100)
Signed-off-by: Sebastian Wagner <sewagner@redhat.com>
src/pybind/mgr/cephadm/serve.py
src/pybind/mgr/cephadm/tests/test_cephadm.py
src/pybind/mgr/orchestrator/_interface.py

index 274fa6bb5fbc00d2a4775196c0d6d46d04c23f34..0bab2b8004955c90ab362927be65999a9e164a47 100644 (file)
@@ -534,6 +534,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 be8f3aad059d7a9650723572a0d63baffb7c832a..9e3e4f91ab6ac6dfa9782bafd106fac77b3bd7e3 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
@@ -920,6 +920,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 abc25a53fd834780dee606086e6fd8c9f4b4ed1e..8a36deebb1a6403076b112908667315d5b68cc9e 100644 (file)
@@ -1366,6 +1366,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.