If no password in env or command line, try prompting
Implements keystone portion of blueprint prompt-for-password For security reasons, having the password on the command line or in the environment is an issue for us. (See the blueprint for details.) This change will simply make one attempt to prompt for a password if (1) nothing was specified already and (2) there's a tty available for the user to respond on. If we don't get a password, then the existing error will be raised. Remoted getpass from pip-requires, it's in the std lib Tweaked a comment Tweaked error message Don't catch Ctl-C Fix import to match conventions Missed a tweak during the rebase. Added suggested password prompt Change-Id: I54bca2397da7bd366f7ac503e767b109efc093e7
This commit is contained in:
@@ -19,6 +19,7 @@ Command-line interface to the OpenStack Identity API.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
import getpass
|
||||||
import httplib2
|
import httplib2
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
@@ -282,10 +283,21 @@ class OpenStackIdentityShell(object):
|
|||||||
'Expecting a username provided via either '
|
'Expecting a username provided via either '
|
||||||
'--os-username or env[OS_USERNAME]')
|
'--os-username or env[OS_USERNAME]')
|
||||||
|
|
||||||
|
if not args.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:
|
||||||
|
args.os_password = getpass.getpass('OS Password: ')
|
||||||
|
except EOFError:
|
||||||
|
pass
|
||||||
|
# No password because we did't have a tty or the
|
||||||
|
# user Ctl-D when prompted?
|
||||||
if not args.os_password:
|
if not args.os_password:
|
||||||
raise exc.CommandError(
|
raise exc.CommandError(
|
||||||
'Expecting a password provided via either '
|
'Expecting a password provided via either '
|
||||||
'--os-password or env[OS_PASSWORD]')
|
'--os-password, env[OS_PASSWORD], or '
|
||||||
|
'prompted response')
|
||||||
|
|
||||||
if not args.os_auth_url:
|
if not args.os_auth_url:
|
||||||
raise exc.CommandError(
|
raise exc.CommandError(
|
||||||
|
Reference in New Issue
Block a user