fixes bug where handle_prompts failed if list of prompts provided (#21711)

This will now automatically convert the prompts to a list and iterate
over the regexp looking for a prompt match before supplying the answer.
This commit is contained in:
Peter Sprygada 2017-02-21 08:27:33 -05:00 committed by GitHub
parent 96bdb01888
commit 2567e8157f

View file

@ -152,7 +152,6 @@ class Connection(_Connection):
return
return self.receive(obj)
except (socket.timeout, AttributeError) as exc:
#display.debug(traceback.format_exc())
display.vvv(traceback.format_exc())
raise AnsibleConnectionFailure("timeout trying to send command: %s" % command.strip())
@ -164,12 +163,15 @@ class Connection(_Connection):
def _handle_prompt(self, resp, obj):
"""Matches the command prompt and responds"""
prompt = re.compile(obj['prompt'], re.I)
if not isinstance(obj['prompt'], list):
obj['prompt'] = [obj['prompt']]
prompts = [re.compile(r, re.I) for r in obj['prompt']]
answer = obj['answer']
match = prompt.search(resp)
if match:
self._shell.sendall('%s\r' % answer)
return True
for regex in prompts:
match = regex.search(resp)
if match:
self._shell.sendall('%s\r' % answer)
return True
def _sanitize(self, resp, obj=None):
"""Removes elements from the response before returning to the caller"""