From 633b16d11626eb220f634a6166d856b178a77e99 Mon Sep 17 00:00:00 2001 From: Peter Sprygada Date: Sun, 31 Jan 2016 20:03:15 -0500 Subject: [PATCH] add exeception handling for invalid commands over nxapi This commit will catch invalid commands being send over nxapi and call fail_json on the module. The nxos shared module will now return the failure --- lib/ansible/module_utils/nxos.py | 35 +++++++++++++++++--------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/lib/ansible/module_utils/nxos.py b/lib/ansible/module_utils/nxos.py index 7a523dbae4..c2d49c9002 100644 --- a/lib/ansible/module_utils/nxos.py +++ b/lib/ansible/module_utils/nxos.py @@ -100,8 +100,8 @@ class Nxapi(object): headers = {'Content-Type': 'application/json'} - response, headers = fetch_url(self.module, self.url, data=data, headers=headers, - method='POST') + response, headers = fetch_url(self.module, self.url, data=data, + headers=headers, method='POST') if headers['status'] != 200: self.module.fail_json(**headers) @@ -109,20 +109,22 @@ class Nxapi(object): response = self.module.from_json(response.read()) result = list() - output = response['ins_api']['outputs']['output'] - if isinstance(output, list): - for item in response['ins_api']['outputs']['output']: - if item['code'] != '200': - self.module.fail_json(msg=item['msg'], command=item['input'], - code=item['code']) - else: - result.append(item['body']) - elif output['code'] != '200': - self.module.fail_json(msg=item['msg'], command=item['input'], - code=item['code']) - else: - result.append(output['body']) - + try: + output = response['ins_api']['outputs']['output'] + if isinstance(output, list): + for item in response['ins_api']['outputs']['output']: + if item['code'] != '200': + self.module.fail_json(msg=item['msg'], command=item['input'], + code=item['code']) + else: + result.append(item['body']) + elif output['code'] != '200': + self.module.fail_json(msg=item['msg'], command=item['input'], + code=item['code']) + else: + result.append(output['body']) + except Exception: + self.module.fail_json(**headers) return result @@ -200,6 +202,7 @@ class NetworkModule(AnsibleModule): cmd = 'show running-config' if self.params.get('include_defaults'): cmd += ' all' + if self.params['transport'] == 'cli': return self.execute(cmd)[0] else: