* Fix wrong prompt issue for network moodules
Fixes #31161
Fixes #32416
* Store the device prompt in case of error
from remote device
* Check for prompt value in ios action plugin
* Add integration test
* Update Changelog
(cherry picked from commit 26583adb58
)
This commit is contained in:
parent
ee210e4d5b
commit
b8ee3bb24f
4 changed files with 24 additions and 1 deletions
|
@ -112,6 +112,8 @@ Ansible Changes By Release
|
|||
(https://github.com/ansible/ansible/pull/32321)
|
||||
* Fix ios_logging module issue where facility is being deleted along with host:
|
||||
(https://github.com/ansible/ansible/pull/32234)
|
||||
* Fix wrong prompt issue for network modules (https://github.com/ansible/ansible/pull/32426)
|
||||
|
||||
|
||||
<a id="2.4.1"></a>
|
||||
|
||||
|
|
|
@ -73,9 +73,10 @@ class ActionModule(_ActionModule):
|
|||
# make sure we are in the right cli context which should be
|
||||
# enable mode and not config module
|
||||
rc, out, err = connection.exec_command('prompt()')
|
||||
if str(out).strip().endswith(')#'):
|
||||
while str(out).strip().endswith(')#'):
|
||||
display.vvvv('wrong context, sending exit to device', self._play_context.remote_addr)
|
||||
connection.exec_command('exit')
|
||||
rc, out, err = connection.exec_command('prompt()')
|
||||
|
||||
task_vars['ansible_socket'] = socket_path
|
||||
|
||||
|
|
|
@ -248,6 +248,7 @@ class Connection(Rpc, _Connection):
|
|||
match = regex.search(response)
|
||||
if match:
|
||||
errored_response = response
|
||||
self._matched_prompt = match.group()
|
||||
break
|
||||
|
||||
if not is_error_message:
|
||||
|
|
|
@ -40,4 +40,23 @@
|
|||
- "result.changed == false"
|
||||
- "result.updates is not defined"
|
||||
|
||||
- name: Check device is in proper prompt after error
|
||||
ios_config:
|
||||
lines:
|
||||
- mac-address-table notification mac-move
|
||||
authorize: yes
|
||||
ignore_errors: yes
|
||||
|
||||
- name: show interfaces brief to ensure deivce goes to valid prompt
|
||||
ios_command:
|
||||
commands:
|
||||
- show interfaces
|
||||
authorize: yes
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == false"
|
||||
- "result.stdout is defined"
|
||||
|
||||
- debug: msg="END cli/defaults.yaml"
|
||||
|
|
Loading…
Reference in a new issue