| # 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. |
| |
| from recipe_engine import recipe_api |
| |
| |
| class TokenUtilApi(recipe_api.RecipeApi): |
| """Utilities to generate tokens for communicating data.""" |
| |
| def metric_center_token(self): |
| """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 |
| ) |
| return 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 |
| |