Fix 'defaults' option in the nxos_config module (#51076)

* Fix 'defaults' option in the nxos_config module

Nxos get_config is allways called with the 'all' option.
* Fix flag's calculation
* Add tests

* nxos_config: the 'backup' option take into account the value of 'defaults' option

If 'defaults' option is true, the running-config backup is done with the all
keyword.
This commit is contained in:
Olivier BLIN 2019-01-23 06:59:27 +01:00 committed by Trishna Guha
parent 7eab04e975
commit 87a01df6ad
2 changed files with 29 additions and 5 deletions

View file

@ -263,13 +263,12 @@ from ansible.module_utils.network.nxos.nxos import check_args as nxos_check_args
from ansible.module_utils.network.common.utils import to_list
def get_running_config(module, config=None):
def get_running_config(module, config=None, flags=None):
contents = module.params['running_config']
if not contents:
if not module.params['defaults'] and config:
if config:
contents = config
else:
flags = ['all']
contents = get_config(module, flags=flags)
return contents
@ -365,13 +364,14 @@ def main():
path = module.params['parents']
connection = get_connection(module)
contents = None
flags = ['all'] if module.params['defaults'] else []
replace_src = module.params['replace_src']
if replace_src:
if module.params['replace'] != 'config':
module.fail_json(msg='replace: config is required with replace_src')
if module.params['backup'] or (module._diff and module.params['diff_against'] == 'running'):
contents = get_config(module)
contents = get_config(module, flags=flags)
config = NetworkConfig(indent=2, contents=contents)
if module.params['backup']:
result['__backup__'] = contents
@ -382,7 +382,7 @@ def main():
commit = not module.check_mode
candidate = get_candidate(module)
running = get_running_config(module, contents)
running = get_running_config(module, contents, flags=flags)
if replace_src:
commands = candidate.split('\n')
result['commands'] = result['updates'] = commands

View file

@ -198,3 +198,27 @@ class TestNxosConfigModule(TestNxosModule):
self.assertEqual(self.save_config.call_count, 0)
self.assertEqual(self.get_config.call_count, 0)
self.assertEqual(self.load_config.call_count, 0)
def test_nxos_config_defaults_false(self):
set_module_args(dict(lines=['hostname localhost'], defaults=False))
result = self.execute_module(changed=True)
self.assertEqual(self.get_config.call_count, 1)
self.assertEqual(self.get_config.call_args[1], dict(flags=[]))
def test_nxos_config_defaults_true(self):
set_module_args(dict(lines=['hostname localhost'], defaults=True))
result = self.execute_module(changed=True)
self.assertEqual(self.get_config.call_count, 1)
self.assertEqual(self.get_config.call_args[1], dict(flags=['all']))
def test_nxos_config_defaults_false_backup_true(self):
set_module_args(dict(lines=['hostname localhost'], defaults=False, backup=True))
result = self.execute_module(changed=True)
self.assertEqual(self.get_config.call_count, 1)
self.assertEqual(self.get_config.call_args[1], dict(flags=[]))
def test_nxos_config_defaults_true_backup_true(self):
set_module_args(dict(lines=['hostname localhost'], defaults=True, backup=True))
result = self.execute_module(changed=True)
self.assertEqual(self.get_config.call_count, 1)
self.assertEqual(self.get_config.call_args[1], dict(flags=['all']))