Fix diff_ignore_lines option issue for candidate configuration (#45201)

* 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
This commit is contained in:
Ganesh Nalawade 2018-09-06 23:54:56 +05:30 committed by GitHub
parent 64c594d226
commit a3c137c1ab
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 34 additions and 4 deletions

View file

@ -214,7 +214,7 @@ class Cliconf(CliconfBase):
raise ValueError("'replace' value %s in invalid, valid values are %s" % (diff_replace, ', '.join(option_values['diff_replace']))) raise ValueError("'replace' value %s in invalid, valid values are %s" % (diff_replace, ', '.join(option_values['diff_replace'])))
# prepare candidate configuration # prepare candidate configuration
candidate_obj = NetworkConfig(indent=3, ignore_lines=diff_ignore_lines) candidate_obj = NetworkConfig(indent=3)
candidate_obj.load(candidate) candidate_obj.load(candidate)
if running and diff_match != 'none' and diff_replace != 'config': if running and diff_match != 'none' and diff_replace != 'config':

View file

@ -105,7 +105,7 @@ class Cliconf(CliconfBase):
raise ValueError("'replace' value %s in invalid, valid values are %s" % (diff_replace, ', '.join(option_values['diff_replace']))) raise ValueError("'replace' value %s in invalid, valid values are %s" % (diff_replace, ', '.join(option_values['diff_replace'])))
# prepare candidate configuration # 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) want_src, want_banners = self._extract_banners(candidate)
candidate_obj.load(want_src) candidate_obj.load(want_src)

View file

@ -132,7 +132,7 @@ class Cliconf(CliconfBase):
# prepare candidate configuration # prepare candidate configuration
sanitized_candidate = sanitize_config(candidate) 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) candidate_obj.load(sanitized_candidate)
if running and diff_match != 'none': if running and diff_match != 'none':

View file

@ -115,7 +115,7 @@ class Cliconf(CliconfBase):
raise ValueError("'replace' value %s in invalid, valid values are %s" % (diff_replace, ', '.join(option_values['diff_replace']))) raise ValueError("'replace' value %s in invalid, valid values are %s" % (diff_replace, ', '.join(option_values['diff_replace'])))
# prepare candidate configuration # prepare candidate configuration
candidate_obj = NetworkConfig(indent=2, ignore_lines=diff_ignore_lines) candidate_obj = NetworkConfig(indent=2)
candidate_obj.load(candidate) candidate_obj.load(candidate)
if running and diff_match != 'none' and diff_replace != 'config': if running and diff_match != 'none' and diff_replace != 'config':

View file

@ -37,4 +37,34 @@
# FIXME Bug https://github.com/ansible/ansible/issues/19382 # FIXME Bug https://github.com/ansible/ansible/issues/19382
# - "result.updates is not defined" # - "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 }}" - debug: msg="END cli/src_basic.yaml on connection={{ ansible_connection }}"