fixes junos_command module paring of wait_for strings (#5083)

The junos_command module wasn't properly parsing strings to apply
conditionals due to the return value not being converted to json
before the results where handed to the runner.
This commit is contained in:
Peter Sprygada 2016-09-28 20:58:33 -04:00 committed by Matt Clay
parent 9ed01d0cfd
commit 58a5ec6c51

View file

@ -151,12 +151,6 @@ failed_conditionals:
retured: failed retured: failed
type: list type: list
sample: ['...', '...'] sample: ['...', '...']
xml:
description: The raw XML reply from the device
returned: when format is xml
type: list
sample: [['...', '...'], ['...', '...']]
""" """
import ansible.module_utils.junos import ansible.module_utils.junos
@ -164,6 +158,7 @@ from ansible.module_utils.basic import get_exception
from ansible.module_utils.network import NetworkModule, NetworkError from ansible.module_utils.network import NetworkModule, NetworkError
from ansible.module_utils.netcli import CommandRunner from ansible.module_utils.netcli import CommandRunner
from ansible.module_utils.netcli import AddCommandError, FailedConditionsError from ansible.module_utils.netcli import AddCommandError, FailedConditionsError
from ansible.module_utils.netcli import FailedConditionalError
from ansible.module_utils.junos import xml_to_json from ansible.module_utils.junos import xml_to_json
from ansible.module_utils.six import string_types from ansible.module_utils.six import string_types
@ -279,24 +274,23 @@ def main():
except FailedConditionsError: except FailedConditionsError:
exc = get_exception() exc = get_exception()
module.fail_json(msg=str(exc), failed_conditions=exc.failed_conditions) module.fail_json(msg=str(exc), failed_conditions=exc.failed_conditions)
except FailedConditionalError:
exc = get_exception()
module.fail_json(msg=str(exc), failed_conditional=exc.failed_conditional)
except NetworkError: except NetworkError:
exc = get_exception() exc = get_exception()
module.fail_json(msg=str(exc)) module.fail_json(msg=str(exc))
result = dict(changed=False, stdout=list()) result = dict(changed=False, stdout=list())
xmlout = list()
for cmd in commands: for cmd in commands:
try: try:
output = runner.get_command(cmd['command'], cmd.get('output')) output = runner.get_command(cmd['command'], cmd.get('output'))
xmlout.append(output)
output = xml_to_json(output)
except ValueError: except ValueError:
output = 'command not executed due to check_mode, see warnings' output = 'command not executed due to check_mode, see warnings'
result['stdout'].append(output) result['stdout'].append(output)
result['warnings'] = warnings result['warnings'] = warnings
result['xml'] = xmlout
result['stdout_lines'] = list(to_lines(result['stdout'])) result['stdout_lines'] = list(to_lines(result['stdout']))
module.exit_json(**result) module.exit_json(**result)