fixes ios and eos command modules (#20989)

* returns support for prompt/response over cli
* now sends native dict instead of str command
* fixes issue with run_commands() in ios to jsonify request
* updates unit test cases
This commit is contained in:
Peter Sprygada 2017-02-02 22:10:14 -05:00 committed by GitHub
parent 62c97cdd3e
commit d226f31a0f
5 changed files with 8 additions and 10 deletions

View file

@ -47,6 +47,7 @@ def get_config(module, flags=[]):
def run_commands(module, commands, check_rc=True): def run_commands(module, commands, check_rc=True):
responses = list() responses = list()
for cmd in to_list(commands): for cmd in to_list(commands):
cmd = module.jsonify(cmd)
rc, out, err = module.exec_command(cmd) rc, out, err = module.exec_command(cmd)
if check_rc and rc != 0: if check_rc and rc != 0:
module.fail_json(msg=err, rc=rc) module.fail_json(msg=err, rc=rc)

View file

@ -165,14 +165,14 @@ def to_lines(stdout):
return lines return lines
def parse_commands(module, warnings): def parse_commands(module, warnings):
cast = ComplexList(dict( transform = ComplexList(dict(
command=dict(key=True), command=dict(key=True),
output=dict(), output=dict(),
prompt=dict(), prompt=dict(),
response=dict() response=dict()
)) ))
commands = cast(module.params['commands']) commands = transform(module.params['commands'])
for index, item in enumerate(commands): for index, item in enumerate(commands):
if module.check_mode and not item['command'].startswith('show'): if module.check_mode and not item['command'].startswith('show'):
@ -180,6 +180,7 @@ def parse_commands(module, warnings):
'Only show commands are supported when using check_mode, not ' 'Only show commands are supported when using check_mode, not '
'executing %s' % item['command'] 'executing %s' % item['command']
) )
return commands return commands
def to_cli(obj): def to_cli(obj):
@ -223,8 +224,6 @@ def main():
interval = module.params['interval'] interval = module.params['interval']
match = module.params['match'] match = module.params['match']
commands = [to_cli(c) for c in commands]
while retries > 0: while retries > 0:
responses = run_commands(module, commands) responses = run_commands(module, commands)

View file

@ -188,7 +188,6 @@ def parse_commands(module, warnings):
response=dict() response=dict()
)) ))
commands = command(module.params['commands']) commands = command(module.params['commands'])
for index, item in enumerate(commands): for index, item in enumerate(commands):
if module.check_mode and not item['command'].startswith('show'): if module.check_mode and not item['command'].startswith('show'):
warnings.append( warnings.append(
@ -200,7 +199,6 @@ def parse_commands(module, warnings):
msg='ios_command does not support running config mode ' msg='ios_command does not support running config mode '
'commands. Please use ios_config instead' 'commands. Please use ios_config instead'
) )
commands[index] = module.jsonify(item)
return commands return commands
def main(): def main():

View file

@ -72,10 +72,10 @@ class test_EosCommandModule(unittest.TestCase):
for item in commands: for item in commands:
try: try:
obj = json.loads(item) obj = json.loads(item['command'])
command = obj['command'] command = obj['command']
except ValueError: except ValueError:
command = item command = item['command']
filename = str(command).replace(' ', '_') filename = str(command).replace(' ', '_')
filename = 'eos_command_%s.txt' % filename filename = 'eos_command_%s.txt' % filename
output.append(load_fixture(filename)) output.append(load_fixture(filename))

View file

@ -72,10 +72,10 @@ class test_iosCommandModule(unittest.TestCase):
for item in commands: for item in commands:
try: try:
obj = json.loads(item) obj = json.loads(item['command'])
command = obj['command'] command = obj['command']
except ValueError: except ValueError:
command = item command = item['command']
filename = str(command).replace(' ', '_') filename = str(command).replace(' ', '_')
output.append(load_fixture(filename)) output.append(load_fixture(filename))
return output return output