mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Adding changed option to save_when for aireos (#40681)
* Adding changed option to save_when for aireos * Deprecating save option for aireos_config. * Updating version_added to 2.7 since the PR missed the window for 2.6
This commit is contained in:
parent
5350d0697f
commit
083ddb9bc2
2 changed files with 69 additions and 15 deletions
|
@ -82,11 +82,29 @@ options:
|
||||||
aliases: ['config']
|
aliases: ['config']
|
||||||
save:
|
save:
|
||||||
description:
|
description:
|
||||||
- The C(save) argument instructs the module to save the running-
|
- The C(save) argument instructs the module to save the
|
||||||
config to the startup-config at the conclusion of the module
|
running-config to startup-config. This operation is performed
|
||||||
running. If check mode is specified, this argument is ignored.
|
after any changes are made to the current running config. If
|
||||||
|
no changes are made, the configuration is still saved to the
|
||||||
|
startup config. This option will always cause the module to
|
||||||
|
return changed. This argument is mutually exclusive with I(save_when).
|
||||||
|
- This option is deprecated as of Ansible 2.7, use C(save_when)
|
||||||
type: bool
|
type: bool
|
||||||
default: 'no'
|
default: 'no'
|
||||||
|
save_when:
|
||||||
|
description:
|
||||||
|
- When changes are made to the device running-configuration, the
|
||||||
|
changes are not copied to non-volatile storage by default. Using
|
||||||
|
this argument will change that. If the argument is set to
|
||||||
|
I(always), then the running-config will always be copied to the
|
||||||
|
startup-config and the module will always return as changed.
|
||||||
|
If the argument is set to I(never), the running-config will never
|
||||||
|
be copied to the startup-config. If the argument is set to I(changed),
|
||||||
|
then the running-config will only be copied to the startup-config if
|
||||||
|
the task has made a change.
|
||||||
|
default: never
|
||||||
|
choices: ['always', 'never', 'changed']
|
||||||
|
version_added: "2.7"
|
||||||
diff_against:
|
diff_against:
|
||||||
description:
|
description:
|
||||||
- When using the C(ansible-playbook --diff) command line argument
|
- When using the C(ansible-playbook --diff) command line argument
|
||||||
|
@ -178,6 +196,16 @@ def get_candidate(module):
|
||||||
return candidate
|
return candidate
|
||||||
|
|
||||||
|
|
||||||
|
def save_config(module, result):
|
||||||
|
result['changed'] = True
|
||||||
|
if not module.check_mode:
|
||||||
|
command = {"command": "save config", "prompt": "Are you sure you want to save", "answer": "y"}
|
||||||
|
run_commands(module, command)
|
||||||
|
else:
|
||||||
|
module.warn('Skipping command `save config` due to check_mode. Configuration not copied to '
|
||||||
|
'non-volatile storage')
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
""" main entry point for module execution
|
""" main entry point for module execution
|
||||||
"""
|
"""
|
||||||
|
@ -196,7 +224,9 @@ def main():
|
||||||
|
|
||||||
backup=dict(type='bool', default=False),
|
backup=dict(type='bool', default=False),
|
||||||
|
|
||||||
save=dict(type='bool', default=False),
|
# save is deprecated as of 2.7, use save_when instead
|
||||||
|
save=dict(type='bool', default=False, removed_in_version='2.11'),
|
||||||
|
save_when=dict(choices=['always', 'never', 'changed'], default='never'),
|
||||||
|
|
||||||
diff_against=dict(choices=['running', 'intended']),
|
diff_against=dict(choices=['running', 'intended']),
|
||||||
diff_ignore_lines=dict(type='list')
|
diff_ignore_lines=dict(type='list')
|
||||||
|
@ -204,7 +234,8 @@ def main():
|
||||||
|
|
||||||
argument_spec.update(aireos_argument_spec)
|
argument_spec.update(aireos_argument_spec)
|
||||||
|
|
||||||
mutually_exclusive = [('lines', 'src')]
|
mutually_exclusive = [('lines', 'src'),
|
||||||
|
('save', 'save_when')]
|
||||||
|
|
||||||
required_if = [('diff_against', 'intended', ['intended_config'])]
|
required_if = [('diff_against', 'intended', ['intended_config'])]
|
||||||
|
|
||||||
|
@ -255,13 +286,10 @@ def main():
|
||||||
|
|
||||||
diff_ignore_lines = module.params['diff_ignore_lines']
|
diff_ignore_lines = module.params['diff_ignore_lines']
|
||||||
|
|
||||||
if module.params['save']:
|
if module.params['save_when'] == 'always' or module.params['save']:
|
||||||
result['changed'] = True
|
save_config(module, result)
|
||||||
if not module.check_mode:
|
elif module.params['save_when'] == 'changed' and result['changed']:
|
||||||
command = {"command": "save config", "prompt": "Are you sure you want to save", "answer": "y"}
|
save_config(module, result)
|
||||||
run_commands(module, command)
|
|
||||||
else:
|
|
||||||
module.warn('Skipping command `save config` due to check_mode. Configuration not copied to non-volatile storage')
|
|
||||||
|
|
||||||
if module._diff:
|
if module._diff:
|
||||||
output = run_commands(module, 'show run-config commands')
|
output = run_commands(module, 'show run-config commands')
|
||||||
|
|
|
@ -42,6 +42,9 @@ class TestCiscoWlcConfigModule(TestCiscoWlcModule):
|
||||||
self.mock_run_commands = patch('ansible.modules.network.aireos.aireos_config.run_commands')
|
self.mock_run_commands = patch('ansible.modules.network.aireos.aireos_config.run_commands')
|
||||||
self.run_commands = self.mock_run_commands.start()
|
self.run_commands = self.mock_run_commands.start()
|
||||||
|
|
||||||
|
self.mock_save_config = patch('ansible.modules.network.aireos.aireos_config.save_config')
|
||||||
|
self.save_config = self.mock_save_config.start()
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
super(TestCiscoWlcConfigModule, self).tearDown()
|
super(TestCiscoWlcConfigModule, self).tearDown()
|
||||||
self.mock_get_config.stop()
|
self.mock_get_config.stop()
|
||||||
|
@ -70,10 +73,9 @@ class TestCiscoWlcConfigModule(TestCiscoWlcModule):
|
||||||
self.assertIn('__backup__', result)
|
self.assertIn('__backup__', result)
|
||||||
|
|
||||||
def test_aireos_config_save(self):
|
def test_aireos_config_save(self):
|
||||||
self.run_commands.return_value = "sysname foo"
|
|
||||||
set_module_args(dict(save=True))
|
set_module_args(dict(save=True))
|
||||||
self.execute_module(changed=True)
|
self.execute_module()
|
||||||
self.assertEqual(self.run_commands.call_count, 1)
|
self.assertEqual(self.save_config.call_count, 1)
|
||||||
self.assertEqual(self.get_config.call_count, 0)
|
self.assertEqual(self.get_config.call_count, 0)
|
||||||
self.assertEqual(self.load_config.call_count, 0)
|
self.assertEqual(self.load_config.call_count, 0)
|
||||||
|
|
||||||
|
@ -103,3 +105,27 @@ class TestCiscoWlcConfigModule(TestCiscoWlcModule):
|
||||||
lines = ['sysname router', 'interface create mtc-1 1']
|
lines = ['sysname router', 'interface create mtc-1 1']
|
||||||
set_module_args(dict(lines=lines, match='none'))
|
set_module_args(dict(lines=lines, match='none'))
|
||||||
self.execute_module(changed=True, commands=lines, sort=False)
|
self.execute_module(changed=True, commands=lines, sort=False)
|
||||||
|
|
||||||
|
def test_nxos_config_save_always(self):
|
||||||
|
args = dict(save_when='always')
|
||||||
|
set_module_args(args)
|
||||||
|
self.execute_module()
|
||||||
|
self.assertEqual(self.save_config.call_count, 1)
|
||||||
|
self.assertEqual(self.get_config.call_count, 0)
|
||||||
|
self.assertEqual(self.load_config.call_count, 0)
|
||||||
|
|
||||||
|
def test_nxos_config_save_changed_true(self):
|
||||||
|
args = dict(save_when='changed', lines=['sysname foo', 'interface create mtc-3 3'])
|
||||||
|
set_module_args(args)
|
||||||
|
self.execute_module(changed=True)
|
||||||
|
self.assertEqual(self.save_config.call_count, 1)
|
||||||
|
self.assertEqual(self.get_config.call_count, 1)
|
||||||
|
self.assertEqual(self.load_config.call_count, 1)
|
||||||
|
|
||||||
|
def test_nxos_config_save_changed_false(self):
|
||||||
|
args = dict(save_when='changed')
|
||||||
|
set_module_args(args)
|
||||||
|
self.execute_module()
|
||||||
|
self.assertEqual(self.save_config.call_count, 0)
|
||||||
|
self.assertEqual(self.get_config.call_count, 0)
|
||||||
|
self.assertEqual(self.load_config.call_count, 0)
|
||||||
|
|
Loading…
Reference in a new issue