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
|
# 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