From 751e064761e878a10007541dfec00def9037c5e9 Mon Sep 17 00:00:00 2001 From: John Trowbridge Date: Fri, 15 Aug 2014 17:04:27 -0400 Subject: Adds tty password entry for glanceclient Added functionality from keystoneclient to fallback to the tty for password entry if no password is given via the environment or the --os-password option. Change-Id: I096e81b61d7f499cbda300abdc14430928d18491 Closes-Bug: 1357549 --- glanceclient/shell.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'glanceclient/shell.py') diff --git a/glanceclient/shell.py b/glanceclient/shell.py index 92de22e..01743e2 100644 --- a/glanceclient/shell.py +++ b/glanceclient/shell.py @@ -21,6 +21,7 @@ from __future__ import print_function import argparse import copy +import getpass import json import logging import os @@ -439,10 +440,21 @@ class OpenStackImagesShell(object): "env[OS_USERNAME]")) if not args.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: + args.os_password = getpass.getpass('OS Password: ') + except EOFError: + pass + # No password because we didn't have a tty or the + # user Ctl-D when prompted. + if not args.os_password: + raise exc.CommandError( + _("You must provide a password via " + "either --os-password, " + "env[OS_PASSWORD], " + "or prompted response")) # Validate password flow auth project_info = (args.os_tenant_name or -- cgit v1.2.1