* Fixes #30281 Configure login prompt for eos_banner * Fix unit test * Fix pep8 issue
This commit is contained in:
parent
ec59650528
commit
3ff527b1d2
3 changed files with 29 additions and 7 deletions
|
@ -92,8 +92,10 @@ session_name:
|
|||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.eos import load_config, run_commands
|
||||
from ansible.module_utils.eos import eos_argument_spec, check_args
|
||||
from ansible.module_utils.six import string_types
|
||||
from ansible.module_utils._text import to_text
|
||||
|
||||
|
||||
def map_obj_to_commands(updates, module):
|
||||
commands = list()
|
||||
want, have = updates
|
||||
|
@ -106,7 +108,7 @@ def map_obj_to_commands(updates, module):
|
|||
commands.append({'cmd': 'no banner %s' % module.params['banner']})
|
||||
|
||||
elif state == 'present':
|
||||
if isinstance(have['text'], str):
|
||||
if isinstance(have['text'], string_types):
|
||||
if want['text'] != have['text']:
|
||||
commands.append('banner %s' % module.params['banner'])
|
||||
commands.extend(want['text'].strip().split('\n'))
|
||||
|
@ -122,7 +124,6 @@ def map_obj_to_commands(updates, module):
|
|||
commands.append({'cmd': 'banner %s' % module.params['banner'],
|
||||
'input': want['text'].strip('\n')})
|
||||
|
||||
|
||||
return commands
|
||||
|
||||
def map_config_to_obj(module):
|
||||
|
@ -139,7 +140,7 @@ def map_config_to_obj(module):
|
|||
else:
|
||||
banner_response_key = 'motd'
|
||||
if isinstance(output[0], dict) and banner_response_key in output[0].keys():
|
||||
obj['text'] = output[0][banner_response_key].strip('\n')
|
||||
obj['text'] = output[0]
|
||||
obj['state'] = 'present'
|
||||
return obj
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ class AnsibleFailJson(Exception):
|
|||
|
||||
class TestEosModule(unittest.TestCase):
|
||||
|
||||
def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False, transport='cli'):
|
||||
def execute_module(self, failed=False, changed=False, commands=None, inputs=None, sort=True, defaults=False, transport='cli'):
|
||||
|
||||
self.load_fixtures(commands, transport=transport)
|
||||
|
||||
|
@ -76,6 +76,20 @@ class TestEosModule(unittest.TestCase):
|
|||
self.assertEqual(result['changed'], changed, result)
|
||||
|
||||
if commands is not None:
|
||||
if transport == 'eapi':
|
||||
cmd = []
|
||||
value = []
|
||||
for item in result['commands']:
|
||||
cmd.append(item['cmd'])
|
||||
if 'input' in item:
|
||||
value.append(item['input'])
|
||||
if sort:
|
||||
self.assertEqual(sorted(commands), sorted(cmd), cmd)
|
||||
else:
|
||||
self.assertEqual(commands, cmd, cmd)
|
||||
if inputs:
|
||||
self.assertEqual(inputs, value, value)
|
||||
else:
|
||||
if sort:
|
||||
self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
|
||||
else:
|
||||
|
|
|
@ -58,6 +58,13 @@ class TestEosBannerModule(TestEosModule):
|
|||
commands = ['no banner login']
|
||||
self.execute_module(changed=True, commands=commands)
|
||||
|
||||
def test_eos_banner_create_with_eapi_transport(self):
|
||||
set_module_args(dict(banner='login', text='test\nbanner\nstring',
|
||||
transport='eapi'))
|
||||
commands = ['banner login']
|
||||
inputs = ['test\nbanner\nstring']
|
||||
self.execute_module(changed=True, commands=commands, inputs=inputs, transport='eapi')
|
||||
|
||||
def test_eos_banner_remove_with_eapi_transport(self):
|
||||
set_module_args(dict(banner='login', state='absent', transport='eapi'))
|
||||
commands = ['no banner login']
|
||||
|
|
Loading…
Reference in a new issue