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
This commit is contained in:
Ken Thomas 2012-06-29 22:29:46 +00:00
parent 99586e05d7
commit 39da32b3a5

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