Skip to content

Commit

Permalink
Fix diff_ignore_lines option issue for candidate configuration (#45201)
Browse files Browse the repository at this point in the history
* Fix diff_ignore_lines option issue for candidate configuration

*  diff_ignore_lines option is to handle the running config fetch from
   remote host and ignore the lines that are auto updated eg: commit time and date
*  This option should not be used while processing candidate (input) configuration

* Fix review comment

(cherry picked from commit a3c137c)
  • Loading branch information
ganeshrn authored and abadger committed Sep 6, 2018
1 parent 22f50e4 commit d3225b0
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 4 deletions.
2 changes: 1 addition & 1 deletion lib/ansible/plugins/cliconf/eos.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ def get_diff(self, candidate=None, running=None, diff_match='line', diff_ignore_
raise ValueError("'replace' value %s in invalid, valid values are %s" % (diff_replace, ', '.join(option_values['diff_replace'])))

# prepare candidate configuration
candidate_obj = NetworkConfig(indent=3, ignore_lines=diff_ignore_lines)
candidate_obj = NetworkConfig(indent=3)
candidate_obj.load(candidate)

if running and diff_match != 'none' and diff_replace != 'config':
Expand Down
2 changes: 1 addition & 1 deletion lib/ansible/plugins/cliconf/ios.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ def get_diff(self, candidate=None, running=None, diff_match='line', diff_ignore_
raise ValueError("'replace' value %s in invalid, valid values are %s" % (diff_replace, ', '.join(option_values['diff_replace'])))

# prepare candidate configuration
candidate_obj = NetworkConfig(indent=1, ignore_lines=diff_ignore_lines)
candidate_obj = NetworkConfig(indent=1)
want_src, want_banners = self._extract_banners(candidate)
candidate_obj.load(want_src)

Expand Down
2 changes: 1 addition & 1 deletion lib/ansible/plugins/cliconf/iosxr.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ def get_diff(self, candidate=None, running=None, diff_match='line', diff_ignore_

# prepare candidate configuration
sanitized_candidate = sanitize_config(candidate)
candidate_obj = NetworkConfig(indent=1, ignore_lines=diff_ignore_lines)
candidate_obj = NetworkConfig(indent=1)
candidate_obj.load(sanitized_candidate)

if running and diff_match != 'none':
Expand Down
2 changes: 1 addition & 1 deletion lib/ansible/plugins/cliconf/nxos.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ def get_diff(self, candidate=None, running=None, diff_match='line', diff_ignore_
raise ValueError("'replace' value %s in invalid, valid values are %s" % (diff_replace, ', '.join(option_values['diff_replace'])))

# prepare candidate configuration
candidate_obj = NetworkConfig(indent=2, ignore_lines=diff_ignore_lines)
candidate_obj = NetworkConfig(indent=2)
candidate_obj.load(candidate)

if running and diff_match != 'none' and diff_replace != 'config':
Expand Down
30 changes: 30 additions & 0 deletions test/integration/targets/ios_config/tests/cli/src_basic.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,34 @@
# FIXME Bug https://github.com/ansible/ansible/issues/19382
# - "result.updates is not defined"

- name: check for empty diff
ios_config:
running_config: |
service timestamps debug datetime msec
service timestamps log datetime msec
lines:
- service timestamps debug datetime msec
- service timestamps log datetime msec
check_mode: True
register: result
- assert:
that:
- "result.updates is undefined"

- name: check for diff with ignore lines for running config
ios_config:
running_config: |
service timestamps debug datetime msec
service timestamps log datetime msec
lines:
- service timestamps debug datetime msec
- service timestamps log datetime msec
diff_ignore_lines: service timestamps log datetime msec
check_mode: True
register: result

- assert:
that:
- "'service timestamps log datetime msec' in result.updates"

- debug: msg="END cli/src_basic.yaml on connection={{ ansible_connection }}"

0 comments on commit d3225b0

Please sign in to comment.