Fix wrong prompt issue for network modules (#32426)
* 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
This commit is contained in:
parent
0405edcac8
commit
26583adb58
3 changed files with 22 additions and 1 deletions
|
@ -72,9 +72,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