From 91f34abed4d3602e988614ea113673936e87e440 Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Wed, 22 Sep 2021 14:20:24 +0200 Subject: [PATCH] mgr/orch: re-raise to make debugging easier Signed-off-by: Sebastian Wagner (cherry picked from commit 38b52f715fa581f3540ad6fc4c595ab0ede83ece) --- src/pybind/mgr/cephadm/tests/test_cephadm.py | 16 ++++++++-------- src/pybind/mgr/orchestrator/_interface.py | 3 +++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/pybind/mgr/cephadm/tests/test_cephadm.py b/src/pybind/mgr/cephadm/tests/test_cephadm.py index 614abf1c75ceb..d6850ae818ffa 100644 --- a/src/pybind/mgr/cephadm/tests/test_cephadm.py +++ b/src/pybind/mgr/cephadm/tests/test_cephadm.py @@ -1402,10 +1402,10 @@ class TestCephadm(object): _get_daemon_types.return_value = ['crash'] _hosts.return_value = [hostname, 'other_host'] cephadm_module.inventory.add_host(HostSpec(hostname)) - # should raise an error which will get stored in OrchResult object - retval = cephadm_module.enter_host_maintenance(hostname) - assert retval.exception_str - assert not retval.result_str() + + with pytest.raises(OrchestratorError, match='Failed to place host1 into maintenance for cluster fsid'): + cephadm_module.enter_host_maintenance(hostname) + assert not cephadm_module.inventory._inventory[hostname]['status'] @mock.patch("cephadm.serve.CephadmServe._run_cephadm") @@ -1433,10 +1433,10 @@ class TestCephadm(object): _get_daemon_types.return_value = ['crash'] _hosts.return_value = [hostname, 'other_host'] cephadm_module.inventory.add_host(HostSpec(hostname, status='maintenance')) - # should raise an error which will get stored in OrchResult object - retval = cephadm_module.exit_host_maintenance(hostname) - assert retval.exception_str - assert not retval.result_str() + + with pytest.raises(OrchestratorError, match='Failed to exit maintenance state for host host1, cluster fsid'): + cephadm_module.exit_host_maintenance(hostname) + assert cephadm_module.inventory._inventory[hostname]['status'] == 'maintenance' def test_stale_connections(self, cephadm_module): diff --git a/src/pybind/mgr/orchestrator/_interface.py b/src/pybind/mgr/orchestrator/_interface.py index ee06e2cf1cbbf..006b670038355 100644 --- a/src/pybind/mgr/orchestrator/_interface.py +++ b/src/pybind/mgr/orchestrator/_interface.py @@ -125,6 +125,9 @@ def handle_orch_error(f: Callable[..., T]) -> Callable[..., 'OrchResult[T]']: return OrchResult(f(*args, **kwargs)) except Exception as e: logger.exception(e) + import os + if 'UNITTEST' in os.environ: + raise # This makes debugging of Tracebacks from unittests a bit easier return OrchResult(None, exception=e) return cast(Callable[..., OrchResult[T]], wrapper) -- 2.39.5