Fix in confirmed_commit capability in netconf_config modules (#46964)
* Fix in confirmed_commit capability in netconf_config modules
Fixes #46804
* If confirm value is greater than zero or confirm_commit option is set and confirmed-commit
capability is not supported but Netconf server only in that case fail the module
* Update confirm-commit flag
* Update changelog
(cherry picked from commit 5394638047
)
This commit is contained in:
parent
977f094741
commit
da07b58c3b
2 changed files with 15 additions and 6 deletions
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
bugfixes:
|
||||||
|
- netconf_config - Fix in confirmed_commit capability in netconf_config modules (https://github.com/ansible/ansible/pull/46778)
|
|
@ -123,7 +123,7 @@ options:
|
||||||
commit:
|
commit:
|
||||||
description:
|
description:
|
||||||
- This boolean flag controls if the configuration changes should be committed or not after editing the
|
- This boolean flag controls if the configuration changes should be committed or not after editing the
|
||||||
candidate datastore. This oprion is supported only if remote Netconf server supports :candidate
|
candidate datastore. This option is supported only if remote Netconf server supports :candidate
|
||||||
capability. If the value is set to I(False) commit won't be issued after edit-config operation
|
capability. If the value is set to I(False) commit won't be issued after edit-config operation
|
||||||
and user needs to handle commit or discard-changes explicitly.
|
and user needs to handle commit or discard-changes explicitly.
|
||||||
type: bool
|
type: bool
|
||||||
|
@ -305,8 +305,8 @@ def main():
|
||||||
if confirm_commit and not operations.get('supports_confirm_commit', False):
|
if confirm_commit and not operations.get('supports_confirm_commit', False):
|
||||||
module.fail_json(msg='confirm commit is not supported by Netconf server')
|
module.fail_json(msg='confirm commit is not supported by Netconf server')
|
||||||
|
|
||||||
if confirm_commit or (confirm > 0) and not operations.get('supports_confirm_commit', False):
|
if (confirm > 0) and not operations.get('supports_confirm_commit', False):
|
||||||
module.fail_json(msg='confirm commit is not supported by this netconf server')
|
module.fail_json(msg='confirm commit is not supported by this netconf server, given confirm timeout: %d' % confirm)
|
||||||
|
|
||||||
if validate and not operations.get('supports_validate', False):
|
if validate and not operations.get('supports_validate', False):
|
||||||
module.fail_json(msg='validate is not supported by this netconf server')
|
module.fail_json(msg='validate is not supported by this netconf server')
|
||||||
|
@ -323,6 +323,7 @@ def main():
|
||||||
|
|
||||||
result = {'changed': False, 'server_capabilities': capabilities.get('server_capabilities', [])}
|
result = {'changed': False, 'server_capabilities': capabilities.get('server_capabilities', [])}
|
||||||
before = None
|
before = None
|
||||||
|
after = None
|
||||||
locked = False
|
locked = False
|
||||||
try:
|
try:
|
||||||
if module.params['backup']:
|
if module.params['backup']:
|
||||||
|
@ -362,15 +363,20 @@ def main():
|
||||||
'error_option': module.params['error_option'],
|
'error_option': module.params['error_option'],
|
||||||
'format': module.params['format'],
|
'format': module.params['format'],
|
||||||
}
|
}
|
||||||
|
|
||||||
conn.edit_config(**kwargs)
|
conn.edit_config(**kwargs)
|
||||||
|
|
||||||
if supports_commit and module.params['commit']:
|
if supports_commit and module.params['commit']:
|
||||||
|
after = to_text(conn.get_config(source='candidate'), errors='surrogate_then_replace').strip()
|
||||||
if not module.check_mode:
|
if not module.check_mode:
|
||||||
timeout = confirm if confirm > 0 else None
|
confirm_timeout = confirm if confirm > 0 else None
|
||||||
conn.commit(confirmed=confirm_commit, timeout=timeout)
|
confirmed_commit = True if confirm_timeout else False
|
||||||
|
conn.commit(confirmed=confirmed_commit, timeout=confirm_timeout)
|
||||||
else:
|
else:
|
||||||
conn.discard_changes()
|
conn.discard_changes()
|
||||||
|
|
||||||
after = to_text(conn.get_config(source='running'), errors='surrogate_then_replace').strip()
|
if after is None:
|
||||||
|
after = to_text(conn.get_config(source='running'), errors='surrogate_then_replace').strip()
|
||||||
|
|
||||||
sanitized_before = sanitize_xml(before)
|
sanitized_before = sanitize_xml(before)
|
||||||
sanitized_after = sanitize_xml(after)
|
sanitized_after = sanitize_xml(after)
|
||||||
|
|
Loading…
Reference in a new issue