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
pull/20999/head
Peter Sprygada 8 years ago committed by GitHub
parent 62c97cdd3e
commit d226f31a0f

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

@ -165,14 +165,14 @@ def to_lines(stdout):
return lines
def parse_commands(module, warnings):
cast = ComplexList(dict(
transform = ComplexList(dict(
command=dict(key=True),
output=dict(),
prompt=dict(),
response=dict()
))
commands = cast(module.params['commands'])
commands = transform(module.params['commands'])
for index, item in enumerate(commands):
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 '
'executing %s' % item['command']
)
return commands
def to_cli(obj):
@ -223,8 +224,6 @@ def main():
interval = module.params['interval']
match = module.params['match']
commands = [to_cli(c) for c in commands]
while retries > 0:
responses = run_commands(module, commands)

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

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

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

Loading…
Cancel
Save