From 4757110564611349ff0a8bf8cdf0f1601de4cac2 Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Mon, 2 Dec 2019 15:13:14 +0100 Subject: [PATCH] mgr/ssh: Port raising exceptions from completion handlers to Py2 Signed-off-by: Sebastian Wagner --- src/pybind/mgr/ssh/module.py | 18 ++++++++++++++---- src/pybind/mgr/ssh/tests/test_completion.py | 1 - 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/pybind/mgr/ssh/module.py b/src/pybind/mgr/ssh/module.py index 92f0d9803024..1b612882f2d0 100644 --- a/src/pybind/mgr/ssh/module.py +++ b/src/pybind/mgr/ssh/module.py @@ -107,24 +107,34 @@ class AsyncCompletion(orchestrator.Completion): def error_callback(e): self.fail(e) + if six.PY3: + _callback = self.__on_complete + else: + def _callback(*args, **kwargs): + # Py2 only: _worker_pool doesn't call error_callback + try: + return self.__on_complete(*args, **kwargs) + except Exception as e: + self.fail(e) + def run(value): if self.many: if not value: logger.info('calling map_async without values') callback([]) if six.PY3: - SSHOrchestrator.instance._worker_pool.map_async(self.__on_complete, value, + SSHOrchestrator.instance._worker_pool.map_async(_callback, value, callback=callback, error_callback=error_callback) else: - SSHOrchestrator.instance._worker_pool.map_async(self.__on_complete, value, + SSHOrchestrator.instance._worker_pool.map_async(_callback, value, callback=callback) else: if six.PY3: - SSHOrchestrator.instance._worker_pool.apply_async(self.__on_complete, (value,), + SSHOrchestrator.instance._worker_pool.apply_async(_callback, (value,), callback=callback, error_callback=error_callback) else: - SSHOrchestrator.instance._worker_pool.apply_async(self.__on_complete, (value,), + SSHOrchestrator.instance._worker_pool.apply_async(_callback, (value,), callback=callback) return self.ASYNC_RESULT diff --git a/src/pybind/mgr/ssh/tests/test_completion.py b/src/pybind/mgr/ssh/tests/test_completion.py index f076de8f2870..988f56455f7b 100644 --- a/src/pybind/mgr/ssh/tests/test_completion.py +++ b/src/pybind/mgr/ssh/tests/test_completion.py @@ -160,7 +160,6 @@ class TestCompletion(object): self._wait(ssh_module, c) assert c.result == "['2', '3']" - @pytest.mark.skipif(sys.version_info < (3,0), reason="requires python3") def test_raise(self, ssh_module): @async_completion def run(x): -- 2.47.3