diff options
| author | Ken Thomas <krt@yahoo-inc.com> | 2012-06-29 22:29:46 +0000 |
|---|---|---|
| committer | Ken Thomas <krt@yahoo-inc.com> | 2012-06-29 22:29:46 +0000 |
| commit | 39da32b3a5d31a022e958c7b2ca752a1b6fbd3a2 (patch) | |
| tree | 512c3039d74d8283d3d6d4e0860c8975aec2fc1a /openstackclient | |
| parent | 99586e05d7f70e0adb2eddaff7f079ec04b464fd (diff) | |
| download | python-openstackclient-39da32b3a5d31a022e958c7b2ca752a1b6fbd3a2.tar.gz | |
If no password in env or command line, try prompting.
Implements blueprint password-prompt
This logic was recently added to keystone as a short term fix. The long
term fix is to have that same logic here. Basically, if no password is
present in the env or command line and there's a tty available for us
to prompt, then attempt to use getpass.
Change-Id: Ia0eec800b96c8f6ca1c2540e21e0e03c3880c713
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/shell.py | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/openstackclient/shell.py b/openstackclient/shell.py index 14b4f80a..3d0adf99 100644 --- a/openstackclient/shell.py +++ b/openstackclient/shell.py @@ -19,6 +19,7 @@ Command-line interface to the OpenStack APIs """ +import getpass import logging import os import sys @@ -149,9 +150,20 @@ class OpenStackShell(App): " either --os-username or env[OS_USERNAME]") if not self.options.os_password: - raise exc.CommandError( - "You must provide a password via" - " either --os-password or env[OS_PASSWORD]") + # No password, if we've got a tty, try prompting for it + if hasattr(sys.stdin, 'isatty') and sys.stdin.isatty(): + # Check for Ctl-D + try: + self.options.os_password = getpass.getpass() + except EOFError: + pass + # No password because we did't have a tty or the + # user Ctl-D when prompted? + if not self.options.os_password: + raise exc.CommandError( + "You must provide a password via" + " either --os-password, or env[OS_PASSWORD], " + " or prompted response") if not (self.options.os_tenant_id or self.options.os_tenant_name): raise exc.CommandError( |
