]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: orch host drain command does not return error for invalid hostname 61919/head
authorShweta Bhosale <Shweta.Bhosale1@ibm.com>
Tue, 22 Oct 2024 11:25:08 +0000 (16:55 +0530)
committerAdam King <adking@redhat.com>
Wed, 19 Feb 2025 20:52:18 +0000 (15:52 -0500)
Fixes: https://tracker.ceph.com/issues/68681
Signed-off-by: Shweta Bhosale <Shweta.Bhosale1@ibm.com>
(cherry picked from commit ab8d7095979322613e5cfcdd6f96befc299b408e)

src/pybind/mgr/cephadm/module.py
src/pybind/mgr/cephadm/tests/test_cephadm.py

index 6d2cf33e63a3544d07a45f7459f842b4999ae5ef..633645d4bd9703e122e60ea915d2f4295bcc10ff 100644 (file)
@@ -3563,6 +3563,7 @@ Then run the following:
         return self.to_remove_osds.all_osds()
 
     @handle_orch_error
+    @host_exists()
     def drain_host(self, hostname: str, force: bool = False, keep_conf_keyring: bool = False, zap_osd_devices: bool = False) -> str:
         """
         Drain all daemons from a host.
index f59eeb6aaca2f96ef38e0151462cbbdcfed6ed90..70d8ac00b919fb0fce74c0bcc6338f3bd6ebaa1f 100644 (file)
@@ -2608,16 +2608,23 @@ Traceback (most recent call last):
             with cephadm_module.async_timeout_handler('hostC', 'very slow', 999):
                 cephadm_module.wait_async(_timeout())
 
+    @mock.patch("cephadm.serve.CephadmServe._run_cephadm", _run_cephadm('[]'))
     @mock.patch("cephadm.CephadmOrchestrator.remove_osds")
     @mock.patch("cephadm.CephadmOrchestrator.add_host_label", lambda *a, **kw: None)
     @mock.patch("cephadm.inventory.HostCache.get_daemons_by_host", lambda *a, **kw: [])
     def test_host_drain_zap(self, _rm_osds, cephadm_module):
         # pass force=true in these tests to bypass _admin label check
-        cephadm_module.drain_host('host1', force=True, zap_osd_devices=False)
-        assert _rm_osds.called_with([], zap=False)
+        with with_host(cephadm_module, 'test', refresh_hosts=False, rm_with_force=True):
+            cephadm_module.drain_host('test', force=True, zap_osd_devices=False)
+            assert _rm_osds.called_with([], zap=False)
+
+        with with_host(cephadm_module, 'test', refresh_hosts=False, rm_with_force=True):
+            cephadm_module.drain_host('test', force=True, zap_osd_devices=True)
+            assert _rm_osds.called_with([], zap=True)
 
-        cephadm_module.drain_host('host1', force=True, zap_osd_devices=True)
-        assert _rm_osds.called_with([], zap=True)
+        with pytest.raises(OrchestratorError, match=r"Cannot find host 'host1' in the inventory."):
+            cephadm_module.drain_host('host1', force=True, zap_osd_devices=True)
+            assert _rm_osds.called_with([], zap=True)
 
     def test_process_ls_output(self, cephadm_module):
         sample_ls_output = """[