From: Koert van der Veer Date: Thu, 9 Jan 2014 20:18:50 +0000 (+0100) Subject: Fix os.getlogin() problem with no tty X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=e86098cfc28f84505d4460108bbdfe019fe1efd0;p=openstack-build%2Fcinder-build.git Fix os.getlogin() problem with no tty Catch OSError(s) from os.getlogin() and fall back to looking at environment variables to figure out the user's name. The OSError is thrown where there is no tty for the python process when os.getlogin() is called. Related-Bug: #1221491 Change-Id: I2bd735c9669ba9d25da108da44ea602f358b2dcc --- diff --git a/bin/cinder-rootwrap b/bin/cinder-rootwrap index 6661513ff..564797aee 100755 --- a/bin/cinder-rootwrap +++ b/bin/cinder-rootwrap @@ -62,6 +62,15 @@ def _exit_error(execname, message, errorcode, log=True): sys.exit(errorcode) +def _getlogin(): + try: + return os.getlogin() + except OSError: + return (os.getenv('USER') or + os.getenv('USERNAME') or + os.getenv('LOGNAME')) + + if __name__ == '__main__': # Split arguments, require at least a command execname = sys.argv.pop(0) @@ -107,7 +116,7 @@ if __name__ == '__main__': exec_dirs=config.exec_dirs) if config.use_syslog: logging.info("(%s > %s) Executing %s (filter match = %s)" % ( - os.getlogin(), pwd.getpwuid(os.getuid())[0], + _getlogin(), pwd.getpwuid(os.getuid())[0], command, filtermatch.name)) obj = subprocess.Popen(command,