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:
parent
64c594d226
commit
a3c137c1ab
5 changed files with 34 additions and 4 deletions
|
@ -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':
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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':
|
||||||
|
|
|
@ -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':
|
||||||
|
|
|
@ -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 }}"
|
||||||
|
|
Loading…
Reference in a new issue