* 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)
|
(https://github.com/ansible/ansible/pull/32321)
|
||||||
* Fix ios_logging module issue where facility is being deleted along with host:
|
* Fix ios_logging module issue where facility is being deleted along with host:
|
||||||
(https://github.com/ansible/ansible/pull/32234)
|
(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>
|
<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
|
# make sure we are in the right cli context which should be
|
||||||
# enable mode and not config module
|
# enable mode and not config module
|
||||||
rc, out, err = connection.exec_command('prompt()')
|
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)
|
display.vvvv('wrong context, sending exit to device', self._play_context.remote_addr)
|
||||||
connection.exec_command('exit')
|
connection.exec_command('exit')
|
||||||
|
rc, out, err = connection.exec_command('prompt()')
|
||||||
|
|
||||||
task_vars['ansible_socket'] = socket_path
|
task_vars['ansible_socket'] = socket_path
|
||||||
|
|
||||||
|
|
|
@ -248,6 +248,7 @@ class Connection(Rpc, _Connection):
|
||||||
match = regex.search(response)
|
match = regex.search(response)
|
||||||
if match:
|
if match:
|
||||||
errored_response = response
|
errored_response = response
|
||||||
|
self._matched_prompt = match.group()
|
||||||
break
|
break
|
||||||
|
|
||||||
if not is_error_message:
|
if not is_error_message:
|
||||||
|
|
|
@ -40,4 +40,23 @@
|
||||||
- "result.changed == false"
|
- "result.changed == false"
|
||||||
- "result.updates is not defined"
|
- "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"
|
- debug: msg="END cli/defaults.yaml"
|
||||||
|
|
Loading…
Reference in a new issue