Fixes #30281 eos_banner integration test failure (#30283)

* Fixes #30281 Configure login prompt for eos_banner

* Fix unit test

* Fix pep8 issue
pull/30336/head
Ganesh Nalawade 7 years ago committed by GitHub
parent ec59650528
commit 3ff527b1d2

@ -92,8 +92,10 @@ session_name:
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.eos import load_config, run_commands 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.eos import eos_argument_spec, check_args
from ansible.module_utils.six import string_types
from ansible.module_utils._text import to_text from ansible.module_utils._text import to_text
def map_obj_to_commands(updates, module): def map_obj_to_commands(updates, module):
commands = list() commands = list()
want, have = updates want, have = updates
@ -106,7 +108,7 @@ def map_obj_to_commands(updates, module):
commands.append({'cmd': 'no banner %s' % module.params['banner']}) commands.append({'cmd': 'no banner %s' % module.params['banner']})
elif state == 'present': elif state == 'present':
if isinstance(have['text'], str): if isinstance(have['text'], string_types):
if want['text'] != have['text']: if want['text'] != have['text']:
commands.append('banner %s' % module.params['banner']) commands.append('banner %s' % module.params['banner'])
commands.extend(want['text'].strip().split('\n')) 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'], commands.append({'cmd': 'banner %s' % module.params['banner'],
'input': want['text'].strip('\n')}) 'input': want['text'].strip('\n')})
return commands return commands
def map_config_to_obj(module): def map_config_to_obj(module):
@ -139,7 +140,7 @@ def map_config_to_obj(module):
else: else:
banner_response_key = 'motd' banner_response_key = 'motd'
if isinstance(output[0], dict) and banner_response_key in output[0].keys(): 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' obj['state'] = 'present'
return obj return obj

@ -64,7 +64,7 @@ class AnsibleFailJson(Exception):
class TestEosModule(unittest.TestCase): 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) self.load_fixtures(commands, transport=transport)
@ -76,10 +76,24 @@ class TestEosModule(unittest.TestCase):
self.assertEqual(result['changed'], changed, result) self.assertEqual(result['changed'], changed, result)
if commands is not None: if commands is not None:
if sort: if transport == 'eapi':
self.assertEqual(sorted(commands), sorted(result['commands']), result['commands']) 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: else:
self.assertEqual(commands, result['commands'], result['commands']) if sort:
self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
else:
self.assertEqual(commands, result['commands'], result['commands'])
return result return result

@ -58,6 +58,13 @@ class TestEosBannerModule(TestEosModule):
commands = ['no banner login'] commands = ['no banner login']
self.execute_module(changed=True, commands=commands) 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): def test_eos_banner_remove_with_eapi_transport(self):
set_module_args(dict(banner='login', state='absent', transport='eapi')) set_module_args(dict(banner='login', state='absent', transport='eapi'))
commands = ['no banner login'] commands = ['no banner login']

Loading…
Cancel
Save