def main(): """Launches bq.""" version = bootstrapping.ReadFileContents('platform/bq', 'VERSION') bootstrapping.CommandStart('bq', version=version) blocked_commands = { 'init': 'To authenticate, run gcloud auth.', } argv = bootstrapping.GetDecodedArgv() bootstrapping.WarnAndExitOnBlockedCommand(argv, blocked_commands) cmd_args = [arg for arg in argv[1:] if not arg.startswith('-')] args = [] if cmd_args and cmd_args[0] not in ('version', 'help'): # Check for credentials only if they are needed. store.Load() # Checks if there are active credentials project, account = bootstrapping.GetActiveProjectAndAccount() adc_path = config.Paths().LegacyCredentialsAdcPath(account) single_store_path = config.Paths().LegacyCredentialsBqPath(account) gce_metadata = gce.Metadata() if gce_metadata and account in gce_metadata.Accounts(): args = ['--use_gce_service_account'] elif os.path.isfile(adc_path): args = ['--application_default_credential_file', adc_path, '--credential_file', single_store_path] else: p12_key_path = config.Paths().LegacyCredentialsP12KeyPath(account) if os.path.isfile(p12_key_path): args = ['--service_account', account, '--service_account_credential_file', single_store_path, '--service_account_private_key_file', p12_key_path] else: # Don't have any credentials we can pass. raise store.NoCredentialsForAccountException(account) use_client_cert = ( os.getenv('GOOGLE_API_USE_CLIENT_CERTIFICATE', 'false').upper() == 'TRUE') if use_client_cert: args.append('--mtls') _MaybeAddOption(args, 'project_id', project) bootstrapping.CheckUpdates('bq') proxy_params = properties.VALUES.proxy _MaybeAddOption(args, 'proxy_address', proxy_params.address.Get()) _MaybeAddOption(args, 'proxy_port', proxy_params.port.Get()) _MaybeAddOption(args, 'proxy_username', proxy_params.username.Get()) _MaybeAddOption(args, 'proxy_password', proxy_params.password.Get()) _MaybeAddOption(args, 'disable_ssl_validation', properties.VALUES.auth.disable_ssl_validation.GetBool()) _MaybeAddOption(args, 'ca_certificates_file', properties.VALUES.core.custom_ca_certs_file .Get()) bootstrapping.ExecutePythonTool( 'platform/bq', 'bq.py', *args)
# Set SSL-related settings. disable_ssl = properties.VALUES.auth.disable_ssl_validation.GetBool() _MaybeAddBotoOption(args, 'Boto', 'https_validate_certificates', None if disable_ssl is None else not disable_ssl) _MaybeAddBotoOption(args, 'Boto', 'ca_certificates_file', properties.VALUES.core.custom_ca_certs_file.Get()) # Note that the original args to gsutil will be appended after the args we've # supplied here. bootstrapping.ExecutePythonTool('platform/gsutil', 'gsutil', *args) if __name__ == '__main__': bootstrapping.DisallowPython3() try: version = bootstrapping.ReadFileContents('platform/gsutil', 'VERSION') bootstrapping.CommandStart('gsutil', version=version) blacklist = { 'update': 'To update, run: gcloud components update', } argv = bootstrapping.GetDecodedArgv() bootstrapping.CheckForBlacklistedCommand(argv, blacklist, warn=True, die=True) # Don't call bootstrapping.PreRunChecks because anonymous access is # supported for some endpoints. gsutil will output the appropriate # error message upon receiving an authentication error. bootstrapping.CheckUpdates('gsutil') main() except Exception as e: # pylint: disable=broad-except