mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-25 03:41:25 -07:00
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:
parent
62c97cdd3e
commit
d226f31a0f
5 changed files with 8 additions and 10 deletions
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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():
|
||||||
|
|
|
@ -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))
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue