From 37b053727971a8cf80d45c648667cc46f8e212bf Mon Sep 17 00:00:00 2001 From: Ganesh Nalawade Date: Thu, 9 Nov 2017 22:43:49 +0530 Subject: [PATCH] Fix ios_config file prompt issue (#32744) Fixes #23263 Add a carriage return (\r) at end on copy config command which results in prompt on cli terminal --- lib/ansible/modules/network/ios/ios_config.py | 2 +- .../targets/ios_config/tests/cli/save.yaml | 27 +++++++++++++++++-- .../modules/network/ios/test_ios_config.py | 2 +- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/lib/ansible/modules/network/ios/ios_config.py b/lib/ansible/modules/network/ios/ios_config.py index c5db4331b1e..80a0f19de88 100644 --- a/lib/ansible/modules/network/ios/ios_config.py +++ b/lib/ansible/modules/network/ios/ios_config.py @@ -483,7 +483,7 @@ def main(): if running_config.sha1 != startup_config.sha1 or module.params['save_when'] == 'always': result['changed'] = True if not module.check_mode: - run_commands(module, 'copy running-config startup-config') + run_commands(module, 'copy running-config startup-config\r') else: module.warn('Skipping command `copy running-config startup-config` ' 'due to check_mode. Configuration not copied to ' diff --git a/test/integration/targets/ios_config/tests/cli/save.yaml b/test/integration/targets/ios_config/tests/cli/save.yaml index a521a8888df..e74c11f634c 100644 --- a/test/integration/targets/ios_config/tests/cli/save.yaml +++ b/test/integration/targets/ios_config/tests/cli/save.yaml @@ -34,10 +34,33 @@ # FIXME https://github.com/ansible/ansible-modules-core/issues/5008 ignore_errors: true +- name: delete config (setup) + ios_config: + replace: line + lines: + - "ip http server" + save_when: modified + authorize: yes + register: result + +- name: save should always run + ios_config: + replace: line + lines: + - "ip http server" + save_when: modified + authorize: yes + register: result + - assert: that: - "result.changed == true" -# FIXME https://github.com/ansible/ansible-modules-core/issues/5008 - ignore_errors: true + +- name: teardown + ios_config: + lines: + - "no ip http server" + authorize: yes + register: result - debug: msg="END cli/save.yaml" diff --git a/test/units/modules/network/ios/test_ios_config.py b/test/units/modules/network/ios/test_ios_config.py index bf662124616..c6a5bcef464 100644 --- a/test/units/modules/network/ios/test_ios_config.py +++ b/test/units/modules/network/ios/test_ios_config.py @@ -76,7 +76,7 @@ class TestIosConfigModule(TestIosModule): self.assertEqual(self.get_config.call_count, 0) self.assertEqual(self.load_config.call_count, 0) args = self.run_commands.call_args[0][1] - self.assertIn('copy running-config startup-config', args) + self.assertIn('copy running-config startup-config\r', args) def test_ios_config_lines_wo_parents(self): set_module_args(dict(lines=['hostname foo']))