From f91cda4b02b0416e95da7c89aa2e98cd15d0b687 Mon Sep 17 00:00:00 2001 From: Ganesh Nalawade Date: Thu, 29 Mar 2018 19:00:15 +0530 Subject: [PATCH] Fix junos modules check_mode issue (#37311) (#37918) Fixes #37208 If check_mode is enabled instead of committing th config need to discard all the chnages to cnadidate db In case of cli to discard changes issue `rollback 0` command and for netconf execute `discard-changes` rpc call (cherry picked from commit 8eaa9cc9380cadf1e81afc01f44637d796e109e8) --- lib/ansible/module_utils/network/junos/junos.py | 4 ++-- lib/ansible/plugins/cliconf/junos.py | 6 ++---- .../targets/junos_banner/tests/netconf/basic.yaml | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/lib/ansible/module_utils/network/junos/junos.py b/lib/ansible/module_utils/network/junos/junos.py index 2a1d085492..c626c466b2 100644 --- a/lib/ansible/module_utils/network/junos/junos.py +++ b/lib/ansible/module_utils/network/junos/junos.py @@ -180,9 +180,9 @@ def locked_config(module): unlock_configuration(module) -def discard_changes(module, exit=False): +def discard_changes(module): conn = get_connection(module) - return conn.discard_changes(exit=exit) + return conn.discard_changes() def get_diff(module, rollback='0'): diff --git a/lib/ansible/plugins/cliconf/junos.py b/lib/ansible/plugins/cliconf/junos.py index 32fd19a14a..2f0cb92d49 100644 --- a/lib/ansible/plugins/cliconf/junos.py +++ b/lib/ansible/plugins/cliconf/junos.py @@ -84,10 +84,8 @@ class Cliconf(CliconfBase): command += b' and-quit' return self.send_command(command) - def discard_changes(self, rollback_id=None): - command = b'rollback' - if rollback_id is not None: - command += b' %s' % int(rollback_id) + def discard_changes(self): + command = b'rollback 0' for cmd in chain(to_list(command), b'exit'): self.send_command(cmd) diff --git a/test/integration/targets/junos_banner/tests/netconf/basic.yaml b/test/integration/targets/junos_banner/tests/netconf/basic.yaml index f53c54696a..de1e0ed523 100644 --- a/test/integration/targets/junos_banner/tests/netconf/basic.yaml +++ b/test/integration/targets/junos_banner/tests/netconf/basic.yaml @@ -78,6 +78,20 @@ - "result.changed == true" - "'this is my login banner' in config.xml" +- name: check mode + junos_banner: + banner: login + text: this is not the login banner you're looking for + state: present + provider: "{{ netconf }}" + register: result + check_mode: yes + +- assert: + that: + - "result.changed == true" + - "result.failed == false" + - name: delete login banner junos_banner: banner: login