From 87a01df6ad9c80796a32da0639d2e088a3c4ff90 Mon Sep 17 00:00:00 2001 From: Olivier BLIN Date: Wed, 23 Jan 2019 06:59:27 +0100 Subject: [PATCH] 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. --- .../modules/network/nxos/nxos_config.py | 10 ++++---- .../modules/network/nxos/test_nxos_config.py | 24 +++++++++++++++++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/lib/ansible/modules/network/nxos/nxos_config.py b/lib/ansible/modules/network/nxos/nxos_config.py index 69ec50e2597..5f34a8fcdeb 100644 --- a/lib/ansible/modules/network/nxos/nxos_config.py +++ b/lib/ansible/modules/network/nxos/nxos_config.py @@ -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 diff --git a/test/units/modules/network/nxos/test_nxos_config.py b/test/units/modules/network/nxos/test_nxos_config.py index bff8cc6d7e4..37d1f164e8a 100644 --- a/test/units/modules/network/nxos/test_nxos_config.py +++ b/test/units/modules/network/nxos/test_nxos_config.py @@ -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']))