mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
- Fix to return error message back to the module. (#31035)
This commit is contained in:
parent
bedfd0a5a4
commit
916e6be888
3 changed files with 48 additions and 8 deletions
|
@ -150,10 +150,16 @@ class Cli:
|
|||
if check_rc and rc != 0:
|
||||
self._module.fail_json(msg=to_text(err, errors='surrogate_then_replace'))
|
||||
|
||||
try:
|
||||
out = self._module.from_json(out)
|
||||
except ValueError:
|
||||
out = str(out).strip()
|
||||
if not check_rc and rc != 0:
|
||||
try:
|
||||
out = self._module.from_json(err)
|
||||
except ValueError:
|
||||
out = to_text(err, errors='surrogate_then_replace').strip()
|
||||
else:
|
||||
try:
|
||||
out = self._module.from_json(out)
|
||||
except ValueError:
|
||||
out = to_text(out, errors='surrogate_then_replace').strip()
|
||||
|
||||
responses.append(out)
|
||||
return responses
|
||||
|
|
|
@ -107,7 +107,11 @@ def map_obj_to_commands(want, have, module):
|
|||
|
||||
|
||||
def map_config_to_obj(module):
|
||||
output = run_commands(module, ['show banner %s' % module.params['banner']])[0]
|
||||
output = run_commands(module, ['show banner %s' % module.params['banner']], False)[0]
|
||||
|
||||
if "Invalid command" in output:
|
||||
module.fail_json(msg="banner: exec may not be supported on this platform. Possible values are : exec | motd")
|
||||
|
||||
if isinstance(output, dict):
|
||||
output = list(output.values())[0]
|
||||
|
||||
|
@ -148,6 +152,7 @@ def main():
|
|||
supports_check_mode=True)
|
||||
|
||||
warnings = list()
|
||||
|
||||
check_args(module, warnings)
|
||||
|
||||
result = {'changed': False}
|
||||
|
@ -155,7 +160,6 @@ def main():
|
|||
result['warnings'] = warnings
|
||||
want = map_params_to_obj(module)
|
||||
have = map_config_to_obj(module)
|
||||
|
||||
commands = map_obj_to_commands(want, have, module)
|
||||
result['commands'] = commands
|
||||
|
||||
|
|
|
@ -42,12 +42,42 @@ class TestNxosBannerModule(TestNxosModule):
|
|||
def load_fixtures(self, commands=None, device=''):
|
||||
self.load_config.return_value = dict(diff=None, session='session')
|
||||
|
||||
def test_nxos_banner_create(self):
|
||||
def test_nxos_banner_exec_create(self):
|
||||
set_module_args(dict(banner='exec', text='test\nbanner\nstring'))
|
||||
commands = ['banner exec @\ntest\nbanner\nstring\n@']
|
||||
self.run_commands.return_value = commands
|
||||
self.execute_module(changed=True, commands=commands)
|
||||
|
||||
def test_nxos_banner_remove(self):
|
||||
def test_nxos_banner_exec_remove(self):
|
||||
set_module_args(dict(banner='exec', state='absent'))
|
||||
commands = ['no banner exec']
|
||||
self.run_commands.return_value = commands
|
||||
self.execute_module(changed=True, commands=commands)
|
||||
|
||||
def test_nxos_banner_exec_fail_create(self):
|
||||
set_module_args(dict(banner='exec', text='test\nbanner\nstring'))
|
||||
commands = ['banner exec @\ntest\nbanner\nstring\n@']
|
||||
err_rsp = ['Invalid command']
|
||||
self.run_commands.return_value = err_rsp
|
||||
result = self.execute_module(failed=True, changed=True)
|
||||
self.assertEqual(result['msg'], 'banner: exec may not be supported on this platform. Possible values are : exec | motd')
|
||||
|
||||
def test_nxos_banner_exec_fail_remove(self):
|
||||
set_module_args(dict(banner='exec', state='absent'))
|
||||
commands = ['no banner exec']
|
||||
err_rsp = ['Invalid command']
|
||||
self.run_commands.return_value = err_rsp
|
||||
result = self.execute_module(failed=True, changed=True)
|
||||
self.assertEqual(result['msg'], 'banner: exec may not be supported on this platform. Possible values are : exec | motd')
|
||||
|
||||
def test_nxos_banner_motd_create(self):
|
||||
set_module_args(dict(banner='motd', text='test\nbanner\nstring'))
|
||||
commands = ['banner motd @\ntest\nbanner\nstring\n@']
|
||||
self.run_commands.return_value = commands
|
||||
self.execute_module(changed=True, commands=commands)
|
||||
|
||||
def test_nxos_banner_motd_remove(self):
|
||||
set_module_args(dict(banner='motd', state='absent'))
|
||||
commands = ['no banner motd']
|
||||
self.run_commands.return_value = commands
|
||||
self.execute_module(changed=True, commands=commands)
|
||||
|
|
Loading…
Reference in a new issue