diff --git a/lib/ansible/module_utils/iosxr.py b/lib/ansible/module_utils/iosxr.py index 630ec825534..08e58827fd6 100644 --- a/lib/ansible/module_utils/iosxr.py +++ b/lib/ansible/module_utils/iosxr.py @@ -137,6 +137,9 @@ def load_config(module, commands, warnings, commit=False, replace=False, comment else: cmd = 'abort' diff = None - exec_command(module, cmd) + rc, out, err = exec_command(module, cmd) + if rc != 0: + exec_command(module, 'abort') + module.fail_json(msg=err, commands=commands, rc=rc) return to_text(diff, errors='surrogate_or_strict') diff --git a/lib/ansible/plugins/terminal/iosxr.py b/lib/ansible/plugins/terminal/iosxr.py index 802c56e6c25..641d1e8c2ea 100644 --- a/lib/ansible/plugins/terminal/iosxr.py +++ b/lib/ansible/plugins/terminal/iosxr.py @@ -42,6 +42,7 @@ class TerminalModule(TerminalBase): re.compile(br"connection timed out", re.I), re.compile(br"[^\r\n]+ not found", re.I), re.compile(br"'[^']' +returned error code: ?\d+"), + re.compile(br"Failed to commit", re.I) ] def on_open_shell(self):