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:
Ganesh Nalawade 2017-11-01 19:38:19 +05:30 committed by GitHub
parent 0405edcac8
commit 26583adb58
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 1 deletions

View file

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

View file

@ -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:

View file

@ -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"