fix vyos_banner multiline string issue (#26383)

Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>
This commit is contained in:
Trishna Guha 2017-07-04 14:31:18 +05:30 committed by GitHub
parent df0864d801
commit ad3fe08aae
4 changed files with 8 additions and 11 deletions

View file

@ -100,11 +100,9 @@ def spec_to_commands(updates, module):
commands.append('delete system login banner %s' % module.params['banner'])
elif state == 'present':
if want['text'] and (want['text'] != have.get('text')):
if want['text'] and want['text'].encode().decode('unicode_escape') != have.get('text'):
banner_cmd = 'set system login banner %s ' % module.params['banner']
banner_cmd += "'"
banner_cmd += want['text'].strip()
banner_cmd += "'"
commands.append(banner_cmd)
return commands
@ -119,9 +117,8 @@ def config_to_dict(module):
if line.startswith('set system login banner %s' % obj['banner']):
match = re.findall(r'%s (.*)' % obj['banner'], line, re.M)
output = match
if output:
obj['text'] = output[0][1:-1]
obj['text'] = output[0].encode().decode('unicode_escape')
obj['state'] = 'present'
return obj
@ -130,7 +127,7 @@ def config_to_dict(module):
def map_params_to_obj(module):
text = module.params['text']
if text:
text = str(text).strip()
text = "%r" % (str(text).strip())
return {
'banner': module.params['banner'],

View file

@ -22,8 +22,8 @@
- assert:
that:
- "result.changed == true"
- "'this is my post-login banner' in result.commands"
- "'that has a multiline' in result.commands"
- "'this is my post-login banner' in result.commands[0]"
- "'that has a multiline' in result.commands[0]"
- name: Set post-login again (idempotent)
vyos_banner:

View file

@ -22,8 +22,8 @@
- assert:
that:
- "result.changed == true"
- "'this is my pre-login banner' in result.commands"
- "'that has a multiline' in result.commands"
- "'this is my pre-login banner' in result.commands[0]"
- "'that has a multiline' in result.commands[0]"
- name: Set pre-login again (idempotent)
vyos_banner:

View file

@ -44,7 +44,7 @@ class TestVyosBannerModule(TestVyosModule):
def test_vyos_banner_create(self):
set_module_args(dict(banner='pre-login', text='test\nbanner\nstring'))
commands = ["set system login banner pre-login 'test\nbanner\nstring'"]
commands = ["set system login banner pre-login 'test\\nbanner\\nstring'"]
self.execute_module(changed=True, commands=commands)
def test_vyos_banner_remove(self):