diff options
Diffstat (limited to 'lib/ansible/executor/playbook_executor.py')
-rw-r--r-- | lib/ansible/executor/playbook_executor.py | 54 |
1 files changed, 29 insertions, 25 deletions
diff --git a/lib/ansible/executor/playbook_executor.py b/lib/ansible/executor/playbook_executor.py index 686da5c321..96833d5c17 100644 --- a/lib/ansible/executor/playbook_executor.py +++ b/lib/ansible/executor/playbook_executor.py @@ -238,34 +238,38 @@ class PlaybookExecutor: def _do_var_prompt(self, varname, private=True, prompt=None, encrypt=None, confirm=False, salt_size=None, salt=None, default=None): - if prompt and default is not None: - msg = "%s [%s]: " % (prompt, default) - elif prompt: - msg = "%s: " % prompt - else: - msg = 'input for %s: ' % varname - - def do_prompt(prompt, private): - if sys.stdout.encoding: - msg = prompt.encode(sys.stdout.encoding) + if sys.__stdin__.isatty(): + if prompt and default is not None: + msg = "%s [%s]: " % (prompt, default) + elif prompt: + msg = "%s: " % prompt + else: + msg = 'input for %s: ' % varname + + def do_prompt(prompt, private): + if sys.stdout.encoding: + msg = prompt.encode(sys.stdout.encoding) + else: + # when piping the output, or at other times when stdout + # may not be the standard file descriptor, the stdout + # encoding may not be set, so default to something sane + msg = prompt.encode(locale.getpreferredencoding()) + if private: + return getpass.getpass(msg) + return raw_input(msg) + + if confirm: + while True: + result = do_prompt(msg, private) + second = do_prompt("confirm " + msg, private) + if result == second: + break + self._display.display("***** VALUES ENTERED DO NOT MATCH ****") else: - # when piping the output, or at other times when stdout - # may not be the standard file descriptor, the stdout - # encoding may not be set, so default to something sane - msg = prompt.encode(locale.getpreferredencoding()) - if private: - return getpass.getpass(msg) - return raw_input(msg) - - if confirm: - while True: result = do_prompt(msg, private) - second = do_prompt("confirm " + msg, private) - if result == second: - break - self._display.display("***** VALUES ENTERED DO NOT MATCH ****") else: - result = do_prompt(msg, private) + result = None + self._display.warning("Not prompting as we are not in interactive mode") # if result is false and default is not None if not result and default is not None: |