blob: fdc060c94b9fe686fa1d8ac9d31beedd5adbae0d [file] [log] [blame]
# Copyright 2020 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import contextlib
from recipe_engine import recipe_api
class TokenUtilApi(recipe_api.RecipeApi):
"""Utilities to generate tokens for communicating data."""
@contextlib.contextmanager
def metric_center_token(self, env, _):
"""Generate a token to interact with GCS.
Returns the path to the written token.
"""
service_account = self.m.service_account.default()
metrics_center_access_token = service_account.get_access_token(
scopes=[
'https://www.googleapis.com/auth/cloud-platform',
'https://www.googleapis.com/auth/datastore'
]
)
metrics_center_token_path = self.m.path.mkstemp()
self.m.file.write_text(
"write metric center token",
metrics_center_token_path,
metrics_center_access_token,
include_log=False
)
env['TOKEN_PATH'] = metrics_center_token_path
env['GCP_PROJECT'] = 'flutter-infra-staging'
yield metrics_center_token_path
env.pop('TOKEN_PATH', '')
env.pop('GCP_PROJECT', '')
self.m.file.remove('delete metric center token', metrics_center_token_path)
def cocoon_token(self):
"""Generate a token to interact with Cocoon backend APIs.
Returns the path to the written token.
"""
service_account = self.m.service_account.default()
cocoon_access_token = service_account.get_access_token()
cocoon_access_token_path = self.m.path.mkstemp()
self.m.file.write_text(
"write cocoon token",
cocoon_access_token_path,
cocoon_access_token,
include_log=False
)
return cocoon_access_token_path