Reland "Enable luci-auth by default"
This reland includes fix for crbug.com/1410703. It fallbacks to normal gsutil call when luci-auth is not logged in.
This is a reland of commit a7b20b34f85432b5958963b75edcedfef9cf01fd
Original change's description:
> Enable luci-auth by default
>
> This change enables luci-auth by default for gsutil.py, replacing OOB authentication flow.
>
> Bug: 1359383
> Change-Id: I1a93edc0d04e03c13921359205f252b9e1ed7594
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4193195
> Commit-Queue: Aravind Vasudevan <aravindvasudev@google.com>
> Reviewed-by: Josip Sokcevic <sokcevic@chromium.org>
Bug: 1359383
Change-Id: I9acfa8a578de8e106346b83aae509f9ffe1146e0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4199427
Commit-Queue: Aravind Vasudevan <aravindvasudev@google.com>
Reviewed-by: Josip Sokcevic <sokcevic@chromium.org>
diff --git a/gsutil.py b/gsutil.py
index 5d93783..2733558 100755
--- a/gsutil.py
+++ b/gsutil.py
@@ -164,7 +164,19 @@
def luci_context(cmd):
"""Helper to call`luci-auth context`."""
- return _luci_auth_cmd('context', wrapped_cmds=cmd)
+ p = _luci_auth_cmd('context', wrapped_cmds=cmd)
+
+ # If luci-auth is not logged in, fallback to normal execution.
+ if b'Not logged in.' in p.stderr:
+ return _run_subprocess(cmd, interactive=True)
+
+ if p.stdout:
+ print(p.stdout.decode('utf-8'))
+
+ if p.stderr:
+ print(p.stderr.decode('utf-8'), file=sys.stderr)
+
+ return p
def luci_login():
@@ -182,30 +194,7 @@
if wrapped_cmds:
cmd += ['--'] + wrapped_cmds
- if interactive:
- return _run_subprocess(cmd, interactive=True, env=_enable_luci_auth_ui())
-
- p = _run_subprocess(cmd, env=_enable_luci_auth_ui())
-
- # If luci-auth is not logged in.
- if b'Not logged in.' in p.stderr:
- print('Not logged in.\n')
- print('Login by running:')
- print('\t$ gsutil.py config')
- else:
- if p.stdout:
- print(p.stdout.decode('utf-8'))
-
- if p.stderr:
- print(p.stderr.decode('utf-8'), file=sys.stderr)
-
- return p
-
-
-def _enable_luci_auth_ui():
- """Returns environment variables to enable luci-auth"""
- # TODO(aravindvasudev): clean up after luci-auth UI is released.
- return {'LUCI_AUTH_LOGIN_SESSIONS_HOST': 'ci.chromium.org'}
+ return _run_subprocess(cmd, interactive)
def _run_subprocess(cmd, interactive=False, env=None):
@@ -229,7 +218,7 @@
def run_gsutil(target, args, clean=False):
# Redirect gsutil config calls to luci-auth.
- if os.getenv(GSUTIL_ENABLE_LUCI_AUTH) == '1' and 'config' in args:
+ if os.getenv(GSUTIL_ENABLE_LUCI_AUTH) != '0' and 'config' in args:
return luci_login().returncode
gsutil_bin = ensure_gsutil(VERSION, target, clean)
@@ -262,7 +251,7 @@
] + args_opt + args
# Bypass luci-auth when run within a bot or .boto file is set.
- if (os.getenv(GSUTIL_ENABLE_LUCI_AUTH) != '1' or _is_luci_context()
+ if (os.getenv(GSUTIL_ENABLE_LUCI_AUTH) == '0' or _is_luci_context()
or os.getenv('SWARMING_HEADLESS') == '1' or os.getenv('BOTO_CONFIG')
or os.getenv('AWS_CREDENTIAL_FILE') or is_boto_present()):
return _run_subprocess(cmd, interactive=True).returncode