From 903e6cd2d68e7577601cea67229aaffe138b4493 Mon Sep 17 00:00:00 2001 From: Chris Van Heuveln Date: Thu, 7 Mar 2019 08:16:28 -0500 Subject: [PATCH] httpapi/nxos_facts: raise ConnectionError is missing `code` (#53406) * `nxos_facts` crashes with certain nxos images; e.g. `7.0(3)I7(3)` as a result of this call: ``` data = self.run('show lldp neighbors', output='json') ``` ...which returns `ERROR: No neighbour information` when the device has no neighbors. * This response causes httpapi's `handle_reponse()` to raise a ConnectionError, which is caught by `utils/jsonrpc.py` which is expecting `code` in the exception data: ``` except ConnectionError as exc: display.vvv(traceback.format_exc()) error = self.error(code=exc.code, message=to_text(exc)) ``` * Found by: `nxos_facts/tests/common/not_hardware.yaml:7` (cherry picked from commit 874fd70d103c1bd70de2a9ea6523d447a861f486) --- lib/ansible/plugins/httpapi/nxos.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ansible/plugins/httpapi/nxos.py b/lib/ansible/plugins/httpapi/nxos.py index 3912de08f33..c85e526ef30 100644 --- a/lib/ansible/plugins/httpapi/nxos.py +++ b/lib/ansible/plugins/httpapi/nxos.py @@ -123,7 +123,7 @@ def handle_response(response): if response['ins_api'].get('outputs'): for output in to_list(response['ins_api']['outputs']['output']): if output['code'] != '200': - raise ConnectionError('%s: %s' % (output['input'], output['msg'])) + raise ConnectionError('%s: %s' % (output['input'], output['msg']), code=output['code']) elif 'body' in output: result = output['body'] if isinstance(result, dict):