From a5b32fa0d1358538b633b14103b540a7d9b9ad1d Mon Sep 17 00:00:00 2001 From: Peter Sprygada Date: Mon, 26 Sep 2016 17:45:35 -0400 Subject: [PATCH] fixes return passing output from command through jxmlease in junos_command (#5044) The return string from the commands was not being passed through the jxmlease library and therefore being returned as a string instead of a json data structure. This also adds back the missing xml key in the return that includes the raw xml string. fixes #5001 --- lib/ansible/modules/network/junos/junos_command.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/ansible/modules/network/junos/junos_command.py b/lib/ansible/modules/network/junos/junos_command.py index 3286b0614e7..fd81285824e 100644 --- a/lib/ansible/modules/network/junos/junos_command.py +++ b/lib/ansible/modules/network/junos/junos_command.py @@ -151,15 +151,23 @@ failed_conditionals: retured: failed type: list sample: ['...', '...'] + +xml: + description: The raw XML reply from the device + returned: when format is xml + type: list + sample: [['...', '...'], ['...', '...']] """ import re import ansible.module_utils.junos + from ansible.module_utils.basic import get_exception from ansible.module_utils.network import NetworkModule, NetworkError from ansible.module_utils.netcli import CommandRunner from ansible.module_utils.netcli import AddCommandError, FailedConditionsError +from ansible.module_utils.junos import xml_to_json VALID_KEYS = { 'cli': frozenset(['command', 'output', 'prompt', 'response']), @@ -270,15 +278,19 @@ def main(): module.fail_json(msg=str(exc)) result = dict(changed=False, stdout=list()) + xmlout = list() for cmd in commands: try: output = runner.get_command(cmd['command'], cmd.get('output')) + xmlout.append(output) + output = xml_to_json(output) except ValueError: output = 'command not executed due to check_mode, see warnings' result['stdout'].append(output) result['warnings'] = warnings + result['xml'] = xmlout result['stdout_lines'] = list(to_lines(result['stdout'])) module.exit_json(**result)